DATA STRUCTURE Abstract Data Type (ADT) NAMA : DANI PRAMASITHA NIM : A11.2013.07433 KELOMPOK : A11. 4304
Definition of Abstract Data Type (ADT) ADT adalah sebuah tipe dengan sekumpulan operasi, tapi yang representasi nya tersembunyi. Contoh umum ADT adalah tipe primitif built-in di Haskell, Integer dan Float. Haskell mendukung definisi ADT melalui sistem modul.
Dalam banyak kasus tidak perlu untuk benar-benar menyembunyikan representasi data, sehingga definisi tipe data yang normal sudah cukup. Selain itu, jenis parametrized dapat dilihat sebagai semacam tipe abstract, karena mereka meninggalkan beberapa bagian tipe data terdifinisi atau abstract.
For Examples : TREE (Pohon) STACK
1. TREE (POHON) Berikut ini adalah contoh dari tipe data parameter. Jenis ini bersifat abstract karena ia meninggalkan beberapa aspek struktur undefined, yang akan diberikan oleh user dengan tipe data. Ini adalah benttuk lemah dari tipe data abstrak.
Pengguna disini mengisi jenis unsur Tree (Integer). Dalam contoh ini, jenis unsur yang terkandung dalam pohon dibiarkan terbuka. Sebagai contoh, pengguna dari tipe data ini mungkin menggunakannya seperti ini: Pengguna disini mengisi jenis unsur Tree (Integer).
Seorang pengguna yang berbeda mungkin menentukan jenis yang berbeda untuk parameter itu. Fleksibilitas ini adalah apa yang memungkinkan jenis ini untuk digunakan dalam berbagai konteks yang berbeda. Tipe data abstrak yang berbeda meninggalkan bagian yang berbeda dari abstrak data. Sebaliknya, tipe data Concrete adalah salah satu yang tidak memberikan fleksibilitas tersebut Contoh di atas menggunakan parametrization untuk mencapai abstraksi, sementara masih memperlihatkan struktur data para penggunanya.
2. STACK Sebuah tipe data yang lebih traditional abstrak benar-benar menyembunyikan stuktur internal atau representasi data. Kita bisa menerapkan tumpukan polimorfik sederhana dengan menggunakan daftar tanpa benar-benar mengatakan apa pun konsumen tentang inner-nya. Modul ini hanya ekspor jenis konstruktor (tapi tidak konstruktor data) dan fungsi:
DISCUSSION The "stack" contoh sepenuhnya abstrak, tetapi "Pohon" contoh adalah tidak. Secara khusus, pelaksanaan operasi Pohon di antarmuka tidak dibuat abstrak. Ini berarti bahwa pelaksanaan tidak dapat diubah tanpa perubahan ke semua kode yang menggunakan jenis. Tipe data abstrak hanya salah satu bentuk abstraksi data. Tipe data abstrak dimodelkan pada algebras abstrak, yang terdiri dari seperangkat nilai-nilai dan kumpulan operasi pada nilai-nilai. Konsep utama yang terkait dengan tipe data abstrak adalah "interface" untuk tipe data abstrak. Ini adalah set dari operasi yang tipe data abstrak memberikan yang dapat digunakan untuk memanipulasi nilai-nilai tipe data. Dalam contoh di atas, antarmuka berisi operasi berikut: Nil (konstruktor), Node (konstruktor), Left (proyeksi), Value (proyeksi) dan Right (proyeksi). Himpunan operasi di antarmuka tidak mengandung operasi apapun untuk memanipulasi bagian dari tipe data yang tersisa abstrak.
Menggunakan Jenis Kelas Ini menyediakan mekanisme untuk membuat pelaksanaan operasi untuk tipe data abstrak juga. Misalnya, antarmuka di atas untuk abstrak Tree, Jenis data yang dapat digambarkan sebagai:
Perhatikan bahwa deskripsi ini bahkan lebih abstrak dari deskripsi TREE tipe data abstrak di atas. Antarmuka ini juga akan membuat pelaksanaan abstrak tree (bukan hanya jenis elemen). Interface ini memungkinkan pengguna untuk mengubah pelaksanaan tipe data tree kemudian dengan mudah. Namun, kelas tipe tidak mencegah akses ke representasi data yang mendasari, maka ketik kelas memberikan bentuk yang lebih lemah dari abstraksi dari contoh Stack yang diberikan di atas.
Source : http://www.haskell.org/haskellwiki/Abstract_data_type