.: COME AS MY FAMILY :.

Pewarisan (Inheritansi) PBO

Dear all,

Dalam konsep PBO dikenal konsep yang disebut pewarisan , sebuah kelas dapat diturunkan dalam kelas lain lagi sehingga kelas turunan mewarisi behavior / method ataupun attribut dari kelas diatasnya (super class) . contohnya jika kelas ‘Motor’ kita turunkan menjadi kelas ‘Generator’


Perhatikan kode program dibawah ini :

public class Motor {
//konstruktor kelas Motor
public Motor(String jenisMotor){
System.out.println(jenisMotor);
}

public void setTeganganKerja(String teganganKerja){
System.out.println("Tegangan kerja : "+teganganKerja);
}

public void setJumlahPhase(int jumlahPhase){
System.out.println("jumlahPhase : "+jumlahPhase);
}

public void setBergerakKekanan(boolean bergerakKekanan){
if(bergerakKekanan==true){
System.out.println("Motor bergerak ke kanan");
}
}

public void setBergerakKekiri(boolean bergerakKekiri){
if(bergerakKekiri==true){
System.out.println("Motor bergerak ke kiri");
}
}

public void setBerhenti(boolean berhenti){
if(berhenti==true){
System.out.println("Motor berhenti");
}
}
}

public class Generator extends Motor{

private String teganganKerja ;
private int jumlahPhase ;
private boolean bergerakKekanan,bergerakKekiri,berhenti ;

public Generator(String teganganKerja,int jumlahPhase){
//super-class nya memiliki konstruktor Motor(String arg)
super("Motor Generator");
this.teganganKerja = teganganKerja ;
this.jumlahPhase = jumlahPhase;
// Mengakses method dari kelas Motor
setBergerakKekanan(true);
setBergerakKekiri(true);
setBerhenti(true);
setTeganganKerja(teganganKerja);
setJumlahPhase(jumlahPhase);
}

// Meng-Override method setBergerakkekiri(arg)dari kelas Motor
@Override
public void setBergerakKekiri(boolean bergerakKekiri){
this.bergerakKekiri = bergerakKekiri;
if(bergerakKekiri==true){
bergerakKekanan=false;
berhenti=false;
}
System.out.println("maaf , Motor tidak dapat bergerak ke kiri");
}
// Meng-Overload method setBerhenti(arg)dari kelas Motor
public void setBerhenti(boolean berhenti,int selangWaktu){
this.berhenti = true;
if(this.berhenti==true){
bergerakKekiri=false;
bergerakKekanan=false;
}
System.out.println("Motor sudah dihentikan dan Berhenti selama "
+selangWaktu+" detik");
}

public static void main(String[] args){
Generator generator = new Generator("AC 220v",3);
// Penerapan overloading method
generator.setBerhenti(true); // kelas Motor (super-class)
generator.setBerhenti(true,30); //Kelas Generator (sub-class)
}
}


Dapat dilihat dalam method super-class (kelas Motor) sendiri memiliki beberapa method yang memiliki prosedur yang telah didefinisi secara global , kita dapat mendefinisi method turunan dari super-class sesuai kebutuhan dari sub-class atau kita dapat menyebutnya meng-overriding method

Atau dalam sub-class nya (class Generator) kita dapat secara langsung mengakses method-method yang ada di dalam super-class nya (Kelas Motor) .

// Mengakses method dari kelas Motor
setBergerakKekanan(true);
setBergerakKekiri(true);
setBerhenti(true);
setTeganganKerja(teganganKerja);
setJumlahPhase(jumlahPhase);



Kelas Generator yang kita buat meng-extends kelas Motor sehingga dalam kelas Generator kita leluasa mengakses dari method yang kita turunkan dari kelas Motor , dapat dilihat pada method setBergerarkKekiri(arg) . Pada super-class nya method ini memiliki prosedur untuk mencetak tulisan :


System.out.println("Motor bergerak ke kiri");



sedangkan pada method setBergerakKekiri(arg) pada sub-class nya memiliki prosedur untuk mencetak tulisan :


System.out.println("maaf , Motor tidak dapat bergerak ke kiri");



Dan ketika kita manjalankan programnya bahwa prosedur yang ada pada method sub-class nya lah yang akan tercetak .

Inilah yang dinamakan “overriding method’ . ketentuan-ketentuan dalam meng-overide method dijelaskan sebagai berikut :

  1. Nama method sub-class harus sama dengan nama method super-class
  2. Daftar parameter method sub-class harus sama dengan Daftar parameter method super-class
  3. Return-type method sub-class harus sama dengan Return-type method super-class
  4. Method yang terkena override modifier-nya tidak boleh lebih luas dari method super-classnya


Sedangkan yang dimaksud dengan overloading method dalam PBO adalah apabila dalam sebuah kelas , super-class ataupun sub-class terdapat beberapa method yang memiliki nama method yang sama tetapi memiliki nilai parameter yang berbeda-beda .

Potongan kode diatas :

//Kelas Motor
public void setBerhenti(boolean berhenti){
if(berhenti==true){
System.out.println("Motor berhenti");
}
}
  //Kelas Generator
// Meng-Overload method setBerhenti(arg)dari kelas Motor
public void setBerhenti(boolean berhenti,int selangWaktu){
this.berhenti = true;
if(this.berhenti==true){
bergerakKekiri=false;
bergerakKekanan=false;
}
System.out.println("Motor sudah dihentikan dan Berhenti selama "
+selangWaktu+" detik");
}


Cara untuk membuat overloading method :

  1. Harus memiliki beberapa nama method yang sama
  2. Dalam nama method overloading yang sama harus memiliki parameter yang berbeda
  3. Setiap method overloading boleh memiliki return type yang sama ataupun berbeda

Berikut contoh penanganannya :

  public static void main(String[] args){
Generator generator = new Generator("AC 220v",3);
// Penerapan overloading method
generator.setBerhenti(true); // dari kelas Motor
generator.setBerhenti(true,30); // dari kelas Generator
}


Untuk lebih jelasnya dapat dilihat tulisan saya mengenai Fungsi Pewarisan pada PBO disini .

Semoga tutorial diatas dapat membantu pembaca .



Terima kasih





Mochamad Idris


0 komentar:

Posting Komentar

 
© 2009 Computer | Life | Earth | Health | Powered by Blogger | Built on the Blogger Template Valid X/HTML (Just Home Page) | Design: Choen | PageNav: Abu Farhan