Python: Pemrograman Berbasis Objek (OOP)

Muhammad Efan Abdulfattah
5 min readMar 28, 2021

--

Secara luas istilah Pemrogaman Berbasis Objek (PBO) dikenal sebagai OOP atau Object Oriented Programming. Tujuannya adalah untuk membuat potongan kode yang reusable dan tidak redundant. Sehingga, pada saat Pythoneers telah membuat suatu program untuk operasi tertentu, lalu ingin menjalankan operasi tersebut pada projek yang berbeda, Pythoneers tidak perlu mengulangi pembuatan kode yang sama. Konsep ini dikenal sebagai DRY atau Don’t Repeat Yourself.

Contoh pengaplikasian OOP ini adalah pada library atau package yang sering Pythoneers gunakan, seperti: numpy, pandas, scikit-learn, dsb. Misalkan pada package scikit-learn yang memuat beragam algoritma machine learning (ML). Dengannya, Pythoneers tidak perlu merancang algoritma from scratch atau dari awal, yang perlu dilakukan untuk mengaksesnya hanyalah dengan meng-import package, lalu memanggil class tertentu, kemudian mendefinisikan variable atau object untuk menampung class tersebut.

Sampai sini ada dua term atau istilah yang muncul, yaitu: class dan object. Siapa mereka? Yuk, kenalan!

Class merupakan representasi dari blok kode yang berisi atribut, Function maupun keyword tertentu. Bentuk konstruksinya adalah seperti berikut ini:

class Kendaraan:
perintah

Object digunakan untuk menampung class yang telah dibuat, dengan adanya object, class yang telah dibuat dapat dipergunakan. Sebelumnya telah dibuat sebuah class yang dinamakan Kendaraan dan dengannya dapat dibuat object untuk merepresentasikan class tersebut. Contohnya seperti ini:

mobil = Kendaraan()
motor = Kendaraan()

yang dimaksud dengan object di sini adalah mobil dan motor, keduanya adalah hal yang berbeda karena tiap object berdiri sendiri secara independen walaupun kedua object tersebut berisi class yang sama. Hal ini dikarenakan atribut yang dimiliki oleh setiap object dapat berbeda.

Pertanyaannya, atribut itu apa?
Jadi, atribut atau properti merupakan ciri yang dimiliki oleh suatu object, misalkan pada contoh class Kendaraandi atas, atribut yang dimiliki dapat berupa jumlah roda, kapasitas penumpang, dan bahan bakar.

Dalam suatu class dapat berisi dua jenis atribut, yaitu:
Class Attribute, merupakan atribut yang bernilai sama untuk seluruh object-nya. Sehingga, jika atribut tersebut diganti nilainya, maka seluruh object yang memiliki atribut tersebut nilanya akan berubah. Contohnya sebagai berikut:

contoh deklarasi class dengan class attribute

lalu, apabila nilai atribut dari salah satu object diganti maka nilai atribut di object yang lainnya akan ikut berubah. Seperti berikut ini:

penggantian nilai atribut

Sedangkan, Instance Attribute, merupakan atribut yang bernilai unique untuk setiap object-nya. Sehingga, hanya object yang nilai atributnya diganti saja yang berubah nilainya, untuk nilai atribut pada object yang lainnya tidak berubah. Contohnya seperti berikut ini:

contoh deklarasi class dengan instance attribute

jika dicermati lebih lanjut, terdapat perbedaan yang mencolok antara class attribute dengan instance attribute, yaitu: pada cara pendefinisiannya. Pada class attribute dilakukan seperti mendefinisikan variabel biasa. Sedangkan, pada instance attribute perlu dibuat suatu Function constructor dan juga dicirikan dengan adanya keyword: self.

FYI:
di dalam class terdapat dua macam Function, yaitu: Function constructor (__init__) untuk mendefinisikan instance atributte, dan Function behavioral untuk membuat Method

Okay, setelah dipahami mengenai beberapa istilah yang berkaitan dengan OOP. Ada pula beberapa konsep atau istilah yang ada dalam pengaplikasian OOP , yaitu: Encapsulation, Inheritance, dan Polymorphism. Mari kita bahas satu per satu!

