Anda di halaman 1dari 30

STRUKTUR DATA

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?

ternyata semua hal itu bisa menjadi sangat


rumit
PARADIGMA
Kata “paradigma” sebenarnya tidak merujuk pada suatu bahasa pemrograman
tertentu. Ia lebih merujuk kepada sebuah pendekatan atau konsep dalam
menstrukturisasi suatu kode program [1]. Atau, kita bisa juga menyebut
paradigma sebagai “cara berfikir” untuk menyusun pola penulisan program.
Paradigma prosedural – melakukan pengelompokan satu tugas tertentu yang bisa
digunakan berkali-kali sebagai pendekatan dalam pemecahan suatu masalah.

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.

Paradigma PBO (Pemrograman Berorientasi Objek) – yaitu paradigma yang


menjadikan semua komponen program sebagai objek. Yang mana setiap objek
memiliki identitas dan tugasnya masing-masing.

Apa Perbedaan Paradigma Prosedural dan


Fungsional?
Fungsi adalah fungsi yang mengembalikan nilai. Sedangkan prosedur adalah fungsi yang tidak
mengembalikan nilai.
Pendekatan Prosedural

def hitung_luas ():


alas = float(input('Masukkan alas: ‘))
tinggi = float(input('Masukkan tinggi: ‘))
print('Luas =', 0.5 * alas * tinggi)

# kita bisa panggil berkali-kali


hitung_luas()
# panggil lagi
hitung_luas()
Pendekatan Fungsional
def input_alas_dan_tinggi ():
alas = float(input('Masukkan alas: ‘))
tinggi = float((input('Masukkan tinggi: ')))
return alas, tinggi

def hitung_luas (alas, tinggi):


return 0.5 * alas * tinggi

"""kalau fungsional, kita sendiri yang mengelola hasil kembaliannya""”

# satu fungsi bisa dipanggil secara independen

print(hitung_luas(5, 10))

# contoh dengan inputan alas dan tinggi

alas, tinggi = input_alas_dan_tinggi()


print(hitung_luas(alas, tinggi))
Contoh Output

Masukkan alas: 5
Masukkan tinggi: 10
Luas = 25.0

PBO?
Masukkan alas: 20
Masukkan tinggi: 5
Luas = 50.0

Paradigma prosedural dan fungsional memang sekilas


mirip dan memiliki banyak persamaan (baik dari sintaks
mau pun dari penggunaan fungsi).
PBO
Pada konsep PBO, kita akan membuat semua komponen program seolah-olah
adalah sebuah objek. Sebuah objek selalu memiliki identitas dan
juga perilaku atau kemampuan untuk melakukan tugas tertentu.

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

segitiga1 = Segitiga(5, 10)


segitiga2 = Segitiga(10, 10)

print('luas segitiga1:', segitiga1.get_luas())


print('luas segitiga2:', segitiga2.get_luas())
Karakteristik Pemrograman Berorientasi Objek:

• 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

• Dapat dikatakan sebagai penyembunyian


data/informasi (Information hiding).
• Implementasi ke bahasa Pemrograman (Python)
dengan menggunakan class.
Enkapsulasi
Dalam kehidupan sehari-hari, penyembunyian data
sudah sering kita alami.
Contohnya adalah
objek Handphone; dimana setiap orang yang
menggunakannya tidak mengetahui secara pasti
apa yang ada di dalam Handphone tersebut.

Tidak mengetahui bagaimana cara kerja HP


tersebut. Yang penting adalah menggunakannya
melalui interface yang disediakan.
Contoh Enkapsulasi
Objek dlm dunia nyata
Sesuatu yang mempunyai status, kelakuan, dan interface.

Contoh dalam dunia nyata adalah Mobil.


Objek Mobil mempunyai :
• status : jenis, warna, plat_nomor
• kelakuan : jalan_maju, jalan_mundur
• interface : kemudi, rem, pedal_gas, tuas
Contoh Objek Dunia Nyata
• Semua mobil mempunyai interface yang mirip, walaupun masing-masing
mobil mempunyai mekanisme dan cara kerja yang berbeda. Sepanjang kita
tahu interface standar mobil; yaitu kemudi, pedal gas, rem, tuas
persneling, maka kita dapat mengemudikannya. Kita mungkin tidak tahu
cara kerja dan jenis mesin yang menggerakkan mobil tersebut.

• 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.

• Status adalah variabel.


• Kelakuan adalah method; yaitu fungsi (subroutine) yang berhubungan dengan
objek.
• Interface adalah kumpulan method yang akan digunakan untuk memanipulasi
dan berinteraksi dengan objek.
Pengertian class
• Implementasi dari Information Hiding; yaitu kumpulan dari berbagai
tipe variabel maupun method yang setiap komponen software
“melihatnya”
• Merupakan blue print dari objek yang akan diciptakan.
• Mendiskripsikan interface objek, struktur status objek, dan method
objek secara menyeluruh.
class mempunyai :
• Atribut/Variabel.
Nilai atribut pada saat runtime menyatakan status/variabel objek dari instantiation class
tersebut.
• Method.
Pada saat runtime, method akan dieksekusi sesuai dengan kode programnya atas
permintaan objek lain.
• Interface.
Merupakan kumpulan Method-method yang ada dalam class , yang dapat digunakan
untuk memanipulasi objek.
class dan objek
• Objek merupakan instance dari class.
• Proses penciptaan objek disebut dengan instantiation.
Syntax class
class namakelas(object):
fungsi 1:

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

self.tambahdepan(2) Pemanggilan Objek


Perbedaan class dan objek
• class adalah deskripsi statik dari objek yang
diciptakan. Objek di sini merupakan instantiation
dari class.
• objek adalah elemen yang pada saat runtime
diciptakan, dimanipulasi, dan dihancurkan.
Secara umum dapat dikatakan bahwa pada saat
runtime, yang kita punyai adalah objek. Di dalam
teks program, yang kita punyai adalah class.
Lingkup class
• Private.
Feature yang “visible” hanya untuk class dimana
feature tersebut didefinisikan.
• Protected.
Feature yang disembunyikan terhadap class client,
tetapi “visible” untuk class turunan.
• Public.
Feature yang “visible”, dapat dipakai oleh semua class
yang ada (client, turunan).
Lingkup class (Istilah)

• Feature disini adalah Atribut dan/atau Method.


• Visible artinya dapat dilihat atau dapat dipanggil
dari class client.
• Client artinya class - class yang lainnya, yang
tidak berhubungan dengan class yang
dimaksud.
Pengertian Method
• Dalam bahasa Pemrograman yang lain sering disebut
dengan Procedure atau Function, lengkap
dengan signature-nya. Signature disini adalah nama
dan parameter.
• Method merupakan encapsulation kode program.
• Method terdiri dari urutan statement/kode program
yang dieksekusi ketika Method dipanggil.
Gambaran Method

class _(_): fungsiKu_1

----
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

def tambahdepan(self, data):

Method

def tambahBelakang(self, data):


PROGRAM STUDI
SAINS DATA
JURUSAN SAINS
INSTITUT TEKNOLOGI SUMATERA

TERIMAKASIH

Anda mungkin juga menyukai