OOP in Python
Apa itu OOP?

OOP (Object Oritented Programing) ialah paradigma programing yang berorientasikan objek. Paradigma pemrograman adalah suatu gaya, teknik, atau cara penulisan suatu program. Secara umum Ada 4 jenis paradigma pemrogaman yaitu procedural, functional, OOP. Bahasa pemrograman python memiliki ciri khas multiparadigma sehingga dapat menggunakan beberapa teknik tersebut khususnya OOP.
Goals :
- Pengenalan Class and Object, OOP, Methods
Ref :
- https://www.petanikode.com/java-oop/
- https://www.monitorteknologi.com/paradigma-pemrograman/
Perbedaan OOP dan Procedural dan Fungsional Programing
Prosedural dan fungsional, sebenarnya tidak jauh berbeda. Fungsional ialah fungsi yang mengembalikan nilai, sedangkan prosedural tidak.
- Case study luas segitiga
Prosedural
def hitungLuas() :
alas = float(input('Masukkan alas: '))
tinggi = float(input('Masukkan tinggi:'))
print('Luas=', 0.5 * alas * tinggi)
hitungLuas() Fungsional
def inputParams() :
alas = float(input('Masukkan alas: '))
tinggi = float(input('Masukkan tinggi:'))
return alas, tinggi
def hitungLuas (alas, tinggi) :
return 0.5 * alas * tinggi
alas, tinggi = inputParams()
hitungLuas(alas, tinggi)OOP
Konsep OOP memiliki perbedaan diantara kedua teknik tersebut diatas. OOP membuat semua komponen program menjadi objek. Dimana objek memiliki attribute dan action.
Jika kita ambil contoh program diatas maka cara berpikirnya seperti ini :
- Segitiga adalah sebuah objek
- Objek segitiga memiliki 2 attribute berupa alas dan tinggi
- Ojek segitiga memiliki action untuk menghitung luasnya sendiri

class bangunRuang :
def __init__(self, alas, tinggi) :
self.alas = alas
self.tinggi = tinggi
def get_luas(self) :
return 0.5 * self.alas * self.tinggi
segitiga = bangunRuang(5, 10)
print ('luas segitiga : ', segitiga.get_luas()) Ref:
- https://jagongoding.com/python/menengah/oop/konsep/
Apa itu Object and Class?

Class dianalogikan sebagai cetak biru dimana produk yang diproduksi dari cetak biru tersebut dinamakan Object.
Class memiliki 2 karakteristik:
- Attribute
- Contoh : nama, umur, warna
- Action/method
- Contoh : menyanyi, berbicara
OOP memiliki slogan DRY “Don’t Repeat Yourself” artinya kode yang ditulis dengan gaya OOP bisa dipergunakan kembali atau dimodifikasi tanpa penulisan ulang kode.
Dalam class kita dapat memasukkan attribute atau method.
class ikan :
def __init__(self, params) :
self.nama = nama #attribute
def berenang (self) :
print ("menggoyangkan sirip") #method
hiu = ikan( )
hiu.berenang()
hiu.nama("shark") Konsep OOP
- Pewarisan
- Enkapsulasi
- Polimorfisme
A. Pewarisan/ Turunan (inherintance)
OOP memiliki konsep pewarisan dimana class yang kita buat bisa diwariskan ke class baru.

class hewan :
def __init__(self, nama, umur) :
self.nama = nama
self.umur = umur
def bicara(self, word) :
print(self.nama, "saya mengatakan ", word)
#pewarisan dari hewan
class cat (hewan) :
def __init__(self, nama, umur, warna) :
super().__init__(nama,umur) #super ini harus ngikutin class asalnya
self.warna = warna
anggora = cat("garfield", 5)
anggora.bicara("hello") Class turunan dapat tidak menuliskan method dari class asalnya dan tetap bisa dipakai. Selain itu juga dapat memodifikasi (overiding) ataupun menambah method ataupun attribute.
B. Enkapsulasi

Enkapsulasi adalah membatasi akses ke motode atau attribute pada class dengan tujual mencegah data dari modifikasi langsung agar tetap aman.
Attribut/variabel dalam class memiliki beberapa hak akses yaitu :
- Public (diakses darimana saja)
- Protected (diakses hanya pada classnya sendiri)
- Private (diakses hanya pada classnya sendiri)
Perbedaan protected dan private ialah attributenya masih dapat diakses dari luar sedangkan private tidak. Protected menggunakan 1 undercross ‘_’ sedangkan private 2 undercross ‘__’
class mobil:
def __init__(self, merk, jenis) :
self._merk = merk
self.__jenis = jenis Ref:
- https://jagongoding.com/python/menengah/oop/access-modifiers/
- yoi home blog
C. Polimorfisme
Poly (banyak) dan morfisme (bentuk). Polimorfisme adalah konsep dalam biologi dimana organisme memiliki banyak bentuk. Prinsip ini kemudian diterapkan di OOP.
Polimorfisme dalam OOP merupakan konsep dimana class memiliki banyak ‘bentuk’ = method, parameter yang berbeda-beda meskipun namanya sama.
Polimorfisme dibedakan atas 2 macam
- Statis using Overloading
- Dinamis using Overriding

A. Overloading
- Dalam dunia programing, overloading adalah teknik untuk mengatur berbagai perilaku dari suatu fungsi berdasarkan parameter yang diterimanya
Kita ambil contoh operator ‘+’ , didalam python operator ini memiliki lebih dari satu peran tergantung tipe data yang diterimanya
Contoh :
Jika kita operasikan terhadap nilai int, ia akan melakukan operasi penjumlahan
Jika kita operasikan terhadap nilai string, ia akan melakukan operasi penggabungan
Hal ini terjadi karena ‘+’ tekah di overload di kelas int dan kelas str sehingga memiliki periaku yang berbeda
namun bagaiman jika object+object?
class angka:
def __init__(self, angka) :
self.angka = angka
def __add__(self, objek) :
return self.angka + objek.angka
x1 = angka(10)
x2 = angka(20)
x3 = x1+x2
print(x3) B. Overriding
- Menggunakan kembali method dari class induk dan dapat dimodifikasi pada class turunan
class hewan :
def __init__(self):
pass
def bersuara(self) :
print("hmmm") #fungsi bersuara
class bebek(hewan):
def __init__(self):
super().__init__()
def bersuara(self) :
print("kwek kwek") #overide fungsi bersuaraRef :
- https://jagongoding.com/python/menengah/oop/operator-overloading/
- https://www.dicoding.com/blog/pengertian-polimorfisme-dalam-pemrograman-java/
Kelebihan OOP
- OOP membuat program lebih mudah dipahami serta efisien
- Code dapat digunakan kembali
- Data aman dan terjamin
- Update program lebih mudah
- Proses development lebih cepat
- Cost lebih rendah
- Scirpt program yang rapi
Ref :
- https://qwords.com/blog/pengertian-oop/
Training : Pelatihan Pro DTS – Tensorflow for machine learning
Codelab : https://github.com/42win/PROA_ML_TensorFlow/tree/main/CodeLab
