Algoritma Struktur Data
3 sks
Materi
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)
Pengertian ADT
•
ADT adalah definisi t ype dan sekumpulan primit if (operasi dasar) t erhadap t ypet ersebut .
•
Type dit erjemahkan menjadi t ypet erdefinisi dalam bahasa pemrograman yang bersangkut an, misalnya menjadi
St ruct dalam bahasa C
•
Primit if dalam kont eks pemrogramanPengertian ADT
• Primit if dikelompokkan menjadi :
1. Konst rukt or/ Kreat or, pembent uk nilai t ype. Biasanya namanya diawali dengan M ake.
2. Selekt or, unt uk mengakses komponen t ype. Biasanya namanya diawali dengan Get .
3. Prosedur Pengubah nilai komponen
4. Validat or komponen t ype, yang dipakai unt uk menget es apakah dapat membent uk t ype sesuai bat asan.
5. Dest rukt or/ Dealokat or, 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. Operat or Relasional t erhadap t ype t ersebut unt uk mendefinisikan lebih besar, lebih kecil, sama dengan dan sebagainya.
8. Arit mat ika t erhadap t ype t ersebut , dalam pemrograman biasanya hanya t erdefinisi unt uk bilangan numerik.
Abstract Data Type (ADT)
• Definisi TYPE dari sebuah ADT dapat mengandung definisi ADT lainnya
– Cont oh :
• ADT wakt u t erdiri at as ADT jam dan ADT t anggal
• ADT garis memiliki 2 buah t it ik
•
ADT diimplement asikan menjadi dua modul:– Spesifikasi TYPE dan PRIM ITIF • Spesifikasi Type sesuai bahasa
• Spesifikasi PRIM ITIF sesuai kont eks (fungsi/ prosedur)
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
Abstract Data Type (ADT)
• Realisasi ADT dalam beberapa bahasa pemrograman
BAHASA SPESIFIKASI BODY
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
• Encapsulat e dalam class
Abstract Data Type (ADT)
• St rukt ur Dat a merupakan t eknik/ st rat egi unt uk mengimplement asikan sebuat ADT (ADT lebih merupakan deskripsi logika)
• St rukt ur dat a merupakan cara membent uk,
mengkonst ruksi, mengaransemen, mengkomposisi kan/ mengorganisasikan dat a (ADT)
• ADT:
– St ack, queue, priorit y queue, dict ionary, sequence, set
• St rukt ur Dat a:
Contoh ADT
Pendahuluan Class
•
Class merupakan st rukt ur dat a dari objek•
Sebuah class (kelas) yang menyerupaist rukt ur dapat dibuat dengan menggant ikan kat a 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 specifierStruktur vs Kelas/ Class
Persamaan :
• Cara deklarasi struct cthStruct {
int b; ... };
• Cara definisi variabel/ objek
cthStruct x;
• Cara akses x.a = 22;
• Cara deklarasi class cthClass {
int b; ... };
• Cara definisi variabel/ objek
cthClass x;
Kelas/ Class
•
Kelas digunakan unt uk mendefinisikan obyek•
Cont oh : t ipe dat a digunakan unt uk mendefinisikan variabel•
Obyek melingkupi anggot a dat a dan fungsi anggot a•
Nama kelas biasanya dimulai dengan huruf besar•
Pendefinisian Kelas:•
Pendefinisian obyek:Penentu Akses
(Access Specifier)•
Digunakan unt uk menent ukan anggot a dat a at au fungsi anggot a mana yang boleh diakses dan oleh siapa•
Ada 4 macam penent u akses(access specifier)/ level access modifier:– Public
– Default
– Privat e
Penentu Akses
(Access Specifier)•
Public
– Bisa diakses dari luar kelas (bersifat global)
– M aka semua class yang lain dapat melihat class t ersebut
– Dapat melakukan import , inst ansiasi, ext ends, dan memanggil met hod yang ada dalam class
•
Default
– M aka hanya class dari package yang sama at au class t urunannya yang dapat melihat class
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 dit andai
sebagai privat e
•
Protected
– Sama dengan Privat e dan bisa diakses oleh kelas-kelas t urunan
Penentu Akses Public
•
Dengan menggunakan penent u akses
publik, anggot a dat a dan fungsi anggot a
bisa diakses dari luar kelas
Penentu Akses Private
•
Digunakan unt uk memprot eksi anggota-anggot a 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 anggot a dat a•
Biasa digunakan pada kelas unt ukmemprot eksi anggot a-anggot a t ert ent u
Penentu Akses Private
•
Penent u akses privat e adalah nilai default sehingga kalau penent u akses t idak dit ent ukan, makadianggap menggunakan penent u akses privat e
Fungsi Anggota
•
Ada dua macam cara penulisan fungsi anggot a.Fungsi Anggota
Cara 2 :
prot ot ipe fungsi dideklarasikan dalam kelas, definisi fungsi
Class vs Object
•
Object adalah inst ansiasi dari
sebuah class
•
Class it u sebagai sebuah cet akan
sedangkan object it u adalah barang
dari hasil cet akan
•
Class juga dapat dikat akan sebagai
kat egori, sedangkan object adalah
sesuat u yang memuhi syarat -syarat
yang harus dipenuhi agar masuk
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
•
Cont oh : M endefinisikan beberapa
obyek
Kelas
Contoh Soal 02:
Perintah menampilkan obyek komik dari
class buku dengan 3 att ribut / field (Judul,
Pengarang dan Jumlah Buku yang tersedia)
Kelas
Contoh Soal 03:
Perint ah menampilkan obyek komik dari class buku dengan 3 at t ribut / field (Judul, Pengarang dan Jumlah Buku yang t ersedia)
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
Class & Obyek
•
Class
adalah suat u cara unt uk
membuat t ipe dat a yang baru
•
M engapa but uh t ipe dat a baru, agar
aplikasinya source code lebih mudah
dibaca
Class & Obyek
•
Variabel adalah t empat unt uk
dat a
•
Class dengan obyek
duluan
class nya
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 inst ance2. M et hod
bisa st at ic at au inst ance 3. Variabel/ propert y
bisa st at ic at auinst ance
4. Buat class didalam class biasa disebut
Class & Obyek
•
Const ruct or
selalu inst ance
•
Const ruct or dan met hod ada
overloading
argumen at au
Class & Obyek
•
M acam-macam met hod
–
met hod();
–
met hod(Int x, Int y);
–
met hod(St ring x, St ring y)
Class & Object
•
Didalam class bisa mennggunakan
banyak konst rukt or
•
Cont oh :
•
M ahasiswa m1 = new M ahasiswa();
Obyek
•
Terdiri dari 2, yait u :
1. Obyek Lokal
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
Obyek Lokal
Contoh Soal 05:
2. Obyek Global
•
M erupakan suat u obyek yang didefinisikan secara global•
Konstruktor dijalankan saat awal eksekusiprogram, 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 et apiObyek Global
Contoh Soal 06:
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 anggot anya
•
File header bisa kit a buat sendiriM enyimpan kelas dan fungsi anggota
pada file tersendiri
• Definisi fungsi anggot a juga dimasukkan kedalam file .H ini
• File .H ini kemudian disimpan di folder BC31\ Include at au disimpan pada t empat lain
• Penulisan file header:
- #include “ mat kul.h” jika file disimpan di folder Include
Class dan Obyek
Contoh Soal 07:
Buat header unt uk deklarasi kelas majalah Buat file unt uk mendefinisikan fungsi-fungsi anggot a dari class majalah
M enampilkan majalah dengan
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)
1. M elewatkan Obyek Berdasarkan Nilai
• Definisi fungsi
void lihat _mat kul(M at kul mat akuliah) {
mat akuliah.lihat _dat a(); }
• Pemanggilan
M at kul jur_it ;
2. M elewatkan Obyek Sebagai Referensi
• Definisi fungsi
void lihat _mat kul(M at kul & mat akuliah) {
mat akuliah.lihat _dat a(); }
• Pemanggilan
M at 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;
Array Obyek
• Suat u array juga bisa mempunyai elemen berupa obyek
• Sintaks:
NamaKelas NamaObyek[jumlah_dat a];
Contoh:
M at kul dat a_mat akuliah[10];
Nilai Balik Berupa Obyek
•
Sebuah fungsi dapat menggunakan obyek sebagai t ipe nilai balik•
Sintaks:TipeNilaiBalik NamaFungsi(TipeData NamaVariabel)
Contoh:
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 Cont oh
{
public:
void FCont oh1()
{cout << “ t es” ;} int FCont oh2(int x, int y)
Pointer ke Fungsi Anggota
• Point er ke fungsi dengan nilai balik void dan t idak mempunyai paramet er:
- Deklarasi:
void (Cont oh::* pt r_cont oh1) ();
- M engakses fungsi FCont oh1 dengan point er: pt r_cont oh1 = & Cont oh::FCont oh1;
- M enjalankan fungsi yang dit unjuk oleh point er: (x.* pt r_cont oh1)();
Pointer ke Fungsi Anggota
• Point er ke fungsi dengan nilai balik int dan dua paramet er bert ipe int :
- Deklarasi:
int (Cont oh::* pt r_cont oh2) (int , int );
- M engakses fungsi FCont oh2 dengan point er: pt r_cont oh2 = & Cont oh::FCont oh2;
- M enjalankan fungsi yang dit unjuk oleh point er: (x.* pt r_cont oh2)(2,3);