Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

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

Presentasi serupa


Presentasi berjudul: "Inheritance Konsep Inheritance Protected Member Hubungan antara Superclass dan subclass Hubungan antara obyek-obyek dalam turunan Nested class."— Transcript presentasi:

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

2 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 classinduk (base-class) untuk diberikan kepada class anak (derived-class) tanpa harus melakukan copy-and-paste seluruh kode base-class. Contoh : kita akan membuat class Silinder seperti digambarkan dibawah ini t r Catt: Selain tinggi silinder (t), silinder juga memiliki jari-jari (r) lingkaran pada kedua ujungnya.

3 Berdasarkan gambar tersebut bisa dibuat bagan untuk class Silinder dengan mencantumkan seluruh data dan metodenya sbb: Silinder double jariJari double tinggi void setJariJari(double) void setTinggi(double) double getJariJari() double getTinggi() double hitungLuas() double hitungVolume()

4 Lingkaran double jariJari void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() 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 : Dari perbandingan tsb, 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:

5 Lingkaran double jariJari void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() Silinder double tinggi void setTinggi(double) double getTinggi() double hitungLuas() double hitungVolume() Catt: 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() Silinder double tinggi void setTinggi(double) double getTinggi() double hitungLuas() double hitungVolume() Kedua struktur class ini bisa digambarkan secara hirarki, dengan menggunakan model Unified Modelling Language (UML) dari Rumbaugh dkk:

7 1class Silinder extends Lingkaran 2{ 3private double tinggi; 4public Silinder() 5{ 6setJariJari (1); 7setTinggi (1); 8} 9public Silinder(double r, double t) 10{ 11setJariJari (r); 12SetTinggi (r); 13} Implementasi Java untuk class Silinder sbb: Class Silinder merupakan turunan dari class Lingkaran

8 16public void setTinggi (double t) 17{ 18if (t>0) tinggi = r; 19} 20public double getTinggi() 21{ 22return (tinggi); 23} 24public double hitungLuas() 25{ 26 return (super.hitungLuas() * super.hitungKeliling() * tinggi); } 28public double hitungVolume() 29{ 30return (Math.PI * 2.0 * jariJari * tinggi); 31} 32} Kata kunci super merujuk kepada class induk

9 Secara Lengkap program dapat dilihat sbb: 1// // Definisi class Lingkaran 3// class Lingkaran 5{ 6private double jariJari; 7public Lingkaran() 8{ 9setJariJari(1); 10} 11public Lingkaran(double r) 12{ 13if (r > 0) 14jariJari = r; 15else 16jariJari = 1.0; 17}

10 18public void setJariJari (double r) 19{ 20if (r>0) 21jariJari=r; 22} 23public double getJariJari() 24{ 25return (jariJari); 26} 27public double hitungLuas() 28{ 29return (Math.PI * jariJari * jariJari); 30} 31public double hitungKeliling() 32{ 33return (Math.PI * 2.0 * jariJari); 34} 35}

11 36// // Definisi class Silinder 38// class Silinder extends Lingkaran 40{ 41private double tinggi; 42public Silinder() 43{ 44setJariJari (1); 45setTinggi (1); 46} 47public Silinder(double r, double t) 48{ 49setJariJari (r); 50SetTinggi (r); 51}

12 52public void setTinggi (double t) 53{ 54if (t>0) tinggi = r; 55} 56public double getTinggi() 57{ 58return (tinggi); 59} 60public double hitungLuas() 61{ 62 return (super.hitungLuas() * super.hitungKeliling() * tinggi); 63} 64public double hitungVolume() 65{ 66return (Math.PI * 2.0 * jariJari * tinggi); 67} 68 }

13 69// // Definisi class utama 71// public class CobaSilinder 73{ 74public static void main (String[] args) 75{ 76Silinder abc = new Silinder(); 77Silinder xyz = new Silinder(23.5, 73.1); 78System.out.println (“Data Silinder ABC :”); 79System.out.println (“ ”); 80System.out.println (“Jari-Jari ABC : ” + abc.getJariJari()); 81System.out.println (“Tinggi ABC : ” + abc.getTinggi()); 82System.out.println (“Luas ABC : ” + abc.hitungLuas()); 83System.out.println (“Luas ABC : ” + abc.hitungVolume()); 84System.out.println ();

14 85System.out.println (“Data Silinder XYZ :”); 86System.out.println (“ ”); 87System.out.println (“Jari-Jari ABC : ” + xyz.getJariJari()); 88System.out.println (“Tinggi ABC : ” + xyz.getTinggi()); 89System.out.println (“Luas ABC : ” + xyz.hitungLuas()); 90System.out.println (“Luas ABC : ” + xyz.hitungVolume()); 91System.out.println (); 92} 93}

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

20 Polimorphism Konsep polymorpisme Implementasi polymorpisme Interface

21 Polymorphism : Secara mudah polymorphism bisa disamakan dengan method overloading, dimana didalam class bisa terdapat beberapa method dengan nama sama. Contoh: Sebuah method bernama tulisData() yang berfungsi untuk menampilkan data string, tentu tidak bisa menangani masukan berupa data yang lain. Solusi yang dapat diberikan yaitu dengan menyediakan beberapa method dengan nama yang sama dan masing-masing method memiliki parameter dengan tipe data yang berbeda. Method tersebut akan bereaksi dengan satu dari beberapa macam cara tergantung dari data yung di-passing ke dalamnya, keragaman model aksi inilah yang disebut Polymorphism, atau banyak bentuk

