02 Abstract Data Type - ADT

By. Sri Rezeki Candra Nursari

3 sks

Algoritma Struktur Data

Materi
Pengantar Struktur Data
Abstract Data Type (ADT)
Rekursif : Fibonacci
Sorting (Selection, Insertion, Bubble, Shell, Merge, Quick)

Struktur Data Linier (Linked List, Stack, Queu)

Struktur Data Hirarki (Tree, Graph, Hash Tables)

Search (Sequential, Fibonacci, Interpolation, Binary)

Pengertian ADT
• ADT adalah definisi t ype dan sekumpulan
primit if (operasi dasar) t erhadap t ype

t ersebut .

• Type dit erjemahkan menjadi t ype
t erdefinisi dalam bahasa pemrograman
yang bersangkutan, misalnya menjadi
St ruct dalam bahasa C

• Primit if dalam kont eks pemrograman
prosedural, dit erjemahkan menjadi fungsi
dan prosedur.

Pengertian ADT
• Primit if dikelompokkan menjadi :
1. Konst ruktor/ Kreator, pembent uk nilai t ype. Biasanya namanya diawali
dengan M ake.
2. Selektor, unt uk mengakses komponen t ype. Biasanya namanya
diawali dengan Get .
3. Prosedur Pengubah nilai komponen
4. Validator komponen t ype, yang dipakai unt uk mengetes apakah dapat
membent uk t ype sesuai batasan.

5. Dest ruktor/ Dealokator, yait u unt uk menghancurkan nilai objek,
sekaligus memori penyimpannya
6. Read/ w rit e, unt uk int erface dengan input / out put device

7. Operator Relasional terhadap t ype tersebut unt uk mendefinisikan
lebih besar, lebih kecil, sama dengan dan sebagainya.
8. Arit mat ika terhadap t ype tersebut , dalam pemrograman biasanya
hanya terdefinisi unt uk bilangan numerik.
9. Konversi dari t ype tersebut ke t ype dasar dan sebaliknya

Abstract Data Type (ADT)
• Definisi TYPE dari sebuah ADT dapat
mengandung definisi ADT lainnya
– Cont oh :
• ADT wakt u terdiri atas ADT jam dan ADT tanggal
• ADT garis memiliki 2 buah t it ik

• ADT diimplementasikan menjadi dua
modul:
– Spesifikasi TYPE dan PRIM ITIF

• Spesifikasi Type sesuai bahasa
• Spesifikasi PRIM ITIF sesuai kont eks
(fungsi/ prosedur)

– Body  berupa kode program

ADT biasanya diimplementasi
menjadi dua buah modul, yaitu :
1. Definisi/ spesifikasi type dan primitif

• Spesifikasi t ype sesuai dengan bahasa yang dipakai
• Spesifikasi dari primit if sesuai dengan kaidah dalam kont eks
prosedural, yait u :
a) Fungsi : nama, domain, range, dan pre kondisi jika
ada
b) Prosedur : Keadaan Awal, Keadaan Akhir dan
proses yang dilakukan
2. Body/ realisasi dari primit if, berupa kode program dalam
bahasa yang bersangkut an. Realisasi fungsi dan prosedur
harus sedapat mungkin memanfaat kan Selekt or dan

Konst rukt or

Abstract Data Type (ADT)
• Realisasi ADT dalam beberapa bahasa pemrograman

BAHASA

SPESIFIKASI

BODY

C

File header * .h

File kode program (* .c)

C++

File header * .h


File kode program (* .cpp)

Java

Class

Public Class

Abstract Data Type (ADT)
• Set iap ADT harus dibuat menjadi spesifikasi, body dan
driver
– Dalam bahasa C++, modul spesifikasi dan body dapat dibuat
dengan cara
• Include dari file header
• Encapsulate dalam class

– Driver digunakan unt uk menguji ADT

Abstract Data Type (ADT)

• St rukt ur Data merupakan teknik/ st rategi unt uk
mengimplementasikan sebuat ADT (ADT lebih
merupakan deskripsi logika)

