Java Zone

Pemrograman java, Perulangan Java, Operator java, Thread Java, Makalah Filsafat Ilmu, Makalah Teologi dan lain lain

Powered by Blogger.

Inheritance dan Polymorphism dalam Pemrograman Berorientasi Objek Java


Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance ini mengadopsi dunia nyata dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dalam dunia nyata, suatu entitas turunan dapat mewarisi apa-apa yang dipunyai dari entitas induknya. Misalkan saja antara entitas Bapak dan entitas Anak. Entitas anak dapat mewarisi apa-apa yang dipunyai oleh entitas Bapaknya. Demikian juga dalam konsep inheritance.
Inheritance merupakan proses pewarisan data dan method dari suatu class yang telah ada kepada suatu class baru. Class yang mewariskan disebut dengan superclass / parent class / base class, sedangkan class yang mewarisi (class yang baru) disebut dengan subclass/ child class / derived class. Subclass tidak dapat mewarisi anggota private dari superclass-nya. Dengan inheritance, class yang baru (subclass) akan mirip dengan class yang lama (superclass) namun memiliki karakteristik yang baru. Dalam Java, subclass hanya bisa memiliki satu superclass (single inheritance) sedangkan superclass bisa memiliki satu subclass atau lebih. Untuk menerapkan inheritance, gunakan statement “extends”.
Manfaat penggunaan konsep pewarisan antara lain:

1.      Kita dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas.

2.       Kita dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang ada.

Berikut adalah contoh penerapan dari inheritance :

class Orang{
private String nama;
private double tinggi;
private double berat;

public Orang (String nama, double tinggi, double berat) {
this.nama = nama;
this.tinggi = tinggi;
this.berat = berat;
}

public String toString(){
 return ("Nama : "+nama+"\n Tinggi : "+ tinggi + "\n Berat : "+berat);
 }
}

class Pelajar extends Orang {
private String nim;
private String asalSekolah;
private double nilai; // range: 0-30
public Pelajar (String nama, double tinggi, double berat, String nim,

String sekolah, double nilai){
super(nama,tinggi,berat);
this.nim = nim;
asalSekolah = sekolah;
this.nilai = nilai;
}
public String toString(){
  return (super.toString()+"\nNIM : "+nim+ "\nSekolah :
  "+asalSekolah+"\nNilai :" +nilai);
 }
}
class Latihan2b {
public static void main(String[] args){
 Pelajar siswa = new Pelajar("Musa",168, 62,"050107","SMU Pancasila",27.8);
 System.out.println(siswa.toString());
 }
}

Polimorfisme adalah kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara harfiah, “poli” berarti banyak sementara “morph” berarti bentuk. 


Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :

1.      Method yang dipanggil harus melalui variabel dari superclass.

2.      Method yang dipanggil harus juga menjadi method dari super class.

3.      Signature method harus sama baik pada superclass maupun subclass.

4.      Method access attribute pada subclass tidak boleh lebih terbatas dari super class.



Class Bentuk yang merupakan class induk (superclass) dari class Lingkaran, Elips dan Segitiga mempunyai method gambar() dan hapus(). Class-class anak (subclass) juga mempunyai method gambar() dan hapus(). Meskipun keempat class tersebut mempunyai nama method yang sama, tetapi isi (source code/yang dilakukan/output) dari masing-masing method tersebut berbeda. Jika kita menginginkan sebuah objek yang dapat memanggil setiap method (yaitu method gambar & hapus) yang ada pada setiap class (pada superclass maupun subclass), maka gunakanlah teknik Polymorphism. Polymorphism hanya berlaku pada method dan tidak berlaku untuk atribut. Untuk mendapatkan operasi polymorphism dari suatu method, maka method tersebut haruslah merupakan method yang ada di class induk (lihat diagram diatas bahwa method gambar() dan hapus(), selain terdapat di class-class turunan class Bentuk, juga terdapat di class Bentuk).
Contoh implementasi polymorphism : 
class Bentuk{
public void gambar(){
  System.out.println("Menggambar");
}
public void hapus(){
  System.out.println("Menghapus Gambar");
 }
}

class Lingkaran extends Bentuk{
public void gambar(){
  System.out.println("Gambar Lingkaran");
}
public void hapus(){
  System.out.println("Hapus Lingkaran");
 }
}

class Elips extends Bentuk{
public void gambar(){
  System.out.println("Gambar Elips");
}
public void hapus(){
  System.out.println("Hapus Elips");
 }
}

class Segitiga extends Bentuk{
public void gambar(){
  System.out.println("Gambar Segitiga");
}
public void hapus(){
  System.out.println("Hapus Segitiga");
 }
}
Berikut ini adalah class yang mengimplimentasikan teknik polymorphism :

class RandomBentuk{
  private Random rand = new Random();
  public Bentuk next() {
  switch(rand.nextInt(3)){
default:
case 0: return new Lingkaran();
case 1: return new Elips();
case 2: return new Segitiga();
}
  }
}



class Latihan3a{
  private static RandomBentuk gen = new RandomBentuk();

public static void main(String[] args){
Bentuk[] bangun = new Bentuk[3];
for(int i = 0; i < bangun.length; i++)
bangun[i] = gen.next();
for(int i = 0; i < bangun.length; i++)
bangun [i].gambar();
for(int i = 0; i < bangun.length; i++)
bangun [i].hapus();
  }
} 
Bagikan :
+
Previous
Next Post »
2 Komentar untuk "Inheritance dan Polymorphism dalam Pemrograman Berorientasi Objek Java"

 
Copyright © 2015 Java Zone - All Rights Reserved
Template By Kunci Dunia
Back To Top