KONSEP OOP
JURUSAN SAINS
INSTITUT TEKNOLOGI SUMATERA
2023
Pernah Menulis ribuan
baris kode?
Dalam proses penulisan program, kita biasanya akan terlibat sebuah “diskusi” tentang kapan struktur
sebuah kode dikatakan bagus. Apakah yang menganut konsep Object Oriented Programming
(OOP), atau yang mengikuti konsep prosedural, atau bahkan konsep fungsional?
Paradigma fungsional – hampir sama dengan prosedural, hanya saja paradigma ini
lebih berorientasi terhadap “input-output” dari pada mengubah data secara langsung
seperti pada paradigma prosedural.
print(hitung_luas(5, 10))
Masukkan alas: 5
Masukkan tinggi: 10
Luas = 25.0
PBO?
Masukkan alas: 20
Masukkan tinggi: 5
Luas = 50.0
Kita ambil contoh saja program yang ada di atas: cara menghitung segitiga.
Maka cara berpikir kita akan seperti ini:
1.Segitiga adalah sebuah objek.
2.Objek segitiga memiliki 2 identitas berupa alas dan tinggi.
3.Objek segitiga memiliki “kemampuan” untuk menghitung luasnya sendiri.
class Segitiga:
def __init__(self, alas, tinggi):
self.alas = alas
self.tinggi = tinggi
def get_luas(self):
return 0.5 * self.alas * self.tinggi
• Enkapsulasi (Pengkapsulan)
• Pewarisan
• Reusability (Penggunaan Kembali)
• Spesialisasi
• Generalisasi
• Polymorfisme (Banyak Bentuk)
• Komunikasi antar objek
Bahasa Pemrograman yang mendukung PBO :
• Java
• Eiffel
• C++
• SmallTalk
• Python
• (Delphi)
Sekilas Bahasa Python
class Node(object):
def __init__(self, data=None, next_node=None, prev_node=None):
self.data = data
self.next_node = next_node
self.prev_node = prev_node
Enkapsulasi
• Ada beberapa jenis mobil yang berbeda, dengan mesin yang berbeda-
beda, tetapi menggunakan interface yang sama. Sehingga pengguna mobil
dapat menggunakannya.
Objek dalam software
Pada software, objek juga mempunyai status, kelakuan, dan interface.
fungsi 2:
Contoh class & Deklasi Objek
# Membuat inisiasi List baru
class LinkedList(object):
def __init__(self, head=None, tail=None):
self.head = head
self.tail = tail
#----------------------------------------------------------------
------------------------------- TAMBAH DATA
# Membuat fungsi tambah didepan
def tambahdepan(self, data):
# inisiasi node baru
new_node = Node(data)
# jika head masih kosong
if(self.head is None):
self.head = new_node Instantiation
self.tail = new_node
else :
new_node.set_next(self.head)
self.head.set_belakang(new_node)
self.head = new_node
----
fungsiKu_1() : ----
return
fungsiKu_3
fungsiKu_2 ----
fungsiKu_2() : ----
---- - ---
fungsiKu_3() ; ----
return
fungsiKu_3() return
fungsiKu_4
----
----
----
return
Contoh Method
class LinkedList(object):
def __init__(): Interface
self.head = head
self.tail = tail
Method
TERIMAKASIH