Memahami Konsep Dasar Pemrograman Berorientasi Objek (OOP) dalam Python – Bagian 1
4. Inheritance
Inheritance adalah konsep dalam Pemrograman Berorientasi Objek (OOP) di mana sebuah kelas dapat mewarisi atribut dan metode dari kelas lain. Kelas yang mewarisi disebut kelas turunan atau subkelas, sedangkan kelas yang mewariskan disebut kelas induk atau superclass. Dengan inheritance, Anda dapat memanfaatkan kembali kode yang sudah ada dan mengatur hierarki objek.
Definisi Kelas Turunan:
Kelas turunan atau subkelas didefinisikan dengan menyebutkan kelas induk sebagai parameter dalam definisi kelas.
class Mahasiswa(Manusia): # Kelas turunan dari kelas Manusia
def __init__(self, nama, usia, jurusan):
super().__init__(nama, usia)
self._jurusan = jurusan
def belajar(self):
print(f"{self._nama} sedang belajar di jurusan {self._jurusan}.")
mahasiswa = Mahasiswa("Peter", 20, "Informatika")
mahasiswa.sapa() # Memanggil metode dari kelas induk
Dalam contoh di atas, Mahasiswa
adalah kelas turunan dari Manusia
. Kelas Mahasiswa
mewarisi semua atribut dan metode dari kelas Manusia
, termasuk metode sapa()
. Metode __init__()
di kelas turunan dapat memanggil metode konstruktor kelas induk menggunakan fungsi super()
. Selain itu, kelas turunan dapat menambahkan metode dan atribut baru sesuai kebutuhan.
Dengan inheritance, Anda dapat mengorganisasi kode Anda secara hierarkis, menghindari duplikasi kode, dan memfasilitasi penggunaan kembali kode yang sudah ada. Ini merupakan salah satu aspek penting dari OOP yang memungkinkan Anda untuk membangun aplikasi yang lebih besar dan lebih kompleks dengan lebih efisien.
5. Polymorphism
Polymorphism adalah konsep dalam Pemrograman Berorientasi Objek (OOP) di mana suatu objek dapat memiliki banyak bentuk atau perilaku yang berbeda. Dengan menggunakan polymorphism, Anda dapat menggunakan objek dari kelas turunan seolah-olah mereka adalah objek dari kelas induk. Ini memungkinkan Anda untuk menulis kode yang lebih fleksibel dan dapat beradaptasi dengan berbagai situasi.
Polymorphism dengan Metode:
Polymorphism dapat dicapai dengan menggunakan metode yang sama dengan nama yang sama di berbagai kelas.
class Kucing:
def bersuara(self):
print("Meow")
class Anjing:
def bersuara(self):
print("Woof")
def main():
kucing = Kucing()
anjing = Anjing()
for hewan in (kucing, anjing):
hewan.bersuara() # Memanggil metode yang sama pada objek yang berbeda
main()
Dalam contoh di atas, Kucing
dan Anjing
adalah kelas yang memiliki metode bersuara()
. Ketika metode ini dipanggil pada objek kucing
dan anjing
, keduanya akan memberikan output suara yang sesuai dengan jenis hewan yang bersangkutan.
Polymorphism dengan Fungsi:
Polymorphism juga dapat dicapai dengan menggunakan fungsi yang sama dengan parameter yang berbeda.
class Kotak:
def luas(self, panjang, lebar):
return panjang * lebar
class Segitiga:
def luas(self, alas, tinggi):
return 0.5 * alas * tinggi
def hitung_luas(bentuk):
print("Luas:", bentuk.luas(4, 5))
def main():
kotak = Kotak()
segitiga = Segitiga()
for bentuk in (kotak, segitiga):
hitung_luas(bentuk) # Memanggil fungsi dengan parameter yang berbeda
main()
Dalam contoh di atas, Kotak
dan Segitiga
adalah kelas yang memiliki metode luas()
, tetapi dengan parameter yang berbeda. Ketika fungsi hitung_luas()
dipanggil dengan objek kotak
dan segitiga
, keduanya akan memberikan luas yang sesuai dengan bentuk geometris yang bersangkutan.
Polymorphism memungkinkan Anda untuk menulis kode yang lebih umum, lebih fleksibel, dan lebih mudah dipahami. Ini memungkinkan Anda untuk menangani berbagai jenis objek secara konsisten tanpa perlu mengetahui detail implementasi internalnya.
6. Contoh Praktis: Membuat Aplikasi Sederhana
Dalam bagian ini, kita akan membuat sebuah contoh praktis menggunakan konsep-konsep yang telah kita pelajari sebelumnya dalam Pemrograman Berorientasi Objek (OOP) dengan Python. Kita akan membuat sebuah aplikasi sederhana untuk mengelola daftar kontak, yang memungkinkan kita untuk menambah, menghapus, dan menampilkan kontak.
Langkah 1: Definisikan Kelas Kontak
Kelas Kontak
akan memiliki atribut nama
dan nomor
, serta metode untuk menampilkan informasi kontak.
class Kontak:
def __init__(self, nama, nomor):
self.nama = nama
self.nomor = nomor
def tampil_info(self):
print(f"Nama: {self.nama}, Nomor: {self.nomor}")
Langkah 2: Buat Fungsi untuk Menambah dan Menampilkan Kontak
Kita akan membuat fungsi untuk menambah kontak baru ke dalam daftar kontak, serta menampilkan seluruh kontak yang ada.
def tambah_kontak(daftar_kontak, nama, nomor):
kontak_baru = Kontak(nama, nomor)
daftar_kontak.append(kontak_baru)
print("Kontak berhasil ditambahkan.")
def tampilkan_daftar(daftar_kontak):
print("Daftar Kontak:")
for kontak in daftar_kontak:
kontak.tampil_info()
Langkah 3: Buat Fungsi untuk Menghapus Kontak
Kita akan membuat fungsi untuk menghapus kontak dari daftar berdasarkan nama kontak yang diberikan.
def hapus_kontak(daftar_kontak, nama):
for kontak in daftar_kontak:
if kontak.nama == nama:
daftar_kontak.remove(kontak)
print(f"Kontak {nama} berhasil dihapus.")
return
print(f"Kontak {nama} tidak ditemukan.")
Langkah 4: Implementasikan Aplikasi Kontak
Sekarang, kita akan mengimplementasikan logika aplikasi kontak dengan menggunakan fungsi-fungsi yang telah kita buat sebelumnya.
def main():
daftar_kontak = []
while True:
print("\nPilih Operasi:")
print("1. Tambah Kontak")
print("2. Tampilkan Daftar Kontak")
print("3. Hapus Kontak")
print("4. Keluar")
pilihan = input("Masukkan pilihan: ")
if pilihan == "1":
nama = input("Masukkan nama kontak: ")
nomor = input("Masukkan nomor kontak: ")
tambah_kontak(daftar_kontak, nama, nomor)
elif pilihan == "2":
tampilkan_daftar(daftar_kontak)
elif pilihan == "3":
nama = input("Masukkan nama kontak yang akan dihapus: ")
hapus_kontak(daftar_kontak, nama)
elif pilihan == "4":
print("Aplikasi Kontak ditutup.")
break
else:
print("Pilihan tidak valid. Silakan pilih kembali.")
if __name__ == "__main__":
main()
Penjelasan:
- Program akan terus berjalan dalam loop utama sampai pengguna memilih untuk keluar (
pilihan == "4"
). - Pengguna dapat memilih untuk menambahkan kontak baru, menampilkan daftar kontak, menghapus kontak, atau keluar dari aplikasi.
- Fungsi-fungsi yang telah kita definisikan sebelumnya digunakan untuk melakukan operasi yang sesuai sesuai dengan pilihan pengguna.
Dengan menggunakan konsep-konsep OOP seperti yang telah kita pelajari sebelumnya, kita berhasil membuat sebuah aplikasi sederhana untuk mengelola daftar kontak. Aplikasi ini memanfaatkan konsep-konsep seperti kelas, objek, inheritance, dan polymorphism untuk membuat kode yang lebih bersih, lebih terstruktur, dan lebih mudah dipahami.
0 Comments