Modularitas dan Abstraksi Data

15.5. Modularitas dan Abstraksi Data

Modularitas dan abstraksi data  Penyembunyian informasi yang dapat didefinisikan

dilakukan modul untuk melindungi  Modul atau sebuah unit dari

informasi dari "user external" organisasi sistem perangkat lunak

dalam penggunaannya (misalnya yang membundel sekumpulan

software error, security) dan entitas (data dan metoda operasi)

merupakan basis dari abstract dan dengan secara teliti data type (ragam data abstraks). mengontrol apa "user eksternal"  Abstract data type (ADT) atau bisa lihat atau gunakan.

Kumpulan obyek dan metoda operasi yang mempresentasikan

Direktorat Pembinaan SMK | 2008

Pemrograman Berorientasi Objek Bahasa Pemrorgraman

sifat-sifat abstraks bagi "user"  Cara untuk mendefinisikan dengan menyembunyikan interface yang "clean" bagaimana semua itu  Cara untuk menyembunyikan direpresentasikan dalam rincian internal dari data dan representasi data level yang lebih

metoda-metoda operasi

rendah.

 Cara untuk kompilasi secara

 Interface dari modul atau

terpisah misalnya:

Spesifikasi bagaimana modul o Turbo Pascal menyediakan tersebut dilihat atau digunakan

fasilitas pembuatan TPU oleh "user" sementara bagian

dengan definisi interface.

yang private tetap tersembunyi, o Bahasa C memungkinkan perhatikan contoh dibawah ini:

pembuatan object module o Sebuah microwave oven

(*.obj) dan library (*.a) yang sebagai suatu modul. Pemakai

dapat dilink ke modul program dapat menggunakannya utama melalui interface header

dengan tersedianya interface

file (*.h).

panel tombol. Pemakai hanya Dalam bahasa Java perlu tahu untuk apa tombol-

memungkinkan konsep tombol tersebut dan bagaimana

pemrograman modular, enkapsulasi, mengoperasikannya. Pemakai dan abstraksi data dengan tidak perlu tahu mekanisme disediakannya skema-skema class, kerja oven tersebut secara interface, dan packages. Enkapsulasi intenal seperti kerja tabung dimungkinkan dengan pendefinisian magnetron, mikrokontroller private bagi data/metoda yang mekanik penggerak dan lain disemebunyikan dan public bagi sebagainya.).

data/metoda yang berperan sebagai o Window menyediakan sejumlah

interface.

button untuk dapat menutup, Dalam Java terdapat keyword memperbesar, memperkecil, interface dengan pengertian yang

dan sebagainya. lain. Keword ini digunakan sebagai suatu definisi teknis yang

15.5.1. Pemrograman Modular

menyatakan sekumpulan metoda

Bahasa-bahasa pemrograman abstraks yang bisa modern menyediakan cara-cara diimplementasikan dalam untuk dapat membuat sistem pendefinisian kelas-kelas obyek. perangkat lunak secara modular Manfaat definisi interface ini agar demikian, antara lain:

obyek-obyek dari sejumlah kelas  Cara untuk mengelompokkan

yang mengimplementasikan interface bersama data dan metoda operasi

ini dapat saling direfer oleh variabel beragam interface ini. Perhatikan contoh dibawah ini:

2008 | Direktorat Pembinaan SMK

Bahasa Pemrograman Pemrograman Berorientasi Objek

Program 15.2 interface Xclass { public void whataMethod(); } public class Aclass implements Xclass { public void whataMethod() { ... // diimplementasikan disini } } public class Bclass implements Xclass { public void whataMethod() { ... // diimplementasikan disini } } class Mainclass { Xclass a,b; static public void main(String [] a) {

a = new Aclass();

b = new Bclass(); a.whataMethod(); b.whataMethod(); } }

Contoh lain adalah pada pendefinisian modularitas dan ADT masalah pencarian data (searching).

adalah keyword package. Keyword Key data bisa muncul dalam berbagai

ini membundle sekumpulan kelas tipe data: int, float, String, dsb. yang satu dengan yang lainnya saling Fasiltas interface ini dapat memiliki relasi khusus. Pendefinisian memungkinkan pedefinisan algoritma

package ini memungkinkan kompilasi umum compareTo() dalam interface secara terpisah dan diimport sebagai ComparisonKey untuk setiap tipe library. Sebagai contoh kasus untuk data. Selanjutnya kelas-kelas yang pembahasan modularitas dan ADT mengimplementasikan interface adalah suatu kelas Priority Queue. tersebut dapat didefinisikan sesuai denga tipe data yang dikehendaki.

15.5.2. Priority Queue

Dengan fasilitas-fasilitas ini kita Priority queue (PQ) adalah suatu bisa mengembangkan sistem struktur data abstraks yang perangkat lunak besar dengan berperilaku sebagai berikut. PQ komponen-komponennya yang adalah kumpulan item data yang bersifat umum demikian dan masing-masing memiliki tingkat selanjutnya dapat di-plug-and-play prioritas yang bisa berbeda. Apabila implementasi dalam berbagai tipe item data diambil dari kumpulan data. Fasilitas Java lain dalam tersebut maka item data yang

Direktorat Pembinaan SMK | 2008

Pemrograman Berorientasi Objek Bahasa Pemrorgraman

berprioritas paling tinggi lah yang alterntifnya data yang di ambil satu diperoleh.

demi satu di taruh dari kiri ke kanan Dalam pengembangannya elemen-elemen array. pertama kali adalah Terdapat sejumlah metoda memformulasikan konsep operasi yang menjadi 'interface': bagi abstraksnya tanpa harus memikirkan

