tipe data abstrak

 

  1. 1. Tipe Data Abstract Abstract Data Type (ADT)
  2. 2. Pengantar • Tipe data dapat kaji dari sisi kelas maupun level abstraksinya. Terdapat dua kelas tipe data kalau kita lihat dari kompleksitasnya, yaitu : • Tipe data atomik Tipe data yang dipandang sebagai satu kesatuan tunggal dan tidak dapat dipecah-pecah lagi (nondecomposible entity). Contoh : Integer, Char, float/real. • Tipe data berstruktur Tipe data yang dipandang sebagai satu kesatuan tunggal dan dapat dipecah-pecah lagi(decomposable entity ). Contoh : Array, Struct/Record, dll.
  3. 3. Sedangkan atas level abstraksinya, tipe data dapat dikelompokkan ke dalam tiga level, yaitu :- • Tipe data abstrak/ADT Tipe data yang merupakan hasil imajinasi kita dengan memberikan beberapa batasan domain maupun operasinya. Contoh : usia, daftarnilai.- • Tipe data virtual Tipe data yang ada/dikenal oleh bahasapemrograman. Contoh : integer, array of integer. • Tipe data fisikal Tipe data yang nyata dalam main processor.
  4. 4. Defenisi • ADT adalah definisi dari TYPE dan sekumpulan operasi dasar (PRIMITIF) dari TYPE tersebut • Definisi TYPE dari sebuah ADT dapat mengandung definisi ADT lainnya. Contoh: ADT WAKTU terdiri atas ADT JAM dan ADT DATE ADT GARIS memiliki dua buah TITIK • TYPE diterjemahkan menjadi data type yang terdefinisi sesuai bahasa pemrograman, misalnya struct dalam C, record dalam Pascal, class dalam C++/Java • PRIMITIF, dalam konteks prosedural, diterjemahkan sebagai fungsi atau prosedur
  5. 5. PRIMITIF dikelompokkan menjadi: • Constructor/Creator, pembentuk nilai awal (inisialisasi). Biasanya diawali dengan make. • Selector/Accessor, untuk mengakses komponen ADT. Biasanya diawali dengan get. • Mutator, prosedur pengubah nilai komponen. Biasanya diawali dengan set. • Validator, penguji apakah nilai type sesuai batasan. • Destructor/Deallocator, untuk menghapus nilai obyek, sekaligus lokasi memori penyimpanannya • Read/Write, untuk antar-muka dengan input/output devices. • Relational Operator, untuk mendefinisikan hubungan relasi lebih besar, lebih kecil, dsb. • Arithmetic, karena biasanya operasi aritmatika hanya terdefinisi untuk bilangan numerik, bukan obyek sesuai ADT yang ada. • Convert, untuk konversi ke tipe data dasar, atau sebaliknya
  6. 6. Modul Program • Modul pada bahasa pemrograman berorientasi objek, diimplementasikan dengan kelas dengan sekumpulan layanan berupa metode publik yang dapat dipanggil oleh pemakai kelas • Pada bahasa prosedural, modul diimplementasikan sebagai struktur, dan sekumpulan operasi berupa prosedur dan fungsi yang dipanggil pemakai modul lewat pemanggilan prosedur dan fungsi.
  7. 7. Abstraksi Data (ADT) Persoalan abstraksi data, yaitu : • Struktur data seharusnya menjadi satu bagian internal yang tersembunyi • Pemakai modul tidak perlu mengetahui struktur data yang digunakan untuk mengimplementasikan suatu modul • Pemakai modul hanya diberikan gambaran perilaku, bukan struktur internal dari modul • Fokus pada prilaku objek, membentuk basis pemrograman berorientasi objek.
  8. 8. • Abstraksi data memungkinkan kitamemperluas bahasa pemrograman dengan tipe data baru • Abstraksi data memungkinkan kita mengabstraksikan rincian rincian cara data diimplementasikan, menjadi bagaimana objek-objek berprilaku • Abstraksi data berisi sekumpulan objek • Abstraksi data pada prinsipnya merupakan dasar pemrograman berorientasi objek(Object Oriented Programming /OOP)
  9. 9. Pengertian • ADT adalah kumpulan nilai dan kumpulan operasi yang diizinkan • ADT memungkinkan pendefinisian suatu himpunan nilai di variable disertai operasi-operasi yang izinkan padanya • ADT menyatakan prilaku suatu variabel.
  10. 10. ADT biasanya diimplementasikan menjadi dua modul: • Definisi/Spesifikasi dari TYPE dan PRIMITIF • Spesifikasi TYPE sesuai bahasa • Spesifikasi PRIMITIF sesuai konteks (fungsi ataukah prosedur) • Body, berupa kode program Supaya ADT dapat diuji tuntas, maka harus dilengkapi dengan program utama yang mengandung pemakaian (call) terhadap setiap PRIMITIF dalam ADT. Disebut sebagai DRIVER.
  11. 11. ADT dalam bahasa Pemrograman Realisasi ADT dalam beberapa bahasa pemrograman BAHASA SPESIFIKASI BODY PASCAL Unit Interface Implementasi C File header *.h File kode program (*.c) C++ File header *.h File kode program (*.cpp) JAVA Class Public Class
  12. 12. ADT dalam Struktur Data • Sering terjadi salah pengertian antara ADT dan Struktur Data. • Struktur data lebih kongkret, merupakan teknik atau strategi untuk mengimplementasikan sebuah ADT (ADT lebih merupakan deskripsi logika) • Struktur data merupakan cara membentuk, mengkonstruksi, mengaransemen, mengkomposisikan ataupun mengorganisasikan data (ADT) • ADT: stack, queue, priority queue, dictionary, sequence, set • Struktur Data: array, linked list, hash table (open, closed, circular hashing), trees (binary search trees, heaps, AVL trees, 2-3 trees, tries, red/black trees, B-trees)
  13. 13. Contoh Kasus Diketahui kumpulan bilangan bulat (1 s/d 1000) sebanyak maksimum 107 bilangan. Selanjutnya, buat program untuk mencari apakah suatu nilai bilangan ada ataukah tidak ada di dalam kumpulan data tersebut. • Contoh input : 5 9 8 7 6 8 7 6 2 3 4 5 1 -9 4 7 9 10 3 • Contoh output 7 ada 9 ada 10 tidak ada 3 ada
  14. 14. Solusi • Alternatif 1 (indeks array terlalu besar, error) 1. Baca semua data dan masukkan ke dalam array 2. Sort 3. Search • Alternatif 2 (optimum) 1. Karena nilai data bulat 1-1000, maka buat indeks array sebanyak 1000 (0- 999) 2. Baca data, dan isi nilai 1 ke array dengan indeks=data-1 Bagaimana kalau bilangan yang diketahui adalah riil (bukan bulat)? Tidak dapat menggunakan Alternatif 2. • Pada kasus ini, duplikasi bilangan tidak berpengaruh, sehingga sangat baik kalau kumpulan bilangan tersebut direpresentasikan sebagai suatu himpunan (set). Oleh karena itu, dapat menggunakan ADT set
  15. 15. Tujuan ADT • ADT memisah struktur penyimpanan (lokasi memori) dari perilaku. • ADT menyembunyikan informasi (information hiding) atau pengkapsulan (encapsulation), yaitu : • Perubahan implementasi ADT tidak mengubah teksprogram lain bila antarmuka (interface) tidakberubah • Pemakaian dan pembuatan ADT dapat dilakukan terpisah, hanya perlu kesepakatan antarmuka pemakaian ADT • ADT merupakan sarana pemrograman modular dan menjadi landasan pembentukan tim pemrograman
  16. 16. • ADT merupakan sarana untuk membuat modul-modul yang menyerupai dengan konsep-konsep yang ditemukan pada domain persoalan • Pada sistem akademik ditemukan konsep student, lecturer, room dll • Maka dapat dibuat ADT student, ADTlecturer, ADT Room dsb, yang serupa namanya dengan konsep konsep yang dijumpai pada domain persoalan.
  17. 17. Pembuatan ADT Tahap pembuatan ADT : •Spesifikasi •Implementasi •Pemrograman
  18. 18. Contoh Spesifikasi untuk tipe data abstrak letterstring : • Elements : Nilai elemennya adalah karakter ‘a’-’z’,’A’-’Z’, dan termasuk juga spasi. Kita sebut nilai-nilai tersebut sebagai kumpulan karakter(letters). • Structure : Terdapat hubungan secara linear diantara elemen letters di dalam suatu string. • Domain : letterstring berisi 0 sampai 80 karakter.Domain dari tipe letterstring adalah seluruh kemungkinan nilai yang memenuhi aturan- aturan tersebut.
  19. 19. Operations:letter leftletter( letterstring s) Kondisi awal :Jumlah karakter input s minimal 1. Kondisi akhir :leftletter berisi karakter awal (paling kiri) didalam string s. append( letter l; letterstring s) Kondisi awal : Jumlah karakter input s kurang dari 80. Kondisi akhir :String s lebih panjang dibandingkan sebelumnya, dan isi l adalah karakter terbaru dan berada paling kanan di dalam s. Boolean empty( letterstring s ) Kondisi awal :Tidak ada. Kondisi akhir :Jika s tidak berisi satupun karakter maka empty bernilai true selain itu empty bernilai false.
  20. 20. • Boolean full( letterstring s ) Kondisi awal :Tidak ada. Kondisi akhir :Jika s berisi 80 karakter maka full bernilai true selain itu full bernilai false. • reverse( letterstring s ) Kondisi awal :Tidak ada. Kondisi akhir :Urutan dari isi s dibalik, sehingga elemen pertama dan terakhir bertukar tempat, elemen kedua daria wal dan kedua dari akhir bertukar tempat, demikian seterusnya. Dengan memilih bahasa C sebagai bahasa yang akandigunakan untuk penulisan program, maka representasi danimplementasinya adalah sebagai berikut :
  21. 21. Representation struct letterstring { int n; letter str[80]; }; Implementation int empty( letterstring s ) { if (s.n<1) return(1); else return(0); }; int full( letterstring s ) { if (s.n>=80) return(1); else return(0); };
  22. 22. void append( letter l; letterstring *s) { if (s.n<80) s.str[++s.n] = l; }; letter leftletter( letterstring s) { if (s.n>0) return(s.str[0] ); }; void reverse ( letterstring *s ) { int i; letterstring temp; for(i=0;i<80;i++) temp.str[i] = temp.str[80-i+1]; for(i=0;i<80;i++) s.str[i] = temp.str[i]; };
(sumber) https://www.slideshare.net/
Artikel Selanjutnya Artikel Sebelumnya
Post Terkait :
Struktur Data