Kamis, 07 Oktober 2010

Object Inheritance (Bagian 1)

Pada bagian ini kita akan belajar mengenai salah satu fitur umum dalam OOP yakni INHERITANCE.
Inheritance, dimaksudkan agar sebuah class dapat mewarisi state2x dan behavior dari object supernya. Agar dapat memahami dengan lebih gampang mari kita simak cerita berikut!

Anda diminta untuk membuat sebuah program simulasi prilaku hewan pada sebuah Kebun Binatang.

Langkah awal dalam pembuatan program adalah Design, sebuah sistem yang akan anda berikan nama :
"Sistem Kendali Prilaku Hewan"

Uncle Sam telah memberikan beberapa sample hewan yang akan dimasukan ke dalam sistem kita. Berikut sample-sample hewan yang diberikan :


Anda diberikan kebebasan dalam menentukan spesifikasi yang akan dimasukan ke dalam sistem anda. Mari kita kerjakan!

Langkah #1: Definisikan super class berdasarkan karakteristik umum dari semua hewan (Attribute dan Behaviour) 

Attribute umum dari hewan2 dalam sistem adalah :
picture (gambar hewan), food (jenis makanan yang dikonsumsi), hunger (tingkat lapar) dan location (posisi hewan dalam kebun binatang).

Method umum dari hewan2 dalam sistem adalah :
makeNoise(bersuara), eat(makan) , roam(cara hewan bergerak) dan sleep (cara hewan tidur)

package greenhornsjava;

import java.awt.Image;

public class Animal {
 private Image picture;
 private String food;
 private int hunger;
 private int location;
 
 public Image getPicture() {
  return picture;
 }
 public void setPicture(Image picture) {
  this.picture = picture;
 }
 public String getFood() {
  return food;
 }
 public void setFood(String food) {
  this.food = food;
 }
 public int getHunger() {
  return hunger;
 }
 public void setHunger(int hunger) {
  this.hunger = hunger;
 }
 public int getLocation() {
  return location;
 }
 public void setLocation(int location) {
  this.location = location;
 }
 
 public void makeNoise() { System.out.println("Animal Make Noise."); }
 public void eat() { System.out.println("Animal eat."); }
 public void roam() { System.out.println("Animal Roam.");}  
 public void sleep() { System.out.println("Animal Sleep.");}
}


Langkah #2 : Definisikan kembali method yang spesifik terhadap typenya
package greenhornsjava;

public class Hippo extends Animal{
 public void makeNoise() {
  System.out.println("Guik, Guik,...");
 }
 
 public void eat() {
  System.out.println("Hippo eats vegetables..");
 } 
}

package greenhornsjava;

public class Dog extends Animal{
 public void makeNoise() {
  System.out.println("Guk, Guk,...");
 }
 
 public void eat() {
  System.out.println("Dog eats meats...");
 }
}
package greenhornsjava;

public class Lion extends Animal{
 public void makeNoise() {
  System.out.println("Roar, roar,...");
 }
 
 public void eat() {
  System.out.println("Lion eats meats..");
 } 
}

package greenhornsjava;

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

public class Tiger extends Animal{
 public void makeNoise() {
  System.out.println("Haummm, Haummm,...");
 }
 
 public void eat() {
  System.out.println("Tiger eats meats ...");
 } 
}
Sekian bagian pertama dari seri Inheritance... jika terdapat pertanyaan silahkan tinggalkan komentar. Terima kasih.

3 komentar:

  1. Permisi Kak mau numpang tanya
    Kenapa method makeNoise() dengan eat() didefinisikan lagi di masing-masing subclass tetapi method roam(), Attribut picture,food,hunger, dan location tidak didefinisikan lagi.
    Terimakasih

    BalasHapus
    Balasan
    1. method makeNoise dan eat di override karena isi dari method2 tsb tidak lagi cocok dengan sub classnya. Inti dari Inheritance adalah subclass dapat mewarisi method dari parent class nya dan jika isi dari method dari parent class dianggap tidak lagi cocok dengan subclass nya maka dapat dioverride. method roam() tidak dioverride karena dalam contoh ini karena saya ingin pembaca tau kalau subclass tetap dapat memanggil method tersebut dari parent classnya.

      Hapus
  2. Terimakasih penjelasannya Kak, bermanfaat sekali

    BalasHapus