• St rukt ur data merupakan cara membent uk,
mengkonst ruksi, mengaransemen, mengkomposisi
kan/ mengorganisasikan data (ADT)

• ADT:
– St ack, queue, priorit y queue, dict ionary, sequence, set

• St rukt ur Data:
– Array, linked list , hash t able, t ree

Contoh ADT

Program
contoh 01

Algoritma.........?????

Pseudocode.......??????

Pendahuluan Class
• Class merupakan st rukt ur data dari objek
• Sebuah class (kelas) yang menyerupai
st rukt ur dapat dibuat dengan menggant ikan
kata struct dengan class

• Persamaan st rukt ur dengan kelas, pada cara
mendeklarasikan, mendefinisikan dan cara
akses

• Sedangkan perbedaan st rukt ur dengan kelas
adalah kelas mempunyai access specifier
(penent u akses), sedangkan st rukt ur t idak
mempunyai access specifier (penent u akses)

Struktur vs Kelas/ Class
Persamaan :


• Cara deklarasi

• Cara deklarasi

struct cthStruct

class cthClass

{

{
int b;

int b;

........

........

};


• Cara definisi
variabel/ objek
cthStruct x;

• Cara akses
x.a = 22 ;

};

• Cara definisi
variabel/ objek
cthClass x;

• Cara akses
x.a = 22 ;

Struktur vs Kelas/ Class
Perbedaan :


struct cthStruct

class cthClass

{

{
int b;

public;

........

int b;
........

};
};

Kelas/ Class

• Kelas digunakan unt uk mendefinisikan obyek
• Cont oh : t ipe data digunakan unt uk
mendefinisikan variabel
• Obyek melingkupi anggota data dan fungsi
anggota
• Nama kelas biasanya dimulai dengan huruf besar
• Pendefinisian Kelas:

• Pendefinisian obyek:
NamaKelas Nama_Obyek

Penentu Akses

(Access Specifier)

• Digunakan unt uk menent ukan anggota data
atau fungsi anggota mana yang boleh diakses
dan oleh siapa

• Ada 4 macam penent u akses(access
specifier)/ level access modifier:
– Public
– Default
– Private
– Protected

Penentu Akses

(Access Specifier)

• Public
– Bisa diakses dari luar kelas (bersifat global)
– M aka semua class yang lain dapat melihat
class tersebut

– Dapat melakukan import , instansiasi, extends,
dan memanggil met hod yang ada dalam class

• Default
– M aka hanya class dari package yang sama atau
class t urunannya yang dapat melihat class
tersebut

Penentu Akses

(Access Specifier)

• Private
– Hanya bisa diakses dari dalam kelas (bersifat
lokal)

– Hanya dapat digunakan oleh inner class saja,
sedangkan class lain t idak dapat ditandai
sebagai private

• Protected
– Sama dengan Private dan bisa diakses oleh
kelas-kelas t urunan

– Class t idak dapat dideklarasikan sebagai
protected

Penentu Akses Public
• Dengan menggunakan penent u akses
publik, anggota data dan fungsi anggota
bisa diakses dari luar kelas
• Cont oh :
class Buku
{
public:
char judul[30];
.................
}

Penentu Akses Private
• Digunakan unt uk memprot eksi anggotaanggota t ert ent u pada kelas agar t idak bisa
diakses secara langsung dari luar kelas

• Biasanya yang menggunakan penent u akses
privat e adalah anggota data

• Biasa digunakan pada kelas unt uk
memprot eksi anggota-anggota t ert ent u
pada kelas, agar t idak dapat diakses di luar
kelas secara langsung

Penentu Akses Private
• Penent u akses privat e adalah nilai default sehingga
kalau penent u akses t idak dit ent ukan, maka
dianggap menggunakan penent u akses privat e

• Cont oh :
class Buku
{
private:
char judul[30];
.................
}

Fungsi Anggota
• Ada dua macam cara penulisan fungsi anggota.
• Cara 1 : Fungsi didefinisikan didalam kelas

Fungsi Anggota


