Anda di halaman 1dari 26

PROGRAM STUDI

TEKNIK INFORMATIKA MATA KULIAH


STRUKTUR DATA

ABSTRACT DATA
TYPE
TIM STRUKTUR DATA
TEKNIK INFORMATIKA S1
UNIVERSITAS DIAN NUSWANTORO
2020
TUJUAN PEMBELAJARAN
• Mahasiswa mampu mengidentifikasi dan menerapkan komponen data dan
perilaku dari satu Abstract Data Type (ADT)
• Mahasiswa mampu membuat algorimt dan mengimplementasikan type
data tunggal

TIM STRUKTUR DATA – TI UDINUS


ABSTRACT DATA TYPE
• ADT digunakan untuk menentukan domain dan set operasi yang dapat
dilakukan pada domain tersebut
(Rance D Necaise)

• ADT adalah sekumpulan objek dan operasi – operasi pada objek tersebut

(John V Guttag)

TIM STRUKTUR DATA – TI UDINUS


ABSTRACT DATA TYPE
• Kata abstract dapat diartikan sebagai penggunaan operasi yang berbeda –
beda pada suatu tipe data tanpa harus mengetahui cara operasi tersebut
bekerja
• ADT dibentuk oleh tipe data primitive yang sudah ada, tetapi operasi logika
didalamnya disembunyikan
‘User program’ berinteraksi
dengan ADT melalui
interface atau set operasi String ADT
Bagaimana cara melakukan
Operasi disembunyikan
User o str()
seperti dalam black box
o upper()
Program o lower()
TIM STRUKTUR DATA – TI UDINUS
ABSTRACT DATA TYPE - PYTHON
• Python adalah object-oriented language
• Semua yang ada di python adalah objek (memiliki tipe data)
• Dapat menciptakan objek baru dengan beberapa tipe data
• Dapat memanipulasi objek
• Dapat menghancurkan objek

TIM STRUKTUR DATA – TI UDINUS


OBJEK
• Objek memiliki: L= a  b  c 
- Tipe
- Representasi internal dari data (bisa • Bagaimana representasi list secara
primitive atau gabungan/komposit) internal?
- Berisi set prosedur dari interaksi dengan • Bagaimana memanipulasi list diatas?
objek lain - L[i], L[i:j],
- len(), min(), max(), del(L[i])
• Objek merupakan instance dari tipe - L.append(), L, pop, L.remove()
(terminology lain: instance of class)
Representasi internal list diatas
• Contoh: bersifat tersembunyi (private)
- Nilai = 90 ; merupakan instance dari int - Kita dapat mengetahui apa yang
- Nilai = 90.5; merupakan instance dari float dilakukan operasi tersebut

TIM STRUKTUR DATA – TI UDINUS


CLASS
• Objek merupakan data abstraksi yang menangkap representasi internal
melalui data atribut dan interface yang berinteraksi melalui method (fungsi
atau prosedur)
• Di python, implementasi data abstraksi menggunakan kelas (class)
• Kelas merupakan dasar dari pemrograman berorientasi objek (Object-
Oriented Programming / OOP) dalam mengimplementasikan tipe data
abstrak (abstract data type/ ADT)

TIM STRUKTUR DATA – TI UDINUS


MEMBUAT KELAS SENDIRI?
• Kita dapat membuat ADT kita sendiri dengan cara membuat kelas
• Perhatikan antara perbedaan dari kelas dan menggunakan instance of class
(object)

Pembuatan kelas melibatkan: Penggunaan kelas melibatkan:


- Pendefinisian nama class - Pembuatan instance baru dari objek
- Pendefinisian atribut - Jalankan operasi pada instance tersebut
- Pendefinisian method
• Contoh: Contoh:
programmer menuliskan kode program L = [1, 2] dan L.append(3)
untuk mengimplementasikan class list

TIM STRUKTUR DATA – TI UDINUS


MEMBUAT ADT KITA SENDIRI
• Gunakan kata kunci class untuk • Sama seperti pembuatan fungsi, definisi
mendefinisikan tipe yang baru class juga menerapkan indentasi, guna
menunjukkan bahwa code bagian dari
• Misal mendefinisikan kelas Koordinat. class
• Code ‘object’ berarti bahwa class
Koordinat mewarisi (inherit) semua
definisi kelas nama/tipe class parent atribut.
• ‘object’ merupakan superclass dari
class Koordinat(object) : Koordinat
#definisikan atribut disini

TIM STRUKTUR DATA – TI UDINUS


