Wonderwall

Just another Binusian blog site

Bab 7, Abstract Data Type

December14

Tipe data abstrak (Abstract Data Type – ADT) adalah tipe data yang diatur menggunakan struktur data tertentu sehingga spesifikasi data dan spesifikasi operasinya terpisah dari representasi dan implementasinya. Pengguna hanya perlu memperhatikan spesifikasi data dan operasinya saja namun seorang program designer harus tahu implementasi program yang ia buat.

Abstract data types menurut Weiss merupakan abstraksi matematis yang menunjukkan bahwa antara spesifikasi operasi dan implementasi operasi merupakan dua bagian yang terpisah. Abstrak Data Type adalah sebuah tipe data yang user-defined (ini maksudnya apa ya) yang memenuhi dua kondisi yaitu:

  • Representasi dari objek nya tersembunyi dari program uni yang menggunakan objek tersebut sehingga operasi yang dapat digunakan adalah operasi yang tercantum di dalam definisi dari tipe data tersebut.
  • Deklarasi dari tipe dan protokol objek tipe data tersebut dimasukan ke dalam sebuah unit sintaks.

Keuntungan yang dimiliki dari Abstract Data Type adalah

  • Struktur data dapat di modifikasi.
  • User tidak perlu secara langsung mengakses objek data tersebut.
  • Kompilasi yang terpisah.

Adapun 3 level abstraksi data yaitu :

  • Level fisik (physical level)

Level fisik merupakan level terendah dalam abstraksi data, yang menunjukkan bagaimana sesungguhnya suatu data disimpan.

Contoh : sebuah data di simpan pada memori.

  • Level logic / konsep

Level logic menjelaskan data yang disimpan dalam basis data serta hubungan anatar data.

Contoh : data siswa pada tbl_siswa.

  • Level view

Level view adalah level tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis data / informasi data yang kemunculannya di mata user diatur oleh aplikasi end-user.

Contoh : dalam sebuah sekolah memiliki bagian keuangan, bagian perpustakaan, bagian akademik, dll.

Constructor

Constructor berfungsi sebagai inisialisasi sebuah data dari suatu instance. Dalam class harus dibuat.

Destructor

Destructor berfungsi sebagai penghancur sebuah data dari suatu constructor. Dalam class harus dibuat jika tidak di buat maka memori akan penuh karena data tidak pernah di hancurkan.

Permisalan penggunaan abstract data type dalam daftar terurut yang berisikan daftar nama mahasiswa dalam sebuah kelas. Data mahasiswa terdiri dari NIM dan nama. Tentunya ‘daftar terurut’ (sorted list) dalam imaginasi pengguna, memiliki spesifikasi data sebagai berikut;

  1. Data terdiri dari nilai kunci (yaitu NIM) untuk mengurutkan berupa sebuah string dan string lainnya (yaitu nama mahasiswa),
  2. Ukuran maksimal daftar tersebut, misalnya 100 (seratus) karena dalam sebuah kelas tidak lebih dari 100 (seratus) mahasiswa
  3. Jumlah mahasiswa dalam kelas

Pengguna akan melakukan beberapa hal seperti dalam imajinasi (spesifikasi operasi), misalnya:

  1. Membentuk sebuah daftar baru
  2. Menambahkan sebuah data mahasiswa pada daftar
  3. Mencari nama mahasiswa sesuai sebuah nilai, misalnya NIM
  4. Mengetahui jumlah data pada daftar
  5. Mengetahui jumlah data maksimal pada daftar
  6. Menghapus seluruh data pada daftar
  7. Mencetak seluruh data pada daftar
  8. Memeriksa apakah daftarurut sudah penuh
  9. Memeriksa apakah daftarurut masih kosong

Untuk membentuk tipe data ‘daftar terurut’ diatas, tentu ada semacam “interface” untuk pengguna agar bisa mengoperasikan ‘daftar terurut’ tersebut.

2

Ditekankan bahwa objek seperti list (daftar terurut) memiliki operasi-operasi. Operasi yang disediakan dan termasuk didalamnya adalah error-handling (penanganan kesalahan) tergantung kebutuhan dan rancangan pemrogram.

