OOP Praktis – Inheritance/pewarisan (python)
- OOP Praktis – Class & Object (python)
- OOP Praktis – Instance Method (python)
- OOP Praktis – Encapsulation (python)
- OOP Praktis – Inheritance/pewarisan (python)
Teknik berikutnya dalam paradigma pemrograman berorientasi objek adalah inheritance atau pewarisan.
Inheritance, sesuai dengan namanya mengenalkan hubungan hirarkis antara parent class (induk) dan child class (anak), dimana child class dapat mewarisi attributes dan methods yang dimiliki oleh parent class.
cat: Parent class dikenal juga dengan istilah superclass, child class dikenal juga dengan istilah subclass
Dengan menggunakan inheritance, kita mendapatkan mendapatkan manfaat berupa dimungkinkannya code reuse (kode tidak perlu ditulis ulang) dan tersedianya informasi struktur klasifikasi hierarkis antar class.
Konsep
Untuk memahami konsep inheritance dengan lebih jelas, perhatikan ilustrasi berikut.
Ilustrasi di atas adalah ilustrasi beberapa class yang digunakan untuk merepresentasikan produk komponen komputer yang dijual pada sebuah toko komputer (disederhanakan).
Seluruh produk komponen yang dijual, apapun jenisnya, memiliki beberapa informasi yang seragam yakni : nama produk, pabrikan(merk), dan harga. Informasi yang seragam ini kemudian dijadikan fields untuk membuat sebuah struktur sebuah parent class yakni ComputerParts.
Informasi yang secara unik melekat pada suatu tipe komponen tertentu kemudian dijadikan fields pada masing-masing child class yang merepresentasikan satu kelompok tipe komponen bersangkutan. Pada ilustrasi, child class yang ada antara lain Processor, Random Access Memory (RAM), dan Harddisk bertipe SATA. Masing-masing child class tersebut memiliki karakteristik berbeda yang diperlihatkan dari field yang menyusunnya.
Kode program
Jika disusun dalam kode, maka masing-masing class dan cara penggunaannya dapat dibuat seperti pada contoh berikut:
Kode
class ComputerPart: def __init__(self,pabrikan,nama,jenis,harga): self.pabrikan = pabrikan self.nama = nama self.jenis = jenis self.harga = harga class Processor(ComputerPart): def __init__(self,pabrikan,nama,harga,jumlah_core,speed): super().__init__(pabrikan,nama,'processor',harga) self.jumlah_core = jumlah_core self.speed = speed class RandomAccessMemory(ComputerPart): def __init__(self,pabrikan,nama,harga,kapasitas): super().__init__(pabrikan,nama,'RAM',harga) self.kapasitas = kapasitas class HardDiskSATA(ComputerPart): def __init__(self,pabrikan,nama,harga,kapasitas,rpm): super().__init__(pabrikan,nama,'SATA',harga) self.kapasitas = kapasitas self.rpm = rpm
Penjelasan
Pada kode di samping diperlihatkan susunan kode ComputerPart sebagai superclass. ComputerPart memiliki empat buat attribute yakni pabrikan,nama,jenis, dan harga.
Berikutnya diperlihatkan kode untuk ketiga subclass yakni Processor, RandomAccessMemory, dan HardDiskSATA.
Penanda bahwa masing-masing class tersebut adalah subclass dari ComputerPart adalah nama superclass yang diletakkan setelah nama subclass di dalam tanda kurung dengan sintaks class Anak(Induk):
seperti yang diperlihatkan pada baris 8, 14, 19.
Perhatikan juga bahwa pada constructor setiap subclass terdapat pemanggilan constructor dari superclass-nya dengan kata kunci super() yakni pada baris 10, 16, dan 21.
Cara menggunakan
Berikut adalah potongan kode yang mendemonstrasikan inisialisasi object menggunakan ketiga subclass yang ada dan sekaligus menunjukkan bahwa setiap object pada class tersebut memiliki attribute jenis, nama, dan pabrikan yang diwarisi dari superclassnya.
p = Processor('Intel','Core i7 7740X',4350000,4,'4.3GHz') m = RandomAccessMemory('V-Gen','DDR4 SODimm PC19200/2400MHz',328000,'4GB') hdd = HardDiskSATA('Seagate','HDD 2.5 inch',295000,'500GB',7200) parts = [p,m,hdd] for part in parts: print('{} {} produksi {}'.format(part.jenis,part.nama,part.pabrikan))
Output dari kode program di samping adalah:
Processor Core i7 7740X produksi Intel RAM DDR4 SODimm PC19200/2400MHz produksi V-Gen SATA HDD 2.5 inch produksi Seagate
Kode utuh
Jalankan kode di bawah ini untuk lebih jelasnya:
Sekian, semoga bermanfaat
Salam