abstract data type

22
Abstract Data Type (C++ and Java)

Upload: lordzyan

Post on 04-Jul-2015

179 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Abstract Data Type

Abstract Data Type(C++ and Java)

Page 2: Abstract Data Type

Container• Sebuah struktur data dapat dipandang

sebagai tempat penyimpanan benda (container).

• Beberapa hal yang dapat dilakukan:– Membuat container baru(konstruktor)– Menaruh benda– Mengambil benda– Mencari benda tertentu– Mengosongkannya (atau periksa

apakah kosong)– Mendapatkan jumlah benda dalam

container (size)• Di C++ container diimplementasikan oleh

Standart Template Library• Di Java, container diimplementasikan oleh

class Collection dan Map

Container

Data

Page 3: Abstract Data Type

ADT in C++

Page 4: Abstract Data Type

Abstract Data Type (ADT) in C++

• Diimplementasikan oleh Standart Template Library(STL)

• ADT Container di C++ terdiri dari 3 macam– Sequence containers => Container yang tersusun

berderet-deret.– Associative containers => merupakan container

yang key-nya diasosiasikan dengan suatu value.– Container adapters => merupakan containers

dengan interface spesifik, memanfaatkan containers lain untuk implementasinya.

Page 5: Abstract Data Type

Sequence containers

• vectorrapid insertions and deletions at back direct access to any element

• dequerapid insertions and deletions at front or back direct access to any element

• listdoubly linked list, rapid insertion and deletion anywhere

Page 6: Abstract Data Type

Associative containers

• setrapid lookup, no duplicates allowed

• multisetrapid lookup, duplicates allowed

• mapone-to-one mapping, no duplicates allowed, rapid key-based lookup

• multimapone-to-many mapping, duplicates allowed, rapid key-based lookup

Page 7: Abstract Data Type

Container adapters

• stacklast-in, first-out (LIFO)

• queuefirst-in, first-out (FIFO)

• priority_queuehighest-priority element is always the first element out

Page 8: Abstract Data Type

Queue

•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)).

enqueue

Most recent

Least recent

dequeuegetFront

Page 9: Abstract Data Type

Set

tambah

Page 10: Abstract Data Type

Map

• 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)?

Abdul Betty Chairul DianNama:

Nilai:

Page 11: Abstract Data Type

Priority Queue

• 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.

Highest priority

insert deleteMin

findMin

Page 12: Abstract Data Type

Iterator

Sebuah object yang mengizinkan programmer melintasi semua element data dari sebuah collection, tanpa memperhatikan bagaimana sebuah collection diimplementasikan

Objek iterator mengendalikan iterasi pembacaan data pada struktur data.

Secara umum Iterator bekerja sebagai berikut: Mulai dengan mengatur iterator pada elemen pertama pada

struktur data. Satu-persatu berlanjut pada elemen selanjutnya Berakhir ketika tidak ada lagi elemen pada struktur data yang

belum dibaca.

Page 13: Abstract Data Type

Iterator

Iterator

Collection

User(program yang

mengakses data)

Page 14: Abstract Data Type

STL

• STL => Standard Template Library– Adalah merupakan kumpulan library yang

melengkapi library standard C++.– Berisi kumpulan class-class yang umum digunakan,

seperti container, algorithm, dan iterator.– Menyediakan algoritma dan struktur data dasar

untuk permasalahan komputasi.

Page 15: Abstract Data Type

STL

STL (meliputi)• Container

– Sequence Container : vector, deque, list– Associative containers : set, multiset, multimap, map– Container adapters :stack, queue, priority queue

• Algorithm : equal, mismatch, lexicographical_compare, remove, remove_if, replace, replace_if, random_shuffle, count, count_if, min_element, max_element, accumulate, for_each , dll

• Iterator

Page 16: Abstract Data Type

ADT in Java

Page 17: Abstract Data Type

• Diimplementasikan oleh library Collection Classes• Ketika ada data dan wadah, data tersebut ditata dalam

wadah dengan beberapa cara berikut :– Disusun berdasarkan urutan atau berderet-deret.

Contoh : Array , Linked List, Vector– Disimpan tanpa memperhatikan urutan

(analogi seperti menyimpan dalam karung)Contoh : Set

– Data disimpan berpasangan key-value nya. Seperti data phonebook, key berupa nama orang, value berupa nomer teleponContoh : Map

Abstract Data Type in Java

Page 18: Abstract Data Type

Abstract Data Type (ADT) in Java

• List– Vector– ArrayList– LinkedList

• Set– HashSet– TreeSet

• Map– TreeMap– HashTable– HashMap

Page 19: Abstract Data Type

Java 2 Collections ©1999 Trygve Reenskaug

19

Collection Classes Java 2

Library untuk implementasi ADT di Java

AbstractCollection

HashSet

TreeSet

ArrayList TreeMap

Hashtable(superclass:

Dictionary)

Page 20: Abstract Data Type

Concrete Collections

concrete implements description collection

ArrayList List resizable-array LinkedList List linked list Vector List resizable-arrayHashSet Set hash table TreeSet SortedSet balanced binary tree HashMap Map hash table TreeMap SortedMap balanced binary tree Hashtable Map hash table

Page 21: Abstract Data Type

Vector

Page 22: Abstract Data Type

Hash table

• A hash table is an array of linked lists. Each list is called a bucket