Cara 2 :
prot ot ipe fungsi
dideklarasikan
dalam kelas,
definisi fungsi
diletakkan diluar
kelas dibawah
fungsi main()

Class vs Object
• Object adalah instansiasi dari



sebuah class
Class it u sebagai sebuah cetakan
sedangkan object it u adalah barang
dari hasil cetakan
Class juga dapat dikatakan sebagai
kategori, sedangkan object adalah
sesuat u yang memuhi syarat -syarat
yang harus dipenuhi agar masuk
dalam kategori tersebut

Class vs Object
• Jadi sat u class dapat mempunyai
banyak object

• Set iap object mempunyai sifat yang
sama persis sepert i yang didefinisikan
dalam class tersebut

• Contoh : M endefinisikan beberapa
obyek
M tKuliah Jur_IT, Jur_TI;
M tKuliah DtM tKuliah[22];

Kelas
Contoh Soal 02:
Perintah menampilkan obyek komik dari
class buku dengan 3 att ribut / field (Judul,
Pengarang dan Jumlah Buku yang tersedia)
M enggunakan penent u akses public

Program
contoh 02

Algoritma.........?????
Pseudocode.......??????

Kelas
Contoh Soal 03:
Perintah menampilkan obyek komik dari class
buku dengan 3 att ribut / field (Judul, Pengarang
dan Jumlah Buku yang t ersedia)
M enggunakan penent u akses private & public

Program
contoh 03

Algoritma.........?????
Pseudocode.......??????

Kelas
Contoh Soal 04:
Perintah menampilkan obyek komik dari
class buku dengan 3 att ribut / field (Judul,
Pengarang dan Jumlah Buku yang tersedia)
M enggunakan fungsi anggota dengan format
kelas::data

Program
contoh 04

Algoritma.........?????
Pseudocode.......??????

Class & Obyek
• Class  adalah suat u cara unt uk
membuat t ipe data yang baru

• M engapa but uh t ipe data baru, agar
aplikasinya source code lebih mudah
dibaca

• Dari t ipe data akan dibuat variabel

Class & Obyek
• Variabel adalah tempat unt uk
data

• Class dengan obyek  duluan
class nya

• Instance adalah kata lain dari
obyek atau instance miliknya
obyek

Class & Obyek
Stat ic adalah variabel miliknya si class
atau stat ic variebel miliknya class 
nilai akan berubah kesemua instance





Didalam class kita dapat :
1.
Const ruct or  selalu instance
2.
M et hod  bisa stat ic atau instance
3.
Variabel/ propert y  bisa stat ic atau
instance
4.

Buat class didalam class biasa disebut
Inner Class

Class & Obyek
• Const ructor  selalu instance
• Const ructor dan met hod ada
overloading  argumen atau
parameter nya berbeda (yang berbeda
bisa jumlah, t ipe data, urutan), tetapi
namanya bisa sama

Class & Obyek
• M acam-macam met hod
– met hod();
– met hod(Int x, Int y);
– met hod(St ring x, St ring y)
– met hod(Integer y, St ring x )

Class & Object
• Didalam class bisa mennggunakan
banyak konst ruktor

• Contoh :
• M ahasiswa m1 = new M ahasiswa();
Const ructor

Obyek
• Terdiri dari 2, yait u :
1. Obyek Lokal
2. Obyek Global

1. Obyek Lokal
• M erupakan suat u obyek yang
didefinisikan di luar fungsi

• Konstruktor dijalankan saat obyek
bersangkutan di ciptakan

• Destruktor dijalankan dengan
sendirinya saat fungsi yang
mendefinisikannya berakhir

Obyek Lokal
Contoh Soal 05:
M enampilkan konst ruktor dan dest ruktor
pada variabel R,S,T

Program
contoh 05

Algoritma.........?????
Pseudocode.......??????

2. Obyek Global


M erupakan suat u obyek yang didefinisikan
secara global



Konstruktor dijalankan saat awal eksekusi
program, yait u sebelum fungsi main() di
proses



Destruktor dijalankan saat fungsi main()
berakhir