pemakai kelas obyek ini. tipe datanya, apalagi implementasi  mengkonstruksikan PQ yang rincinya. Implementasinya sendiri

diinisialisasi kosong dapat dilakukan dalam dua PQ = new PriorityQueue(); representasi level bawah yang  mendapatkan ukuran (jumlah item berbeda: array atau linked-list yang

data) dalam PQ,

dapat belakangan kita buat.

n = PQ.size();

Banyak ditemukan dalam  menyisipkan item baru dalam PQ, masalah-masalah penjadwalan, PQ.insert(X); misalnya untuk sistem antrian untuk  bila PQ tidak kosong, menghapus pelayanan pasien dalam ruang

item dengan prioritas tertinggi praktek dokter, penjadwalan dalam PQ

pembayaran tagihan, dsb. Prioritas

X = PQ.remove();

bisa didefinisikan dalam beberapa

aspek. PQ dapat digunakan juga Secara sepintas bisa diketahui untuk pengurutan data kengan key bahwa terdapat suatu proses internal data sebagai harga prioritas: (yang tidak perlu diketahui oleh user) sejumlah data tak terurut dimasukkan di dalam skema ini yaitu pengurutan ke dalam PQ lalu setelah semua item data. Implementasi bagaimana masuk satu demi satu data diambil pun user "tidak perduli". Contoh dari PQ. Pada pengurutan menaik penggunaan dalam metoda maka data yang diambil ditaruh dari pengurutan data berdasarkan Priority kanan ke kiri elemen-elemen array.

Queue:

Pada pengurutan menurun harga key bisa kebalikan dari harga prioritas,

Program 15.3 void priorityQueueSort(ComparisonKey[] A) {

int n = A.length; PriorityQueue PQ = new PriorityQueue(); // create & inisialisasi PQ

for (int i = 0 ; i < n; i++) PQ.insert(A[i]); // mengisi PQ

for (int i = n‐ 1 ; i >= 0 ; i‐‐) A[i] = PQ.remove(); // mengambil satu/satu

Selanjutnya contoh penggunaan mengimplementasikannya maka key PQ dengan tipe key integer ini dapat

data item yang sedang kerjakan ini dilihat dalam program lebih dibungkus dalam tipe data yang

lengkapnya. Pada saat ini definisi generik yaitu: ComparisonKey kelas PriorityQueue belum sebagai suatu interface. diimplementasikan. Sebelum

2008 | Direktorat Pembinaan SMK

Bahasa Pemrograman Pemrograman Berorientasi Objek

interface ComparisonKey { Selanjutnya ComparisonKey ini int compareTo(ComparisonKey value);

diimplementasikan sesuai dengan String toString();

tipe data yang sedang digunakan, } dalam hal ini misalnya kita menggunakan integer (nanti kita lihat bila key bertipe String).

Program 15.4 public class PQItem implements ComparisonKey { private int key;

PQItem(int value) { key = value; } public String toString() { return Integer.toString(key); } public int compareTo(ComparisonKey value) { int a = this.key; int b = ((PQItem) value).key;

return ((a==b)? 0 :( (a > b)? 1 : ‐ 1 ));

Pada level yang lebih rendah Saat item data masuk dalam PQ kelas priority queue ini dapat

maka langsung ditempatkan pada diimplementasikan baik dengan array

posisi yang sesuai dalam urutan atau dengan linked list, dimana hal

menurun (dilakukan pencarian tersebut dijelaskan sebagai berikut:

posisi terlebih dulu lalu dilakukan  Versi Implementasi Unsorted

insert), dan saat di-remove maka Array (berukuran dinamis)

cukup dilakukan delete-first (node PQ menyimpan item data dalam

pertama yang diambil. suatu array yang apabila penuh

Kedua implementasi tersebut panjangnya dapat diperbesar berfungsi sama tapi dengan secara otomatis. Item data masuk

implementasi yang berbeda namun

begitu saja di bagian belakang. sekali lagi user melihatnya sesuai Saat di-remove maka item data dengan abstraksi spesifikasi PQ yang dengan key terbesar dicari ditentukan. Dalam prakteknya maka (dilakukan sequential search). Key

kedua versi itu bisa dipilih tanpa

yang diremove tempatnya mengubah modul-modul pemakainya digantikan oleh key yang paling selama spesifikasinya ditaati. belakang (tidak melakukan

Selain implementasinya yang pergeseran!)

bisa berbeda tanpa mengubah  Versi Implementasi Sorted Linked-

rancangan modul tingkat di atasnya, list

representasi key data pun dapat diimplementasikan secara berbeda

Direktorat Pembinaan SMK | 2008

Pemrograman Berorientasi Objek

Bahasa Pemrorgraman

karena ComparisonKey yang contoh di atas.ComparisonKey ini didefinisikan abstraks tersebut. memiliki konsep Representation Dengan abstraksi ComparisonKey di

Independent Module. Berikut ini

atas maka key bertipe lain dapat representasi String untuk key. menggantikan tipe key integer dalam

Program 15.5 class PQItem implements ComparisonKey { private String key; PQItem(String value) { key = value; } public String toString() { return key; } public int compareTo(ComparisonKey value) { String a = this.key; String b = ((PQItem)value).key; return a.compareTo(b);

// metoda compareTo dalam kelas String

Dalam program aplikasinya sementara sejumlah metoda tetap perubahan terjadi pada bagian data,

sama.