ISI ATRIBUT DAN METHOD DARI CLASS
KOORDINAT
• Atribut data:
- Pikirkan data yang terkait langsung dengan class yang dibangun
- Contoh: Atribut x dan y ; Koordinat dibentuk dari dua titik yaitu x dan y

• Method:
- Pikirkan fungsi atau prosedur apa yang terkait dengan class yang dibangun
- Pikirkan juga bagaimana cara agar objek dapat terkait dengan objek lain
- Contoh: method untuk menghitung jarak antar dua titik koordinat

TIM STRUKTUR DATA – TI UDINUS


MENDEFINISIKAN BAGAIMANA MEMBUAT
INSTANCE OF CLASS (OBJECT)
Data x dan y
• Membuat object bisa dilakukan Yang akan kita
inisialisasi
dengan penetapan (assign) ke class koordinat(object) :
suatu variabel
- contoh: node = Koordinat() def __init__(self, x, y) :

• Gunakan special method (disebut self.x = x


juga dengan istilah constructor) Special method self.y = y Parameter
untuk menginisialisasi beberapa (constructor) yang
Mereferensi
atribut data Instance of
- Contoh : __init__ class
Dua atribut data (x dan y)
Untuk setiap objek
TIM STRUKTUR DATA – TI UDINUS
Buat objek baru dari
PEMBUATAN OBJECT tipe koordinat
Berikan 4 dan 5 ke __init__

titik_c = Koordinat(4,5)
titik_asal = Koordinat(0,0)
print(titik_c.x)
print(titik_asal.x) Akses Atribut dari instance titik_c
Gunakan dot untuk mengakses
atribut instance titik_c

• Data atribut dari suatu instance atau objek disebut dengan instance variabel
• Jangan memanggil self, karena Python sudah melakukan secara otomatis
TIM STRUKTUR DATA – TI UDINUS
FULL CODE
class Koordinat(object):
def __init__(self,x,y):
self.x = x
self.y = y

def main():
titik_c = Koordinat (4,5)
titik_asal = Koordinat(0,0)
print(“titik c: x=”, titik_c.x)
print(“titik c: y=”, titik_c.y)
print(“titik asal: x=”, titik_asal.x)
print(“titik asal: y=”, titik_asal.y)

if __name__ == “__main__”:
main()

TIM STRUKTUR DATA – TI UDINUS


METHOD
• Merupakan atribut procedural atau anggap saja sebagai fungsi pada class
• Python selalu meneruskan objek sebagai argument pertama
- Biasanya menggunakan self sebagai nama dari argument pertama method yang ada
- Argumen yang dimaksud adalah parameter formal

• Simbol “.” atau titik digunakan untuk mengakses atribut apapun dari class
- Bisa jadi atribut data dari class
- Atau method dari class

TIM STRUKTUR DATA – TI UDINUS


MENDEFINISIKAN METHOD
Mendefinisikan method untuk kelas Koordinat • Method seperti halnya
class Koordinat(object):
fungsi membawa
def __init__(self,x,y): parameter
self.x = x • Perhatikan untuk
self.y = y mengakses Atribut,
def jarak(self, other): gunakan dot atau titik
x_jar = (self.x – other.x)**2
y_jar = (self.y – other.y)**2
return (x_jar + y_jar)**0.5

TIM STRUKTUR DATA – TI UDINUS


MEMANGGIL METHOD – CARA 1(BIASA)
class Koordinat(object): titik_c = Koordinat(4,5)
def __init__(self,x,y): titik_Nol = Koordinat(0,0)
self.x = x
print(titik_c.jarak(titik_Nol))
self.y = y
method
def jarak(self, other):
x_jar = (self.x – other.x)**2
y_jar = (self.y – other.y)**2
return (x_jar + y_jar)**0.5 Object untuk Nama Parameter tidak
memanggil method dilengkapi self
method (self sudah ada
di titik_c)

TIM STRUKTUR DATA – TI UDINUS


MEMANGGIL METHOD – CARA 2
class Koordinat(object): titik_c = Koordinat(4,5)
def __init__(self,x,y): titik_Nol = Koordinat(0,0)
self.x = x print(Koordinat.jarak(titik_c,titik_Nol))
self.y = y
method
def jarak(self, other):
x_jar = (self.x – other.x)**2
y_jar = (self.y – other.y)**2
return (x_jar + y_jar)**0.5 Nama Nama Parameter
Class method dilengkapi object
untuk memanggil
method,
representasi self

TIM STRUKTUR DATA – TI UDINUS


MENCETAK REPRESENTASI DARI OBJEK
titik_c = Koordinat(4,5)
print(titik_c)

• Output dari kode diatas adalah <__main__.Koordinatobject at …>


