190 likes | 442 Vues
Inheritance. Konsep Inheritance Protected Member Hubungan antara Superclass dan subclass Hubungan antara obyek-obyek dalam turunan Nested class. Konsep Inheritance. r. Catatan: Selain tinggi silinder (t), silinder juga memiliki jari-jari (r) lingkaran pada kedua ujungnya. t.
E N D
Inheritance Konsep Inheritance Protected Member Hubungan antara Superclass dan subclass Hubungan antara obyek-obyek dalam turunan Nested class
Konsep Inheritance r Catatan: Selain tinggi silinder (t), silinder juga memiliki jari-jari (r) lingkaran pada kedua ujungnya. t 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 :
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) void setTinggi(double) double getJariJari() double getTinggi() double hitungLuas() double hitungVolume() void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() Dari perbandingan tersebut, terdapat data dan method yang sama pada kedua class. Kita juga bisa melihat bahwa class Silinder merupakan supersetdari class Lingkaran. Metode OOP mengijinkan kita membuang data dan method dari class supersetyang 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.
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()
Implementasi Java untuk class Silinder sebagai berikut: • 1 class Silinder extendsLingkaran • 2 { • private double tinggi; • public Silinder() • { • setJariJari (1); • setTinggi (1); • } • 9 public Silinder(double r, double t) • 10 { • 11 setJariJari (r); • 12 SetTinggi (r); • } Class Silinder merupakan turunan dari class Lingkaran
16 public void setTinggi (double t) • 17 { • 18 if (t>0) tinggi =r; • 19 } • 20 public double getTinggi() • 21 { • 22 return (tinggi); • 23 } • 24 public double hitungLuas() • 25 { • 26return (super.hitungLuas() * 2.0 + super.hitungKeliling() * tinggi); • } • 28 public double hitungVolume() • 29 { • 30 return (Math.PI * 2.0 * jariJari * tinggi); • 31 } • 32 } Kata kunci super merujuk kepada class induk
Secara Lengkap program dapat dilihat sbb: 1 // --------------------------------------------- 2 // Definisi class Lingkaran 3 // --------------------------------------------- 4 class Lingkaran 5 { 6 private double jariJari; 7 public Lingkaran() 8 { 9 setJariJari(1); 10 } 11 public Lingkaran(double r) 12 { 13 if (r > 0) 14 jariJari = r; 15 else 16 jariJari = 1.0; 17 }
18 public void setJariJari (double r) 19 { 20 if (r>0) 21 jariJari=r; 22 } 23 public double getJariJari() 24 { 25 return (jariJari); 26 } 27 public double hitungLuas() 28 { 29 return (Math.PI * jariJari * jariJari); 30 } 31 public double hitungKeliling() 32 { 33 return (Math.PI * 2.0 * jariJari); 34 } 35 }
36 // --------------------------------------------- • 37 // Definisi class Silinder • // --------------------------------------------- • class Silinder extendsLingkaran • { • private double tinggi; • public Silinder() • { • setJariJari (1); • setTinggi (1); • } • public Silinder(double r, double t) • { • setJariJari (r); • SetTinggi (r); • }
public void setTinggi (double t) • { • if (t>0) tinggi =r; • } • public double getTinggi() • { • return (tinggi); • } • public double hitungLuas() • { • return (super.hitungLuas() * 2.0 + super.hitungKeliling() * tinggi); • } • public double hitungVolume() • { • return (Math.PI * 2.0 * jariJari * tinggi); • } • }
// --------------------------------------------- • // Definisi class utama • // --------------------------------------------- • public class CobaSilinder • { • public static void main (String[] args) • { • Silinder abc = new Silinder(); • Silinder xyz = new Silinder(23.5, 73.1); • System.out.println (“Data Silinder ABC :”); • System.out.println (“-----------------------”); • System.out.println (“Jari-Jari ABC : ” + abc.getJariJari()); • System.out.println (“Tinggi ABC : ” + abc.getTinggi()); • System.out.println (“Luas ABC : ” + abc.hitungLuas()); • System.out.println (“Luas ABC : ” + abc.hitungVolume()); • System.out.println ();
System.out.println (“Data Silinder XYZ :”); • System.out.println (“-----------------------”); • System.out.println (“Jari-Jari ABC : ” + xyz.getJariJari()); • System.out.println (“Tinggi ABC : ” + xyz.getTinggi()); • System.out.println (“Luas ABC : ” + xyz.hitungLuas()); • System.out.println (“Luas ABC : ” + xyz.hitungVolume()); • System.out.println (); • } • }
Turunan TurunanOrang.java Program penurunan Orang
Turunan • SapiMamat.java • Program Inheritance dan protected variabel
Turunan TurunanAyam.java Hubungan antara Objek dalam turunan