BAB 8
Abstract Data Type
1.Konsep Abstraksi Data
Konsep abstraksi data adalah proses representasi data dan program dalam bentuk sama dengan pengertiannya, dengan menyembunyikan rincian / detil dari implementsai.Abstraksi data adalah tingkatan pengguna dalam memandang bagaimana sebenarnya data diolah dalam sebuah system database.Abstraksi data bertujuan untuk memudahkan pengguna dalam penggunaan data dan dengan kontrol akses dapat menutup rincian yang tak penting dari unit diluar lampiran yang dipakai.
2.Introduksi Tipe Data Abstraksi
Sebuah tipe data abstrak merupakan tipe data yang dapat didefinisikan oleh user (user-defined) yang memenuhi dua kondisi berikut :
- Representasi objek dari tipe disembunyikan dari unit program yang menggunakan object ,maka mungkin hanya operasi yang tersedia pada definisi tipe
Keuntungan dari abstraksi data :
–Reliability
–Mengurangi jangkauan dari variabel dan kode yang harus diperhatikan oleh programmer
–Konflik akibat penamaan berkurang
- Deklarasi tipe dan protocol operasi pada tipe objects tersedia pada unit sintatik tungal.Unit program lainnya hanya memperbolehkan untuk membentuk variabel yang tipenya terdefinisikan.
Keuntungan dari abstraksi data :
-Memberikan metode dari organisasi program
–Aids modifiability (semua yang terkait stuktur data selalu bersama)
-Kompilasi terpisah
Contoh penggunaan penggunaan abstraksi data pada bahasa pemograman C++:
class Stack {
private:
int *stackPtr, maxLen, topPtr;
public:
Stack() { // a constructor
stackPtr = new int [100];
maxLen = 99;
topPtr = -1;
};
~Stack () {delete [] stackPtr;};
void push (int number) {
if (topSub == maxLen)
cerr << ″Error in push – stack is full\n″;
else stackPtr[++topSub] = number;
};
void pop () {…};
int top () {…};
int empty () {…};
}
3.Parameterized Abstract Data Types
Penggunaan parameterized abstract data types sangat mempermudah pekerjaan.Contohnya,kita dapat mendesain sebuah tumpukan dari tipe data abstrak yang dapat menyimpan elemen tipe scalar dibandingkan daripada menulis tumpukan abstraksi secara terpisah untuk tipe scalar yang berbeda.Contoh parameterized abstract data types pada C++:
- Sebuah tipe data abstrak parameter berarti bahwa tipe data generik
- Ada dan C ++ memungkinkan untuk generik atau parameter tipe data abstrak
- Generik jenis ini dianggap template.
template <class Type>
class Stack {
private:
Type *stackPtr;
const int maxLen;
int topPtr;
public:
Stack() { // Constructor for 100 elements
stackPtr = new Type[100];
maxLen = 99;
topPtr = -1;
}
Stack(int size) { // Constructor for a given number
stackPtr = new Type[size];
maxLen = size – 1;
topSub = -1;
}
…
}
- 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.
4.Konstruksi Encapsulation
Dalam bahasa pemrograman, enkapsulasi digunakan untuk merujuk kepada salah satu dari dua konsep terkait tetapi berbeda, dan kadang-kadang untuk kombinasi daripadanya:
- Mekanisme bahasa untuk membatasi akses langsung ke beberapa komponen objek.
- konstruksi bahasa yang memfasilitasi bundling data dengan metode (atau fungsi lainnya) yang beroperasi pada data tersebut.
Enkapsulasi dapat digunakan untuk menyembunyikan data anggota dan fungsi anggota. Berdasarkan definisi ini, enkapsulasi berarti bahwa representasi internal dari sebuah objek umumnya tersembunyi dari pandangan luar definisi objek.
- Enkapsulasi
Enkapsulasi adalah pengelompokan subprogram dan data yang mereka memanipulasi.Sebuah enkapsulasi menyediakan sebuah sistem abstrak dan organisasi logis untuk koleksi perhitungan terkait.Mereka sering ditempatkan di perpustakaan dan tersedia untuk digunakan kembali dalam program lain daripada yang digunakan mereka ditulis.
6.Nested Subprogram
Mengatur program dengan membuat definisi subprogram yang bersarang (nested) dalam subprogram yang lebih besar untuk digunakan.Nested subprogram didukung pada bahasa pemograman Ada,Fortran 95+,Phyton,Java Script dan Ruby.
7.Naming Encapsulation
Penamaan enkapsulasi mendefinisikan lingkup nama yang membantu dalam menghindari ini nama konflik. Setiap perpustakaan(library) dapat membuat enkapsulasi penamaan sendiri untuk mencegah Nama-nama yang dari bertentangan dengan nama-nama yang didefinisikan dalam perpustakaan lain atau di kode klien. Setiap bagian logis dari sistem perangkat lunak dapat membuat enkapsulasi penamaan dengan tujuan yang sama.
Oleh Kelompok 12
Referensi Bab 8 :
- Robert W. Sebesta – Concept of Programming Languages (Tenth Edition), Chapter 11
- http://arcana70.blogspot.co.id/2014/05/kbp-pert-8.html
- https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)
- https://binusmaya.binus.ac.id/newStudent/#/class/resources.COMP6060/007420/1610/LEC/9239
- http://www.saviost.net/object-oriented-programming-oop-encapsulation-inheritance-polymorphism-abstraction/