Think Different Materi ASD 2014 pertemuan_7

Abstract Data Type

PENGANTAR
• Bagaimana cara mengatasi masalah
implementasi program dengan komputer?
– Pemahaman masalah secara menyeluruh dan
persiapan data
– Keputusan operasi-operasi yang dilakukan terhadap
data
– Penyimpanan data-data pada memori sehingga
tersimpan dan terstruktur secara logis, operasinya
efisien
– Pengambilan keputusan terhadap bahasa
pemrograman mana yang paling cocok untuk jenis
data yang ada

Perbedaan Tipe Data, Obyek Data & Struktur
Data (1)
• Tipe data adalah jenis data yang mampu ditangani oleh
suatu bahasa pemrograman pada komputer.
• Tiap-tiap bahasa pemrograman memiliki tipe data yang

memungkinkan:
– Deklarasi terhadap variabel tipe data tersebut
– Menyediakan kumpulan operasi yang mungkin
terhadap variabel bertipe data tersebut
– Jenis obyek data yang mungkin
– Contoh tipe data di C? Java? Pascal? .NET?

Perbedaan Tipe Data, Obyek Data & Struktur
Data (2)
• Obyek Data adalah kumpulan elemen yang mungkin
untuk suatu tipe data tertentu.
– Mis: integer mengacu pada obyek data -32768 s/d
32767, byte 0 s/d 255, string adalah kumpulan
karakter maks 255 huruf
• Struktur Data adalah cara penyimpanan dan
pengorganisasian data-data pada memori komputer
maupun file secara efektif sehingga dapat digunakan
secara efisien, termasuk operasi-operasi di dalamnya.

Aktivitas Struktur Data

• Di dalam struktur data kita berhubungan dengan
2 aktivitas:
– Mendeskripsikan kumpulan obyek data yang sah
sesuai dengan tipe data yang ada
– Menunjukkan mekanisme kerja operasi-operasinya
• Contoh: integer (-32768 s/d 32767) dan jenis operasi yang
diperbolehkan adalah +, -, *, /, mod, ceil, floor, , != dsb.

• Struktur data = obyek data + [operasi
manipulasi data]

Hubungan SD dan Algoritma
• Dengan pemilihan struktur data yang baik, maka
problem yang kompleks dapat diselesaikan sehingga
algoritma dapat digunakan secara efisien, operasioperasi penting dapat dieksekusi dengan sumber daya
yang lebih kecil, memori lebih kecil, dan waktu eksekusi
yang lebih cepat.
• Tidak semua struktur data baik dan sesuai. Contoh
untuk problem pemrosesan image, record informasi
mahasiswa.


ADT dan UDT atau Tipe Data Bentukan
• Bahasa pemrograman bisa memiliki tipe data:
– Built-in : sudah tersedia oleh bahasa pemrograman
tersebut
• Tidak berorientasi pada persoalan yang dihadapi.

– UDT : User Defined Type, dibuat oleh pemrogram.
• Mendekati penyelesaian persoalan yang dihadapi
• Contoh: record pada Pascal, struct pada C.

– ADT : Abstract Data Type

• memperluas konsep UDT dengan menambahkan
pengkapsulan atau enkapsulasi, berisi sifat-sifat dan operasioperasi yang bisa dilakukan terhadap kelas tersebut.
• Contoh: class pada Java

Abstract Data Type (ADT)
• Spesifikasi dari sekumpulan data
termasuk operasi yang dapat dilakukan

pada data tersebut. (Wikipedia)
• Sekumpulan data dan operasi terhadap
data tersebut yang definisi-nya tidak
bergantung pada implementasi tertentu.
(/www.nist.gov/dads/)

Interface
• Spesifikasi Abstract Data Type biasa disebut
sebagai interface.
• Interface menyatakan apa yang dapat dilihat
dan digunakan oleh programmer.
• Dalam Java, hal tersebut dinyatakan sebagai
public method.
• Operasi-operasi yang dapat dilakukan pada
abstract data type dituliskan dalam interface
dan dinyatakan public.

Pemisahan interface dengan
implementasi
• Pengguna dari sebuah abstract data type hanya

perlu memikirkan dan mempelajari interface yang
diberikan tanpa perlu mengetahui banyak
bagaimana implementasi dilakukan. (prinsip:
enkapsulasi)
• Implementasi dapat saja berubah namun interface
tetap.
• Dengan kata lain, implementasi dari sebuah abstract
data type dapat saja berbeda-beda namun selama
masih mengikuti interface yang diberikan maka
program yang menggunakan abstract data type
tersebut tidak akan terpengaruh.

