Apakah kalian pernah mendengar konsep Pemrograman Berbasis Objek? atau terkenal dengan bahasa inggrisnya Object Oriented Programming (OOP)?

Jika belum, mari kita berkenalan terlebih dahulu tentang apa dan bagaimana konsep OOP ini ada? Serta kenapa kita harus menggunakan konsep ini dalam membuat program?


Apa itu Object Oriented Programming (OOP)


Object Oriented Programming (OOP) adalah suatu paradigma pemrograman yang berorientasi pada konsep class (kelas) dan object (objek). Konsep ini sering kali digunakan dalam menyusun aplikasi menjadi kode yang sederhana dan dapat digunakan kembali (reuseable).

Konsep ini juga diterapkan dengan tujuan mempermudah kita dalam mengembangkan suatu program dengan cara mengikuti suatu model yang telah ada di kehidupan sehari - hari.

Dengan perumpamaan, Class sebagai template dari kategori yang umum seperti 'Mobil' atau 'Karyawan' yang memiliki karakteristik (attribute) dan perilaku (behaviour atau disebut method) masing - masing.

“Penjelasan Singkat OOP”
Penjelasan Singkat OOP

Contohnya seperti ini, anggap kita punya Class mobil. Ia memiliki attribute roda, kecepatan dan tipe. Serta didalam mobil dia juga memiliki method untuk melaju(), klakson() dan berbelok().

Jika Class dalam perumpamaannya adalah blueprint dari suatu kategori yang umum, maka object diumpamakan sebagai hal yang lebih spesifik. Jadi, class mobil tadi bisa membuat banyak objek yang lebih spesifik, misal mobilAvanza atau mobilFerari.

“Penerapan Singkat OOP”
Penerapan Singkat OOP


Apa itu Class?


Class adalah ‘cetakan’, ‘template’ atau ‘blueprint’ untuk membuat sebuah object. Class hanya sebagai kerangka dasar dari object. Sehingga nanti cetakan (class) tersebut dapat membuat berbagai macam objek untuk kebutuhan yang berbeda - beda.

Class diibaratkan sebagai kategori yang umum, seperti yang dijelaskan diatas. Anggaplah kita membuat Class bernama "mobil", didalam class tersebut terdapat karakteristik (attribute) dan perilaku (method) yang hanya dimiliki oleh mobil.

“Bagaimana Struktur Dari Class?"
Bagaimana Struktur Dari Class?

Kita tahu bahwa mobil memiliki roda, tipe atau kecepatan mobil. Hal ini bisa kita sebut dengan attribute. Lalu kita juga tahu bahwa mobil juga memiliki fungsi untuk jalan melaju, klakson dan berbelok.

Dalam ilustrasi diatas, kita bisa menyimpulkan seperti apa bentuk class mobil. Dan selanjutnya, bagaimana bentuk class tersebut, jika ditranslasikan kedalam bentuk code python.

class Mobil:

    def __init__(self, roda, tipe, kecepatan)
        self.tipe = tipe
        self.roda = roda
        self.kecepatan = kecepatan

    def doMelaju(self):
        print("Melaju dengan kecepatan : ", self.kecepatan)
    
    def doKlakson(self):
        print("klakson")

    def doBelok(self, arah):
        print("Belok arah ", arah)

Nah, ini lah bentuk sederhana dari class mobil. Bagi kalian yang masih bingung tentang kode diatas, tenang anbi akan jelaskan satu - persatu mulai dari sini.


Apa itu Attribute?


Attribute atau properties merupakan karakteristik dari sebuah class. Attribute ini berupa suatu variabel didalam sebuah class. Variabel yang didefinisikan sebagai sebuah attribute juga disebut dengan variabel Global.

Cara mendeklarasikan sebuah attribute sama dengan cara mendeklarasikan sebuah variabel. Dalam python, variabel yang digunakan sebagai attribute biasanya didefinisikan dalam fungsi constructur (__init__) dan menggunakan keyword self. Variabel attribute pada class disebut juga dengan instance (turunan) variable.

Kenapa harus pakai constructor? karena instance variabel hanya bisa didefinisikan hanya dari sebuah method.

Untuk lebih jelasnya Apa itu keyword self?

Tadi kita sudah sedikit menyinggung tentang attribute yang dimiliki oleh mobil (tipe, roda dan kecepatan). Dalam kode yang anbi buat diawal.

