Selasa, 12 Oktober 2010

Object Inheritance (Bagian 2 - Akhir)

Pada bagian 1 kita telah sebuah super class dan 5 sub class yakni Hippo, Dog, Tiger, Cat, dan Lion. Jika kita melihat class Dog, Tiger, Cat dan Lion maka kita melihat bahwa ke 4 class tersebut memiliki method eat() yang  melakukan fungsi yang sama.
Langkah #3 : Cermati ulang peluang untuk abstraksi yang baru dengan menentukan dua class atau lebih yang memiliki Behavior yang sama.
Dari analisa diatas kita dapat mengetahui bahwa Cat, Lion, Tiger dan Dog dapat di kelompokan menjadi sebuah kelompok class yang baru yakni Carnivora, sedangkan Hippo dapat kita kelompokan sebagai Herbivora.
package greenhornsjava;

public class Carnivora extends Animal{
 public void eat() {
  System.out.println("I eat meats..");
 }
}
package greenhornsjava;

public class Herbivora extends Animal{
 public void eat() {
  System.out.println("I eat vegetables...");
 }
}

Karena method eat() telah kita pindahkan ke class yang baru maka kita dapat menghapus method eat() dari ke 5 class dan mengubah class agar meng-extends super class yang baru sesuai jenis makanan yang dikonsumsi.

package greenhornsjava;

public class Cat extends Carnivora{
 public void makeNoise() {
  System.out.println("Meong, Meong,...");
 } 
}
package greenhornsjava;

public class Dog extends Carnivora{
 public void makeNoise() {
  System.out.println("Guk, Guk,...");
 }
}

package greenhornsjava;

public class Lion extends Carnivora{
 public void makeNoise() {
  System.out.println("Roar, roar,...");
 }
}
package greenhornsjava;

public class Tiger extends Carnivora{
 public void makeNoise() {
  System.out.println("Hauuuum, Hauuum,...");
 }
}
package greenhornsjava;

public class Hippo extends Herbivora{
 public void makeNoise() {
  System.out.println("Guik, Guik,...");
 }
}

Untuk mengetahui prilaku hewan-hewan yang telah kita definisikan. Mari kita membuat sebuah program yang akan mencetak prilaku hewan - hewan di console.

package greenhornsjava;

import java.util.Scanner;

public class AnimalTester {
 public static void main(String[] args) {
  System.out.println("====== Animal Tester =======");
  System.out.println("1.Hippo");
  System.out.println("2.Lion");
  System.out.println("3.Tiger");
  System.out.println("4.Dog");
  System.out.println("5.Cat");
  System.out.println("6.Exit");
  while (true) {
   int option = 0;
   System.out.print("Pilih [1/2/3/4/5/6] : ");
   option = new Scanner(System.in).nextInt();
   switch (option) {
   case 1:
    Hippo hippo = new Hippo();
    System.out.print("makeNoise() : ");hippo.makeNoise();
    System.out.print("eat() : ");hippo.eat();
    System.out.print("sleep() : ");hippo.sleep();
    System.out.print("roam() : ");hippo.roam();
    break;
    
   case 2:
    Lion lion = new Lion();
    System.out.print("makeNoise() : ");lion.makeNoise();
    System.out.print("eat() : ");lion.eat();
    System.out.print("sleep() : ");lion.sleep();
    System.out.print("roam() : ");lion.roam();
    break;
    
   case 3:
    Tiger tiger = new Tiger();
    System.out.print("makeNoise() : ");tiger.makeNoise();
    System.out.print("eat() : ");tiger.eat();
    System.out.print("sleep() : ");tiger.sleep();
    System.out.print("roam() : ");tiger.roam();
    break;
    
   case 4:
    Dog dog = new Dog();
    System.out.print("makeNoise() : ");dog.makeNoise();
    System.out.print("eat() : ");dog.eat();
    System.out.print("sleep() : ");dog.sleep();
    System.out.print("roam() : ");dog.roam();
    break; 
   
   case 5:
    Cat cat = new Cat();
    System.out.print("makeNoise() : ");cat.makeNoise();
    System.out.print("eat() : ");cat.eat();
    System.out.print("sleep() : ");cat.sleep();
    System.out.print("roam() : ");cat.roam();
    break; 
   
   case 6 : return;
   }
  }
 }
}


Berikut Gambar ilustrasi dari method yang dieksekusi pada class yang menggunakan fitur inheritance.

Jadi apa kegunaan INHERITACE bagi kita?
  • Kita dapat menghindari code yang redundant (berulang-ulang didefinisikan). 
  • Tempatkan method yang memiliki kode yang sama ke sebuah super class yang baru dan biarkan subclass yang menjadi turunan dari superclass mewarisi method tersebut. Ketika kalian ingin mengubah behavior dari method, kalian hanya mengubah di subclass tertentu saja.
  • Anda dapat menentukan sebuah protocol umum untuk sekelompok class.
Sekian tutorial dari Inheritance. Semoga dapat membantu. Jika terdapat pertanyaan, silahkan tinggalkan komentar. Saya akan berusaha menjawab secepat mungkin.

Tidak ada komentar:

Posting Komentar