• Bagaimana caranya ketika kita mencetak titik_c akan berisi representasi dari
objek tersebut, contoh: <4,6>
• Mencetak representasi un-informative dengan cara menggunakan __str__
method
• Python akan memanggil __str__ method ketika digunakan dengan print pada
object class
TIM STRUKTUR DATA – TI UDINUS
MENDEFINISIKAN “PRINT” KITA SENDIRI
class Koordinat(object): • Jalankan program:
def __init__(self,x,y):
self.x = x titik_c = Koordinat(4,5)
self.y = y print(titik_c)
def jarak(self, other): print(type(titik_c))
x_jar = (self.x – other.x)**2
y_jar = (self.y – other.y)**2
return (x_jar + y_jar)**0.5
def __str__(self):
return “<”+str(self.x)+”,”
+str(self.y)+”>”

TIM STRUKTUR DATA – TI UDINUS


PERHATIKAN BAHWA:
• Kita dapat bertanya untuk tipe dari Hal ini menjadi masuk akal, karena:
objek instance • print(Koordinat) menghasilkan:
<class __main__.Koordinat>
- Koordinat adalah kelas
titik_c = Koordinat(4,5) • print(type(Koordinat))
print(titik_c) menghasilkan: <type “type”>
- Koordinat adalah jenis object
print(type(titik_c))
• Gunakan isinstance() untuk mengecek
suatu objek merupakan instance dari
• Output: class tertentu

<4,5>
<class __main__.Koordinat> print(isinstance(titik_c,Koordinat))

TIM STRUKTUR DATA – TI UDINUS


BUILT IN CLASS ATTRIBUTES
• Setiap class di python secara otomatis memiliki atribut – atribut yang
memang sudah disiapkan tanpa harus mendefinisikan atribut tersebut
dalam class
• Atribut – atribut dibawah ini dapat diakses dengan titik:
- __dict__ : dictionary yang berisi namespace dari class
- __doc__ : docstring class
- __name__ : nama class
- __module__ : nama modul dimana class tersebut diciptakan. Biasanya
mengembalikan main “__main__” pada mode interaktif

• Cara panggil:
- print(Koordinat.__dict__)
TIM STRUKTUR DATA – TI UDINUS
MENGHANCURKAN OBJEK
• Dikenal juga Garbage Collection
• Python dapat menghancurkan object instance secara otomatis dan
membebaskan memory sepenuhnya (free memory)
• Suatu proses dimana python secara periodic mengakui kembali blok
memory yang tidak lagi digunakan , disebut garbage collection
• Gunakan method del:
- K = Koordinat(4,5)
- del(k)

- Dapat menggunakan definisi method __del__(self) di dalam class


TIM STRUKTUR DATA – TI UDINUS
mylibrary.py main.py
class Koordinat(object): import mylibrary
def __init__(self,x,y): def main():
self.x = x titik_c = Koordinat(4,5)
self.y = y titik_asal = Koordinat(0,0)
def jarak(self, other): print(“titik c x= ”,titik_c.x,
“y= ”,titik_c.y)
x_jar = (self.x – other.x)**2
print(titik_c)
y_jar = (self.y – other.y)**2
print(type(titik_c))
return (x_jar + y_jar)**0.5
print(isinstance(titik_c,Koordinat))
def __str__(self): print(titi_c.__dict__)
return “<”+str(self.x)+”,” del(titik_c)
+str(self.y)+”>” print(titik_c.__dict__)
def __del__(self): #error, karena titik c sudah di
class_name = self.__class__.__name__ free
print(class_name, “destroyed”) if __name__ == “__main__”:
main()
LATIHAN
• Buatlah program class segitiga dengan dua objek yaitu menghitung luas
segitiga dan menambahkan dua luas segitiga misal Luas A + Luas B
- Perhatikan cuplikan progam disamping
- Lengkapi program tersebut
class segitiga(object): import mylibrary
def __init__(self,alas,tinggi): def main():
self.alas = alas a = segitiga(10,5)
self.tinggi = tinggi b = segitiga(15,4)
def luas(): print(a.luas)
___________________ print(b.luas)
___________________ print(a.tambah(b))
def tambah():
___________________
___________________
TIM STRUKTUR DATA – TI UDINUS
Referensi
• Guttag, John V. Introduction to Computation and Programming using
Python with Application to Understanding Data 2nd edition. MIT Press. 2016
• Necaise, Rance D. Data Structures and Algorithms using Python. John Wiley
& Sons. 2011

TIM STRUKTUR DATA – TI UDINUS


TERIMA KASIH
ANY QUESTIONS?

Anda mungkin juga menyukai