Jumat, 20 April 2012

Inheritance dan Polimorfisme

 
Inheritance Pengertian Inheritance secara umum (Pewarisan) Yaitu salah satu bentuk penggunaan kembali perangkat lunak dimana suatu kelas baru dibuat dari kelas yang sudah ada dengan memakai variabel data fungsi (method) dari kelas yang sudah ada tersebut serta menambah atribut/pelaku yang baru, kelas baru otomatis memiliki variabel atau fungsi yang dimiliki kelas asal.
Pengertian dasar inheritance :
  1. Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP.
  2. Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan.
  3. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
  4. Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
  5. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class.
  6. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
  7. Karena suatu subclass dapat mewarisi apaapa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa saja yang ia warisi dari class parent-nya.
  8. Boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.
Deklarasi inheritance : 
  1. Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya.
  2. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class. 
public class B extends A {
… }      3.  Semua class di dalam Java adalah merupakan subclass dari class super induk yang bernama Object.
      4.  Misalnya saja terdapat sebuah class sederhana :
public class A { … }
      5.  Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class Object.
public class A extends Object { … } Istilah dalam inheritance yang perlu diperhatikan :
  1. Extends, Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
  2. Superclass, digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
  3. Subclass, yaitu class anak atau turunan secara hirarki dari superclass.
  4. Super Keyword, digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass. 
Catatan : Setiap class, hanya dapat memiliki satu superclass, tapi dapat memiliki banyak subclass
Keuntungan menggunakan Inheritance: Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object. Contoh dari hierarki class :
  1. Superclass adalah class yang letaknya di atas class tertentu di dalam hierarki.
  2. Subclass adalah class yang letaknya di bawah class tertentu   di dalam hierarki.
Keuntungan penggunaan Inheritance dalam OOP : Reusability, ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass Jadi, Anda dapat meng-enkode method hanya sekali dan method tersebut dapat digunakan oleh seluruh subclass. Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya. Untuk mengambil sebuah class, gunakan keyword extends.

Polimorfisme
Polimorfisme suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek. Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda. Polimorfisme juga merupakan fungsi yang pengembangan dari Inheritence. Dalam pemrograman, polimorfisme dapat diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour (tingkah laku) yang berbeda sehingga listing code implementasinya juga berbeda. Metode yang digunakan polimorfisme untuk menyatakan satu nama yang merujuk ke beberapa fungsi berbeda, Java mengimplementasikan polimorfisme dengan 2 cara, yaitu:
  1. Methode overloading : penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
  2. Methode overriding dengan pewarisan : terjadi ketika deklarasi method subclass dengan nama dan parameter yang sama dengan method dari superclassnya overloading
Berikut adalah hirarki class polimorfisme : Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya. Sebagai contoh :
public static main( String[] args ) { Person  ref; Student studentObject = new Student(); Employee employeeObject = new Employee(); ref = studentObject; //titik referensi Person kepada       // sebuah object Student } Keuntungan menggunakan Polimorfisme : 
Dengan menggunakan konsep polimorfisme, dengan mudah dapat diperpanjang, menyediakan objek baru yang sesuai. Hanya  perlu menunjukkan perubahan baru bersama dengan aplikasi lama. Dalam bahasa pemrograman, selalu ada kebutuhan untuk menambahkan dan mengubah. Dengan memanfaatkan konsep polimorfisme, waktu dan tenaga kerja berkurang di samping perawatan membuat masa depan lebih mudah.
  1. Helps in reusability of code =  Membantu dalam usabilitas kode.
  2. Provides easier maintenance of applications = Menyediakan lebih mudah pemeliharaan aplikasi.
  3. Helps in achieving robustness in applications = Membantu dalam mencapai ketahanan dalam aplikasi.
  4. class Hewan { private String jenis; private int kaki; Hewan (){ } Hewan (String jenis, int kaki){ this.jenis = jenis; this.kaki = kaki; } public void bersuara() { System.out.print("suara hewan "+jenis+" berkaki"+kaki); } } class Anjing extends Hewan { Anjing() { super(); } public void bersuara() { //overriding method System.out.println("guk guk guk...."); } } class Kucing extends Hewan { Kucing(String jenis, int kaki) { super(jenis, kaki); } public void bersuara() { //overriding method super.bersuara(); System.out.println("miaowwww...."); } } class DemoPoli { public static void main(String args[]) { Anjing doggy = new Anjing(); Kucing tom = new Kucing("Kucing", 4); doggy.bersuara(); tom.bersuara(); }}

Tidak ada komentar:

Posting Komentar