Struktur data = container
• Sebuah struktur data dapat
dipandang sebagai tempat
penyimpanan benda (container).
• Beberapa hal yang dapat dilakukan:

Container







Menaruh benda
Mengambil benda
Mencari benda tertentu
Mengosongkannya (atau periksa
apakah kosong)

Contoh
ContohInterface
Interface struktur
strukturdata
data::

Data

void

void add(Benda
add(Benda x);
x);
void
void remove(Benda
remove(Benda x);
x);
Benda
Benda access(Benda
access(Benda x);
x);
void
void makeEmpty();
makeEmpty();
boolean
boolean isEmpty();  
isEmpty();  

ADT: List


Indeks

1

2

3

4

• Sebuah List adalah kumpulan benda di mana
setiap benda memiliki posisi.
• Setiap benda dalam List dapat diakses melalui
indeks-nya.
• Contoh paling gampang: array!
Contoh
ContohInterface
Interface list
list::


void
void insert(int
insert(int indeks,
indeks, Benda
Benda x);
x);
void
void append(Benda
append(Benda x);
x);
void
void remove(int
remove(int indeks);
indeks);
void
void remove(Benda
remove(Benda x);
x);
Benda
Benda get(int

get(int indeks);  
indeks);  

ADT: Stack
pus
h

pop,to
p
Most
recen
t

Least
recen
t

• Sebuah Stack adalah kumpulan
benda di mana hanya benda
yang most recently inserted

dapat diakses.
• Bayangkan setumpuk koran.
• Benda yang paling terakhir
ditambahkan ditaruh di atas
tumpukan (top).
• Operasi pada Stack
membutuhkan waktu konstan
(O(1)).
Contoh
ContohInterface
Interface stack
stack::

void
void push(Benda
push(Benda x);
x);
Benda
Benda pop();
pop();
Benda
Benda top();  
top();  

ADT: Queue
enqueu
e

dequeue
getFront
Most
recent

Least
recent

• Sebuah Queue adalah kumpulan benda di mana hanya
benda yang least recently inserted dapat diakses.
• Bayangkan antrian printer job pada jaringan.
• Benda yang paling awal ditambahkan berada di depan
antrian (front).
• Operasi pada Queue membutuhkan waktu konstan
(O(1)).
Contoh
ContohInterface
Interface queue
queue::

void
void enqueue(Benda
enqueue(Benda x);
x);
Benda
Benda dequeue();
dequeue();
Benda
Benda getFront(); 
getFront(); 

ADT: Set
tambah

• Set adalah struktur data yang tidak mengizinkan
duplikasi data.
• Bandingkan dengan struktur data lain yang
mengizinkan kita menyimpan dua data yang sama.
• Bayangkan peserta kuliah ini: Setiap peserta unik, tidak
ada yang terdaftar dua kali!
Contoh
ContohInterface
Interface set
set::

void
void add(Benda
add(Benda x);
x);
void
void remove(Benda
remove(Benda x);
x);
boolean
boolean isMember(Benda
isMember(Benda x);
x);

ADT: Map
Nama:

Abdul

Betty

Chairul

Dian

Nilai:

• Map adalah struktur data yang berisi sekumpulan pasangan
nama (keys) dan nilai (values) dari nama tersebut.
• Nama (Keys) harus unik, tapi nilai (values) tidak.
• Bayangkan basis-data yang berisi informasi peserta kuliah. Apa
yang menjadi “nama” (keys)?
Contoh
ContohInterface
Interfacesebuah
sebuahMap
Map::
void put(Kunci id, Nilai x); 
void put(Kunci id, Nilai x); 
void remove(Kunci id);  
void remove(Kunci id);  
Nilai get(Kunci id);
Nilai get(Kunci id);  
  

ADT: Priority Queue
insert

deleteM
in
findMin
Highest
priority

• Priority Queue adalah struktur data queue yang tiap elemen
data dapat miliki nilai prioritas. Data dengan nilai prioritas
tertinggilah yang dapat diakses terlebih dulu.
• Bayangkan sebuah antrian pada printer jaringan. Misalkan
ada sebuah permintaan cetak untuk 100 halaman hanya
beberapa detik lebih awal dari permintaan cetak selembar
halaman.
Contoh
ContohInterface
Interfacesebuah
sebuahPriority
PriorityQueue
Queue::
void insert(Benda x); (Menambahkan)
void insert(Benda x); (Menambahkan)
void deleteMin(); (menghapus)
void deleteMin(); (menghapus)
Benda findMin(); (meng­akses)
Benda findMin(); (meng­akses)