Halo teman-teman semuanya, pada artikel kali ini kita akan membahas tentang Abstraction di Python. Abstraction adalah salah satu pilar utama dalam Pemrograman Berorientasi Objek (OOP).
Secara sederhana, Abstraction adalah proses menyembunyikan detail implementasi dan hanya menampilkan fungsionalitas penting kepada pengguna.
Dengan abstraction, kita bisa fokus pada apa yang dilakukan daripada bagaimana cara melakukannya.
Contoh di kehidupan nyata:
Ketika kita menyalakan televisi dengan menekan tombol power, kita tidak perlu tahu bagaimana listrik dialirkan atau bagaimana rangkaian elektronik bekerja. Kita hanya peduli bahwa televisi menyala.
Abstraction dengan Abstract Class
Di Python, abstraction biasanya dilakukan dengan abstract class menggunakan modul abc
(Abstract Base Class).
Abstract class adalah class yang tidak bisa diinstansiasi secara langsung, melainkan hanya digunakan sebagai blueprint untuk class lain.
from abc import ABC, abstractmethod
# Abstract class
class Hewan(ABC):
@abstractmethod
def suara(self):
pass
# Subclass yang mengimplementasikan abstract method
class Kucing(Hewan):
def suara(self):
return "Meow"
class Anjing(Hewan):
def suara(self):
return "Guk guk"
# Tidak bisa langsung membuat object dari class abstract
# h = Hewan() # Error!
# Hanya bisa dari subclass
k = Kucing()
a = Anjing()
print(k.suara())
print(a.suara())
Output:
Meow
Guk guk
- Class
Hewan
hanya mendefinisikan kontrak method suara()
, tanpa implementasi.
- Subclass (
Kucing
, Anjing
) wajib mengimplementasikan method tersebut.
Abstraction di Dunia Nyata
Misalnya kita membuat sistem pembayaran. Kita hanya ingin mendefinisikan "setiap metode pembayaran harus punya fungsi bayar()
", tapi detail implementasinya bisa berbeda.
from abc import ABC, abstractmethod
class Pembayaran(ABC):
@abstractmethod
def bayar(self, jumlah):
pass
class Gopay(Pembayaran):
def bayar(self, jumlah):
print(f"Bayar {jumlah} menggunakan GoPay")
class Dana(Pembayaran):
def bayar(self, jumlah):
print(f"Bayar {jumlah} menggunakan Dana")
# Menggunakan abstraction
def proses_pembayaran(pembayaran, jumlah):
pembayaran.bayar(jumlah)
# Memanggil dengan berbagai metode
proses_pembayaran(Gopay(), 50000)
proses_pembayaran(Dana(), 75000)
Output:
Bayar 50000 menggunakan GoPay
Bayar 75000 menggunakan Dana
Dengan abstraction, kita bisa membuat kode yang fleksibel. Jika nanti ada metode pembayaran baru (misalnya OVO, ShopeePay), cukup buat class baru yang mewarisi Pembayaran
dan implementasikan bayar()
.
Kesimpulan
Pada artikel ini kita sudah belajar tentang Abstraction di Python. Abstraction membantu kita menyembunyikan detail implementasi yang tidak perlu dan hanya menampilkan interface penting kepada pengguna.
Dengan abstraction, kode kita menjadi lebih sederhana, fleksibel, dan mudah diperluas. Sekarang kita sudah mempelajari semua pilar utama OOP di Python:
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
Dengan menguasai keempat pilar ini, kita memiliki fondasi kuat untuk membangun program Python yang lebih kompleks, modular, dan profesional.
Terima Kasih