INHERITANCE / PEWARISAN 01 PERTEMUAN 14 INHERITANCE / PEWARISAN
Konsep Inheritance Secara bebas Inheritance di terjemahkan sebahagai pewarisan. Yaitu sebuah konsep dimana kita bisa membuat sebuah class baru dengan mengembangkan kelas yang pernah dibuat sebelumnya. Metode OOP memungkinkan kita memperoleh seluruh data dari class induk (base-class) untuk diberikan kepada class anak (derived-class) tanpa harus melakukan copy-and-paste seluruh kode base-class. Contoh : class Silinder seperti digambarkan dibawah ini : Catatan: Selain tinggi silinder (t), silinder juga memiliki jari-jari (r) lingkaran pada kedua ujungnya. r t
Berdasarkan gambar tersebut bisa dibuat bagan untuk class Silinder dengan mencantumkan seluruh data dan metodenya sebagai berikut: Silinder double jariJari double tinggi void setJariJari(double) void setTinggi(double) double getJariJari() double getTinggi() double hitungLuas() double hitungVolume()
Kemudian kita coba membandingkan class Lingkaran terdahulu dengan class Silinder yang akan kita buat : Silinder Lingkaran double jariJari double tinggi double jariJari void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() void setJariJari(double) void setTinggi(double) double getJariJari() double getTinggi() double hitungLuas() double hitungVolume() Dari perbandingan tersebut, terdapat data dan method yang sama pada kedua class. Kita juga bisa melihat bahwa class Silinder merupakan superset dari class Lingkaran. Metode OOP mengijinkan kita membuang data dan method dari class superset yang ada pada kelas subset-nya. Sehingga menjadi sbb:
Lingkaran Silinder double jariJari double tinggi void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() void setTinggi(double) double getTinggi() double hitungLuas() double hitungVolume() Catatan: Tidak semua method class Lingkaran kita hilangkan pada class Silinder. Contoh method hitungLuas() tetap digunakan, hanya saja isinya berbeda, karena menghitung luas Lingkaran tentu berbeda dengan menghitung luas Silinder, pada class silinder kita menambahkan method hitungVolume() karena bangunan Geometris Silinder adalah 3-Dimensi. Sedangkan untuk method hitungkeliling(), meski pada class Silindersudah kita buang, namun user tetap bisa menggunakannya karena method ini secara otomatis diwariskan ke class Silinder. Pada hal kita tahu Silinder tidak mempunyai keliling.
void setJariJari(double) double getJariJari() double hitungLuas() Lingkaran double jariJari void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() Kedua struktur class ini bisa digambarkan secara hirarki, dengan menggunakan model Unified Modelling Language (UML) dari Rumbaugh dkk: Silinder double tinggi void setTinggi(double) double getTinggi() double hitungLuas() double hitungVolume()
Inheritance Software reusability Menciptakan class baru dari class yang sudah ada - Menggunakan data dan behaviors (tingkah laku/method) dari class yang sudah ada - Ditambahkan dengan kemampuan yg lain Subclass extends superclass - Subclass Lebih khusus / spesialisasi Behaviors/method diturunkan dari superclass dapat diubah Behaviors (method) tambahan
Superclasses and subclasses Object suatu class “is an” object dari class yang lain Contoh: Mahasiswa adalah Orang. Class Mahasiswa diturunkan (inherits) dari class Orang Orang: superclass Mahasiswa: subclass Superclass merepresentasikan kumpulan banyak objek yang lebih besar daripada kumpulan objeknya subclass Contoh: superclass: Kendaraan Mobil, truk, perahu, sepeda, … subclass: Mobil Lebih kecil, kendaraan yg lebih spesifik
Inheritance hierarchy Inheritance relationships: tree-like hierarchy structure Tiap class bisa menjadi superclass Supply data/behaviors ke class lain ATAU subclass Inherit (mewarisi) data/behaviors dari class lain
Fig. 9.2 Inheritance hierarchy for university CommunityMembers. Employee Student Staff Faculty Administrator Teacher Alumnus Fig. 9.2 Inheritance hierarchy for university CommunityMembers.
ThreeDimensionalShape TwoDimensionalShape ThreeDimensionalShape Circle Square Triangle Sphere Cube Tetrahedron Fig. 9.3 Inheritance hierarchy for Shapes.
PENTING !!! Cara membuat sub class class nm_KelasTurunan extends nm_KelasDasar { <tubuh klas> }
Pewarisan data menurut hak aksesnya ATRIBUTE AKSES DIWARISKAN PADA PUBLIC Kelas Turunan PROTECTED Kelas Turunan PRIVATE Tidak ada TANPA ATRIBUTE Kelas turunan dalam satu paket