Apabila ada exit() dest rukt or obyek global
akan dijalankan t erlebih dahulu, t etapi
dest rukt or obyek lokal t idak akan dieksekusi

Obyek Global
Contoh Soal 06:
M enampilkan konst ruktor dan dest ruktor
pada variabel R,S,T dengan menambahkan
perintah exit()

Program
contoh 06

Algoritma.........?????
Pseudocode.......??????

M enyimpan kelas dan fungsi anggota
pada file tersendiri


Apabila class digunakan unt uk sejumlah
program, maka class harus

– dideklarasikan pada file t ersendiri


Didefinisikan fungsi-fungsi anggotanya

• File header bisa kita buat sendiri
• Caranya dengan memisahkan pendefinisian
kelas kedalam suat u file t ersendiri yait u file
.H

M enyimpan kelas dan fungsi anggota
pada file tersendiri
• Definisi fungsi anggota juga dimasukkan kedalam file .H ini
• File .H ini kemudian disimpan di folder BC31\ Include atau
disimpan pada tempat lain

• Penulisan file header:
- #include “ mat kul.h”  jika file disimpan di folder Include
- #include “d:\ mat kul.h”  jika file disimpan dit empat lain,
misal di drive d:

Class dan Obyek
Contoh Soal 07:
Buat header unt uk deklarasi kelas majalah
Buat file unt uk mendefinisikan fungsi-fungsi
anggota dari class majalah
M enampilkan majalah dengan
menggunakan class yang di deklarasikan
pada file header majalah.h

Program
contoh 07

Program
contoh 07

Program
contoh 07

Algoritma.........?????
Pseudocode.......??????

Obyek Sebagai Parameter


Ada 3 kemungkinan melewat kan obyek
sebagai paramet er:
1. M elewat kan obyek berdasarkan nilai
(passing paramet er by value)
2. M elewat kan obyek sebagai referensi
(passing paramet er by reference)
3. M elewat kan obyek sebagai point er

1. M elewatkan Obyek Berdasarkan Nilai


Definisi fungsi

void lihat _mat kul(M at kul matakuliah)
{
matakuliah.lihat _data();
}



Pemanggilan

M at kul jur_it ;
lihat _mat kul(jur_it );

2. M elewatkan Obyek Sebagai Referensi
• Definisi fungsi
void lihat _mat kul(M at kul & matakuliah)
{
matakuliah.lihat _data();
}

• Pemanggilan
M at kul jur_t i;
lihat _mat kul(jur_t i);

3. M elewatkan Obyek Sebagai Pointer
• Definisi fungsi (cara 1)
void lihat_matkul(M atkul * matakuliah)
{
(* matakuliah).lihat_data();
}

• Definisi fungsi (cara 2)
void lihat_matkul(M atkul * matakuliah)
{
matakuliah->lihat_data();
}

• Pemanggilan
M atkul jur_ts;
lihat_matkul(& jur_ts)

Array Obyek
• Suat u array juga bisa mempunyai elemen berupa obyek
• Sintaks:
NamaKelas NamaObyek[jumlah_data];
Contoh:

M at kul data_matakuliah[10];

• Inisialisasi:
M at kul dat a_mat akuliah[2] =
{
{M at kul(“ PBO”, 3, ‘A’)},

/ / M at kul : nama konst rukt or

{M at kul(“ Prak PBO”, 2, ‘B’)}
};

Nilai Balik Berupa Obyek
• Sebuah fungsi dapat menggunakan obyek
sebagai t ipe nilai balik

• Sintaks:
TipeNilaiBalik NamaFungsi(TipeData
NamaVariabel)
Contoh:

M at kul IsiData(char * nama_mk, int sks_mk,
char nilai_mk);

Pointer ke Fungsi Anggota
• Fungsi anggot a dapat diakses melalui point er
• Sint aks:
TipeNilaiBalik (NamaKelas::* NamaPoint er) (Paramet er, …);

• TipeNilaiBalik dan Paramet er dari point er t ergant ung pada t ipe
nilai balik dan paramet er dari fungsi yang akan diakses

• Contoh:
Class Contoh
{

public:
void FContoh1()
{cout