Encapsulation

merupakan konsep yang menyatakan tentang penyembunyian atribut maupun Function dari class yang dibuat. Encapsulation dapat dilakukan dengan menerapkan access modifier saat pendeklarasian variabel.
Ada dua jenis access modifier, yaitu:
- Public Access, sebetulnya jenis ini bukanlah encapsulation karena atribut maupun Function yang telah dideklarasikan dapat diakses secara bebas. Sedangkan,
- Private Access, merupakan encapsulation itu sendiri, yaitu: bersifat menyembunyikan atribut maupun Function tertentu sehingga tidak dapat diakses secara bebas. Private access dicirikan dengan adanya tanda __ atau double underscore sebagai prefix dari nama variabel.
Berikut merupakan contoh penerapan dua access modifier:

contoh penerapan access modifier

ketika atribut yang bersifat public access dan private access dipanggil, maka keluarannya akan seperti berikut ini:

output penerapan access modifier

dapat dilihat pada gambar di atas, jika atribut bersifat private access, maka atribut tersebut tidak bisa diakses secara bebas di luar class. Beda halnya jika atribut bersifat public access, maka dapat diakses secara bebas di luar class.
Maksud dari di luar class adalah di luar blok kode class yang dibuat, persis seperti contoh di atas.

Inheritance

seperti namanya, inheritance merupakan metode untuk mewariskan atribut maupun Function dari suatu class kepada class baru. Hierarkinya, berupa:
class utama (parent class/superclass) → class baru (child class/subclass).
Child class akan otomatis menyimpan setiap atribut maupun Function yang bersifat public access milik parent class, dan mengabaikan yang private access. Contohnya sebagai berikut:

class child1 merupakan inheritance dari class parent , itulah kenapa ketika inisialisasi object dilakukan pada class child1 output yang dikeluarkan berupa mencetak string i am big parent yang sebenarnya adalah perintah milik class parent .

pass merupakan contoh keyword yang ada di Python, cek contoh lainnya di sini

Polymorphism

secara harfiah, morph artinya mengubah, begitu pula dengan polymorphism di sini. Polymorphism merupakan istilah yang digunakan jika terdapat atribut maupun Function pada parent class yang diubah ketika digunakan kembali oleh child class. Berikut adalah contohnya:

polymorphism

mula-mula atribut diskon bernilai 10/100 atau 10%, lalu di dalam child class atribut tersebut didefinisikan ulang menjadi 50/100 atau 50%. Hal tersebut merupakan contoh dari penerapan polymorphism.

Hingga titik ini telah dipelajari mengenai class, object, jenis-jenis atribut, dan beberapa konsep terkait OOP (encapsulation, inheritance, polymorphism). Masih ada satu hal lagi yang penting untuk dipahami, hal ini berkaitan dengan instance attribute, dengan hal ini Pythoneers dapat menentukan nilai default dari suatu atribut. Konsep ini dinamakan dengan Overloading.

overloading

perlu diperhatikan, terdapat aturan dalam penggunaan overloading, sebetulnya aturan ini juga diterapkan ketika mendifinisikan parameter atau argumen dari suatu Function. Aturannya, yaitu:

  • Argumen non-default harus berada di depan argumen default. Hal ini dicontohkan seperti gambar di atas, argumen non-default merupakan atribut kapasitas_penumpang dan harga_kendaraan. Sedangkan, argumen default merupakan atribut jumlah_roda.

Alright, Pythoneers, Anda telah sampai di penghujung materi di seri yang ke-delapan. Berikutnya, akan dibahas mengenai Keywords yang ada di Python, tentunya ini penting untuk dipahami guna diterapkan pada kasus kondisional maupun dalam menangani error atau exception, dan sebagainya. Cheers.

Terima kasih!

--

--

Muhammad Efan Abdulfattah
Muhammad Efan Abdulfattah

Written by Muhammad Efan Abdulfattah

0 Followers

AI and Data explorer

No responses yet