def __init__(self):
    self.roda = None
    self.tipe = None
    self.kecepatan = 0

Pada kode diatas bisa dibilang kita mendeklarasikan attribute dengan nilai default (None dan 0) menggunakan fungsi constructor (__init__) pada class.

Lalu kita bandingkan dengan kode dibawah ini.

def __init__(self, roda, tipe, kecepatan):
    self.roda = roda
    self.tipe = tipe
    self.kecepatan = kecepatan

Pada kode diatas, nilai pada instance variabel didefiniskan mengikuti parameter yang diberikan pada fungsi constructor (__init__).

Penerapan kedua kode diatas tergantung dengan kondisi pada saat pendeklarasian sebuah object, apakah object ini perlu parameter atau tidak. Jika tidak maka pakai kode yang pertama, jika iya pakai kode yang kedua.


Apa itu Method?


Method adalah fungsi yang didefinisikan dalam suatu class. Biasanya method memiliki hubungan dalam behaviour atau perilaku kelas tersebut. Dalam kasus class mobil, anbi mendefinisikan 3 method yaitu melaju, klakson dan berbelok.

Penulisan method dalam python, hampir sama seperti kita mendefinisikan sebuah fungsi pada umumnya. Cuman, yang membedakan, disetiap mendefinisikan sebuah method parameter keyword self harus selalu ada.

Paramater self selalu terdapat pada awal parameter disetiap method. Nah, cara contoh penulisan method dalam python kurang lebih seperti ini.

def doMelaju(self):
    print("Melaju dengan kecepatan ", self.kecepatan, "  Km/h")
    
def doKlakson(self):
    print("klakson")

def doBelok(self, arah):
    print("Belok arah ", arah)

Kenapa harus ada parameter self? Agar nantinya kamu dapat mengakses attribute atau method dari class tersebut. Karena cara python merujuk suatu attribute dan method pada suatu class hanyalah dengan keyword self.


Apa itu Object?


Object adalah instance atau representasi dari sebuah class. Jika class adalah sebuah cetakan, maka object adalah hasil dari cetakan tersebut. Kita dapat membuat berbagai object dengan class mobil yang tadi kita buat.

“Bagaimana Class Dan Object Bekerja?"
Bagaimana Class Dan Object Bekerja?

Cara mendeklarasikan object dari sebuah class pada python adalah dengan memanggil nama class beserta dengan parameter yang diberikan pada fungsi constructor (__init__).

mobilFerari = new Mobil("Sport", 4, 200)
mobilJeep = new Mobil("Offroad", 6, 150) 

“Struktur Pendeklarasian Object”
Struktur Pendeklarasian Object

Pada kode diatas anbi membuat 2 object pertama adalah object mobilFerari dan mobilOffroad. Kedua object tersebut dibuat dari class yang sama (Mobil) dan memiliki perilaku (behaviour) yang sama tapi dengan karakteristik (attribute) yang berbeda.

Kenapa parameter self tidak diikutkan? Karena self parameter tidak mandatori pada saat pembuatan objek, sehingga kita bisa melewati pemberian argument pada saat pembuatan objek.

Sekarang mari kita coba akses attribute dan method dalam masing - masing object. Cara mengaksesnya hanya dengan memberikan titik . dalam setiap nama object. Lihat kode dibawah.

# akses attribute tipe dari mobilFerari
print(mobilFerari.tipe) 
# output : Sport

# akses attribute tipe dari mobilOffroad
print(mobilJeep.tipe) 
# output : Offroad

Kita bisa menyimpulkan bahwa setiap object memiliki nilai tipe yang berbeda sesuai dengan saat dideklarasikan.

Lalu coba kita mengakses method doMelaju() dan kita coba lihat bagaimana output disetiap object.

    # memanggil method domelaju di mobilFerari
mobilFerari.doMelaju()
# Output : Melaju dengan kecepatan 200 Km/h

# memanggil method domelaju di mobilOffroad
mobilJeep.doMelaju()
# Output : Melaju dengan kecepatan 150 Km/h

Jika kita lihat kode pada method doMelaju() terdapat attribute self.kecepatan. Sehingga setiap object memiliki output yang berbeda dengan perilaku yang sama yaitu “melaju”.

. . .

Kita masih intro aja nih, disini kita cuman berkenalan dengan Object Oriented Programming, bagaimana konsep ini bekerja dan apa manfaat nya bagi kita. Yuk lanjut lagi di post selanjutnya!