1 / 19

Inheritance

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.

lixue
Download Presentation

Inheritance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Inheritance Konsep Inheritance Protected Member Hubungan antara Superclass dan subclass Hubungan antara obyek-obyek dalam turunan Nested class

  2. 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 :

  3. 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()

  4. 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:

  5. 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.

  6. 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()

  7. 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

  8. 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

  9. 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 }

  10. 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 }

  11. 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); • }

  12. 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); • } • }

  13. // --------------------------------------------- • // 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 ();

  14. 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 (); • } • }

  15. Penurunan Sederhana

  16. Turunan TurunanOrang.java Program penurunan Orang

  17. Turunan • SapiMamat.java • Program Inheritance dan protected variabel

  18. Turunan TurunanAyam.java Hubungan antara Objek dalam turunan

  19. Turunan

More Related