training

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 bersuara

Ref :

  • 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

Back to top button
Index