Di dunia Python, kita punya dua konsep keren yang bisa bikin program kamu lebih tertata dan fleksibel. Mereka adalah Encapsulation dan Polymorphism. Kalau digambarkan dengan analogi yang lucu, Encapsulation itu seperti kamu menyimpan barang berharga di dalam brankas (supaya nggak sembarangan orang bisa akses), sementara Polymorphism itu seperti superhero yang bisa berubah wujud sesuai kebutuhan—tapi tetap satu jiwa yang keren!
1. Apa Itu Encapsulation?
Encapsulation (pengkapsulan) itu seperti kamu menyembunyikan isi dompet dari orang lain. Kalau ada yang ingin tahu, kamu cuma kasih mereka beberapa informasi yang aman. Misalnya, kamu nggak mungkin kasih tahu PIN ATM kamu ke sembarang orang, kan? Nah, di Python, Encapsulation memungkinkan kita untuk menyembunyikan data penting di dalam objek dan memberikan akses terbatas hanya lewat metode tertentu.
Di Python, kita bisa menggunakan private attributes (atribut pribadi) dan getter/setter methods (metode untuk mengambil dan mengubah data) untuk melindungi data dalam objek.
2. Contoh Encapsulation
Misalnya, kita punya objek BankAccount yang menyimpan saldo rekening. Tentu saja, saldo ini harus dijaga dan nggak boleh diubah sembarangan, jadi kita harus menggunakan Encapsulation untuk menyembunyikan saldo dan memberi metode untuk mengaksesnya.
class BankAccount:
def __init__(self, pemilik, saldo):
self.pemilik = pemilik
self.__saldo = saldo # Ini adalah atribut private yang disembunyikan
def cek_saldo(self):
return self.__saldo
def setor(self, jumlah):
if jumlah > 0:
self.__saldo += jumlah
print(f"Setoran berhasil! Saldo sekarang: {self.__saldo}")
else:
print("Setoran harus lebih besar dari 0!")
def tarik(self, jumlah):
if jumlah <= self.__saldo:
self.__saldo -= jumlah
print(f"Penarikan berhasil! Saldo sekarang: {self.__saldo}")
else:
print("Saldo tidak cukup!")
Perhatikan bahwa kita membuat __saldo menjadi atribut private dengan menambahkan dua garis bawah (__
) di depannya. Atribut ini tidak bisa diakses langsung dari luar kelas. Kamu hanya bisa mengubah atau mengambil saldo lewat metode yang sudah disediakan, seperti setor() dan tarik().
3. Mengakses Data dengan Metode
Sekarang, kita buat objek BankAccount dan coba cek bagaimana Encapsulation bekerja:
# Membuat objek rekening
rekening_budi = BankAccount("Budi", 100000)
# Mengakses saldo dengan metode
print(f"Saldo awal Budi: {rekening_budi.cek_saldo()}")
# Setor dan tarik uang
rekening_budi.setor(50000)
rekening_budi.tarik(20000)
# Mencoba mengakses saldo langsung (akan gagal)
# print(rekening_budi.__saldo) # Ini akan error karena __saldo adalah private!
Output:
Saldo awal Budi: 100000
Setoran berhasil! Saldo sekarang: 150000
Penarikan berhasil! Saldo sekarang: 130000
Lihat! Encapsulation bekerja dengan baik, karena kita bisa melindungi data saldo dan memberikan akses hanya lewat metode yang sesuai. Jadi, data penting tidak bisa diubah sembarangan!
4. Apa Itu Polymorphism?
Sekarang, mari kita bahas Polymorphism! Kalau kamu punya berbagai karakter, seperti seorang superhero yang bisa berubah wujud sesuai situasi, maka itu adalah Polymorphism. Di Python, Polymorphism memungkinkan objek yang berbeda untuk merespon metode yang sama dengan cara yang berbeda. Jadi, meskipun objek yang berbeda dipanggil dengan metode yang sama, hasilnya bisa berbeda-beda—seperti superhero yang berubah wujud!
Misalnya, kita punya dua class berbeda, Anjing dan Kucing, yang keduanya punya metode suara(), tapi suara yang dihasilkan berbeda.
5. Contoh Polymorphism
Kita buat dua class: Anjing dan Kucing. Kedua objek ini bisa mengeluarkan suara, tapi tentunya dengan cara yang berbeda!
class Anjing:
def suara(self):
print("Anjing: Guk Guk! ")
class Kucing:
def suara(self):
print("Kucing: Meow Meow! ")
def buat_suara(hewan):
hewan.suara() # Ini akan memanggil metode suara() dari objek hewan
Di sini, kita punya dua class: Anjing dan Kucing, yang keduanya memiliki metode suara(). Namun, suara yang dikeluarkan berbeda!
6. Menggunakan Polymorphism
Sekarang, kita bisa buat objek Anjing dan Kucing, lalu memanggil metode suara() dengan cara yang sama, tetapi hasilnya berbeda!
# Membuat objek anjing dan kucing
anjing = Anjing()
kucing = Kucing()
# Memanggil metode suara() dengan polymorphism
buat_suara(anjing) # Polymorphism in action!
buat_suara(kucing)
Output:
Anjing: Guk Guk!
Kucing: Meow Meow!
Lihat! Kita bisa menggunakan metode suara() untuk kedua objek yang berbeda (Anjing dan Kucing), dan meskipun kita menggunakan metode yang sama, setiap objek memberikan hasil yang berbeda sesuai dengan jenisnya. Itulah Polymorphism!
7. Kesimpulan – Encapsulation dan Polymorphism Itu Keren!
- Encapsulation itu seperti menyimpan data penting di brankas. Kita menyembunyikan data di dalam objek dan memberikan akses hanya melalui metode tertentu.
- Polymorphism itu seperti superhero yang bisa berubah wujud sesuai kebutuhan. Objek yang berbeda bisa merespon metode yang sama dengan cara yang berbeda!
Dengan Encapsulation, kita bisa melindungi data dan memastikan bahwa hanya akses yang tepat yang diberikan. Dengan Polymorphism, kita bisa membuat kode yang lebih fleksibel dan efisien, karena objek yang berbeda bisa menggunakan metode yang sama namun dengan perilaku yang berbeda!
Jadi, jangan lupa untuk memanfaatkan kedua konsep keren ini dalam program Python kamu. Dengan Encapsulation dan Polymorphism, program kamu jadi lebih aman dan lebih fleksibel!
0 Comments