22 1// // Definisi class TampilData 3// class TampilData 5{ 6public void tulisData(String data) 7{ 8System.out.println (data); 9} 10public void tulisData(int data) 11{ 12System.out.println (data); 13} 14public void tulisData(double data) 15{ 16System.out.println (data); 17} 18}

23 1// // Definisi class utama 3// public class Polymorphism 5{ 6public static void main(String[] args) 7{ 8TampilData abc = new TampilData(); 9System.out.print (“Cetak data string : “); 10 abc.tulisData (“Universitas Budi Luhur”); 11System.out.print (“Cetak data integer : “); 12 abc.tulisData (1979); 13System.out.print (“Cetak data double : “); 14 abc.tulisData (25.0); 15} 16}

24 3. Package : Sejauh ini semua class yang dibuat harus menyatu dengan program utama (class dengan fungsi main()). Sedangkan sebuah program yang baik haruslah mampu menggunakan modul atau class dari file yang lain tanpa harus menyalin file tersebut kedalam file yang sedang diedit. Hal ini dapat dilakukan oleh Java, sama halnya dilakukan oleh bahasa pemrograman yang lainnya. Contoh : Basic  chain Pascal  unit C/C++  include Java  package Package adalah sebuah direktory yang berisi sekumpulan file.class dengan kegunaan spesifik.

25 Proses pembentukan directory package tidak sama seperti kita membuat directory pada Windows Explorer atau menggunakan MD pada DOS. Class yang akan kita masukkan kedalam package harus mencantumkan nama package di baris pertama. Secara otomatis file hasil compilenya akan dimasukkan ke dalam directory yang tidak lain nama package tersebut. Instruksi untuk mengkompile class java menjadi package adalah : javac –d Directory package tidak sama dengan nama package. Opsi ini digunakan untuk mengarahkan didirectory mana kita akan membuat directory baru sebagai nama package. Nama directory tidak boleh mengandung spasi atau karakter lain yang tidak valid. Kedua class : lingkaran dan silinder terdahulu kita jadikan package sehingga program lain yang menggunakannya tidak perlu menyertakan kode class tersebut didalam filenya.

26 1Package modul 2// // Definisi class Lingkaran 4// public class Lingkaran 6{ 7private double jariJari; 8public Lingkaran() 9{ 10setJariJari(1); 11} 12public Lingkaran(double r) 13{ 14if (r > 0) 15jariJari = r; 16else 17jariJari = 1.0; 18}

27 18public void setJariJari (double r) 19{ 20if (r>0) 21jariJari=r; 22} 23public double getJariJari() 24{ 25return (jariJari); 26} 27public double hitungLuas() 28{ 29return (Math.PI * jariJari * jariJari); 30} 31public double hitungKeliling() 32{ 33return (Math.PI * 2.0 * jariJari); 34} 35}

28 Kata kunci package digunakan untuk menyatakan nama package yang akan dibuat. Nama package sengaja dipilih modul agar mudah mengingat bahwa didalam package ini kita menyimpan modul-modul program. Karakteristik dari package : 1.Bersifat public 2.Diawali dengan huruf kecil Direktori modul secara otomati dibuat oleh java pada saat kompilasi dilakukan. Kemudian lakukan hal yang sama pada class Silinder, seperti program dibawah ini, * dimana class Silinder merupakan turunan dari class Lingkaran. * Class Lingkaran harusnya sudah dikompilasi terlebih dahulu. * Didalam class Silinder harus ada instruksi yang mengarahkan agar java mengambil modul Lingkaran dari directory modul. * Class Silinder sendiri harus menyertakan package modul agar hasil kompilasi disimpan didirektory modul.

29 1package modul 2import modul.Lingkaran 3class Silinder extends Lingkaran 4{ 5private double tinggi; 6public Silinder() 7{ 8setJariJari (1); 9setTinggi (1); 10} 11public Silinder(double r, double t) 12{ 13setJariJari (r); 14SetTinggi (r); 15 }

30 16public void setTinggi (double t) 17{ 18if (t>0) tinggi = r; 19} 20public double getTinggi() 21{ 22return (tinggi); 23} 24public double hitungLuas() 25{ 26 return (super.hitungLuas() * super.hitungKeliling() * tinggi); } 28public double hitungVolume() 29{ 30return (Math.PI * 2.0 * jariJari * tinggi); 31} 32}

31 Implementasi package tidak sulit, cukup dengan mengimport package yang dikehendaki. Contoh : 1import modul.Lingkaran 2 3public class UjiLingkaran { 4public static void main (String[] args) { 5Lingkaran abc = new Lingkaran(5); 6Lingkaran pqr = new Lingkaran(3.2); 7System.out.println (“Data Default :”); 8System.out.println (“ ”); 9System.out.println (“Jari – Jari ABC : ” + abc.getJariJari()); 10System.out.println (“Jari – Jari PQR : ” + pqr.getJariJari()); 11System.out.println (); 12} 13}

32 Contoh Kasus dapat dilihat pada halaman 40 s/d 58 : pemrograman java jilid 2 Rangsang purnama: Setelah mempelajari dasar-dasar OOP, pada bagian ini kita berharap bisa menerapkan metode tersebut dengan mengambil peristiwa sehari-hari dengan langkah-lahkah sbb : 1.Mendefinisikan class penduduk 2.Mendefinisikan class karyawan 3.Mendefinisikan class mahasiswa 4.Mendefinisikan class menwa Lakukan pendefinisian sama seperti materi yang sudah kita pelajari. 4. Contoh Kasus (Latihan mandiri) :

33 PolyLagu.java Polymorphisme dalam Lagu

34 PolyMorpheus.java Polymorphisme dalam Film

35

36 Terima Kasih


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

Presentasi serupa


Iklan oleh Google