Untuk visualisasinya, dapat dliihat dari gambar di bawah

3

Untuk menyimpan data didalam memori komputer, harus diatur penyimpanan data dalam memori. Pada C, bisa digunakan ‘struct’. Jumlah data pada daftar terurut dan ukuran daftar terurut berupa bilangan bulat, sehingga digunakan tipe data ‘int’. NIM berupa string dengan panjang misalnya 12 karakter, dimana disimpan berupa deretan tipe data char (array of char).

Contoh bentuk code nya :

  • typedef struct tdata {
  • char nim[12];
  • char nama[30];
  • };
  • typedef struct daftarurut {
  • tdata *data;
  • int max;
  • int jdata;
  • };

Untuk menyimpan 100 (seratus) data, maka max diberi nilai 100 (seratus), dan akan disediakan sebuah array yang terdiri dari elemen sejumlah max. Sedangkan jdata dimulai dari 0 (nol). Jdata akan bertambah otomatis setiap kali terjadi penambahan data. Jika dimasukkan sebuah data berisi NIM dan nama, misalnya“James Dean”, maka jdata akan bertambah 1 (satu). Ilustrasinya

4

Beberapa contoh implementasi menggunakan Array dalam bahasa C

Interface Operasi dan Penjelasan Operasi dan implementasi dalam bahasa C

  • Createlist(ukuran) : Membentuk sebuah daftar dengan ukuran tertentu, misalkan ‘ukuran’
    • _ daftarurut createlist(int ukuran)
    • {
    • int i;
    • daftarurut xyz;
    • xyz.max = ukuran;
    • xyz.data =(tdata *)malloc(sizeof(tdata) * xyz.max);
    • xyz.jdata = 0;
    • for(i=0;i<ukuran;i++)
    • {
    • xyz.data[i].nim[0] = ‘\0’;
    • xyz.data[i].nama[0] =’\0′;
    • }
    • printf(“ukuran list = %d\n”,xyz.max);
    • printf(“jumlah data dalam list = %d\n”,xyz.jdata);
    • return xyz;
    • }
  • Insert(xyz,baru) : Menambah sebuah data ‘baru’ pada daftar ‘xyz’, mengembalikan status 1 jika berhasil dan 0 jika gagal
    • _ int insert(daftarurut *a, tdata baru)
    • {
    • int i,j;
    • if (isempty(a))
    • {
    • (*a).data[0] = baru;
    • (*a).jdata++;
    • return 1;
    • }
    • if(!isfull(a))
    • {
    • j = sizelist(*a);
    • while (j >= 0 && strcmp(baru.nim,(*a).data[j-1].nim)<0)
    • {
    • (*a).data[j] = (*a).data[j-1];
    • j = j – 1;
    • }
    • (*a).data[j] = baru;
    • (*a).jdata++;
    • return 1;
    • }
    • else
    • {
    • printf(“Daftar sudah penuh”);
    • printf(“,jumlah data = %d”,(*a).jdata);
    • printf(“maksimal data = %d\n”,(*a).max);
    • return 0;
    • }
    • }
    • search(xyz,key): Mencari sebuah data dengan nilai ‘key’ pada daftar ‘xyz’, mengembalikan posisirecord jika ditemukan, dan -1 jika tidak ditemukan
    • _ int searchlist(daftarurut a, char key[])
    • {
    • int i;
    • for(i=0;i<a.jdata;i++)
    • {
    • if(strcmp(a.data[i].nim, key)==0)
    • return i;
    • }
    • return -1;
    • }

Contoh program menggunakan ADT Daftar Terurut dalam bahasa C

11

11-2

11-3

Enkapsulasi adalah sebuah konsep dalam penyembunyian sebuah informasi atau sebuah grup dari subprogram yang terhubung secala logis melalui sebuah unit yang dapat di compile secara terpisah. Ex: class

Enkapsulasi pada C

  • File berisi satu atau lebih subprogram dapa melakukan kompilasi sendiri
  • Interface ditempatkan pada header file
  • Memiliki masalah pada hubungan  antara header dan implementasi asosiasi

Email will not be published

Website example

Your Comment: