Inheritance Konsep Inheritance Protected Member

Slides:



Advertisements
Presentasi serupa
EXCEPTION HANDLING.
Advertisements

Pemrograman JAVA (TIB09)
Pemrograman Berorientasi Objek
- PERTEMUAN 3- INHERITANCE
Nur Hayatin, S.ST Jurusan Teknik Informatika Universitas Muhammadiyah Malang Sem Genap 2010.
POLIMORFISME Imam Fahrur Rozi 01.
Inheritance (Pewarisan) As’ad Djamalilleil
OBJECT ORIENTED PROGRAMMING in JAVA
Pemrograman JAVA (TIB09)
Pemrograman Berorientasi Objek
INHERITANCE.
Pemrograman Java Pewarisan / Inheritance Polimorfisme Pemrograman Java.
Method.
Inheritance Ery Setiyawan Jullev A.
Inheritance (Pewarisan)
7 Rekayasa Sistem Konsep Utama OOP Dedy Alamsyah, S.Kom.
POLIMORFISM Ery Setiyawan Jullev A.
Overriding, Overloading, Polymorphism
Pertemuan 8 Pemrograman Berbasis Obyek Oleh Tita Karlita
Polymorpism.
Encapsulation, Inheritance, polymorphism, dan interface
INHERITANCE, POLYMORPHISM, DAN INTERFACE
Pewarisan, Polimorfisme, dan Interface
Inheritance (Pewarisan)
ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM
Pemrograman Berorientasi Obyek Oleh Tita Karlita
As’ad Djamalilleil Function (method) As’ad Djamalilleil
Pertemuan : Object Oriented Programming
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
Pemrograman Berorientasi Obyek dengan JAVA Interface
Inheritance Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2009.
PELATIHAN JAVA FUNDAMENTAL
Object Oriented Programming with JAVA 2011/2012
INHERITANCE / PEWARISAN
Struktur Kontrol Pemilihan
OOP Java 06 Polymorphism.
OOP Java - Tj Konsep Dasar OOP.
Inheritance Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 4 Tahun : 2008 Versi : 1/0.
Inheritance, polymorphism, dan interface
Pemrograman Berorientasi Obyek (PBO)
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
INHERITANCE (Oleh : Nur Hayatin, S.ST)
OOP Java Minggu 2b Dasar OOP. Class (1) Deklarasi class : [ *] class { [ *] } Cat : [] = optional, * = repeat 0-N.
MATERI IV OOP (Object Oriented Programming) Chapter II.
Try, Catch, Finally Throws
Pertemuan 6 PEWARISAN AND POLYMORPHISM
Pemrograman Berorientasi Objek
Access Modifier.
Inheritance dan Kata Kunci static
POLYMORPHISM (KEBANYAKRUPAAN)
Encapsulation, Inheritance, Polymorphism
POLYMORPHISM (KEBANYAKRUPAAN)
POLYMORPHISM (Overloading)
Inheritance Pertemuan 8
MODIFIER JAVA.
Pewarisan (Inheritance)
KELAS DAN OBJEK BAGIAN I Pertemuan 6.
MEMBUAT CLASS SENDIRI 2.
Tipe Data, Variabel, dan Operator
Tipe Data, Variabel, dan Operator
Inheritance.
Pilar Object Oriented Programming
Pewarisan (Inheritance)
Pilar Object Oriented Programming
PEWARISAN Kelompok : Alim Mutohidin ( )
Tipe Data, Variabel, dan Operator
Pertemuan 5 Inheritance
Dasar-dasar Pemrograman Berbasis Obyek. kelas Kelas pada java didefinisikan dengan menggunakan kata kunci class.
Pemrograman Berorientasi Objek
FONDASI PEMROGRAMAN & STRUKTUR DATA #8
Transcript presentasi:

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

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 r Catt: Selain tinggi silinder (t), silinder juga memiliki jari-jari (r) lingkaran pada kedua ujungnya. t

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

Kemudian kita coba membandingkan class Lingkaran terdahulu dengan class Silinder yang akan kita buat : Lingkaran Silinder double jariJari double jariJari double tinggi 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 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:

Lingkaran Silinder double jariJari double tinggi void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() 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.

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 sbb: 1 class Silinder extends Lingkaran 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; 17 { 18 if (t>0) tinggi = r; 19 } 20 public double getTinggi() 21 { 22 return (tinggi); 23 } 24 public double hitungLuas() 25 { 26 return (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 extends Lingkaran { 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 (“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 (); }

Penurunan Sederhana

TurunanOrang.java Program penurunan Orang Turunan

SapiMamat.java Program Inheritance dan protected variabel Turunan

TurunanAyam.java Hubungan antara Objek dalam turunan Turunan

Turunan

Konsep polymorpisme Implementasi polymorpisme Interface Polimorphism Konsep polymorpisme Implementasi polymorpisme Interface

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

// --------------------------------------------- // Definisi class TampilData class TampilData { public void tulisData(String data) System.out.println (data); } public void tulisData(int data) public void tulisData(double data)

// --------------------------------------------- // Definisi class utama public class Polymorphism { public static void main(String[] args) TampilData abc = new TampilData(); System.out.print (“Cetak data string : “); abc.tulisData (“Universitas Budi Luhur”); System.out.print (“Cetak data integer : “); abc.tulisData (1979); System.out.print (“Cetak data double : “); abc.tulisData (25.0); }

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.

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

Package modul // --------------------------------------------- // Definisi class Lingkaran public class Lingkaran { private double jariJari; public Lingkaran() setJariJari(1); } public Lingkaran(double r) if (r > 0) jariJari = r; else jariJari = 1.0;

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 }

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.

package modul import modul.Lingkaran class Silinder extends Lingkaran { private double tinggi; public Silinder() setJariJari (1); setTinggi (1); } public Silinder(double r, double t) setJariJari (r); SetTinggi (r);

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 { 26 return (super.hitungLuas() * 2.0 + super.hitungKeliling() * tinggi); } 28 public double hitungVolume() 29 { 30 return (Math.PI * 2.0 * jariJari * tinggi); 31 } 32 }

Implementasi package tidak sulit, cukup dengan mengimport package yang dikehendaki. Contoh : import modul.Lingkaran public class UjiLingkaran { public static void main (String[] args) { Lingkaran abc = new Lingkaran(5); Lingkaran pqr = new Lingkaran(3.2); System.out.println (“Data Default :”); System.out.println (“-----------------”); System.out.println (“Jari – Jari ABC : ” + abc.getJariJari()); System.out.println (“Jari – Jari PQR : ” + pqr.getJariJari()); System.out.println (); }

4. Contoh Kasus (Latihan mandiri) : 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.

PolyLagu.java Polymorphisme dalam Lagu

PolyMorpheus.java Polymorphisme dalam Film

Terima Kasih