Selasa, 10 November 2015

Pewarisan sifat (inheritance) dan polymorphism pada java

Diposting oleh Unknown di 03.08
PEWARISAN SIFAT (inheritance)

Dalam bahasa pemrograman berorientasi objek (OOP), khususnya bahasa Java, pasti ada yang namanya inheritance atau bisa disebut pewarisan sifat. Sama seperti objek yang ada di kehidupan nyata. Contohnya anak pasti akan memiliki sifat - sifat sama atau sifat turunan dari orang tuanya.

Pembahasan

Pembahasan pada konsep OOP Java ini sangat mudah. Dalam suatu kelas yang bisa mewarisi sifat - sifat kelas induknya. Contohnya kita memiliki kelas Kotak, dalam kelas parent ini kita bisa mendefinisikan sifat - sifat atau perilaku - perilaku dasar yang bisa diturnan kepada kelas turunannya.

Contoh kelas turunannya bernama PersegiPanjang dan BujurSangkar. Maka kelas ini akan memiliki sifat - sifat dan perilaku dasar yang dimiliki induknya yaitu Kotak. Dalam kelas turunannya ini, kelas PersegiPanjang danBujurSangkar bisa mengimplementasikan sifat secara langsung dengan cara merubah sedikit atau tidak sama sekali. Jadi di kelas turunan ini kita bisa mengimplementasikan method - method dari parent secara rinci.

Contoh Program


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class Kotak{
   protected double panjang, lebar, sisi;
 
   public Kotak(double p, double l){
      panjang = p;
      lebar = l;
   }
 
   public Kotak(double s){
      sisi = s;
   }
 
   protected double luas(){
      return 0;
   }
 
   protected double keliling(){
      return 0;
   }
 
   public void tampil(){
      System.out.println("Luasnya\t\t: "+luas());
      System.out.println("Kelilingnya\t: "+keliling());
   }
}
 
class BujurSangkar extends Kotak{
   public BujurSangkar(double sisi) {
      super(sisi);
   }
   protected double luas(){
      return (sisi*sisi);
   }
   protected double keliling(){
      return (4*sisi);
   }
}
 
class PersegiPanjang extends Kotak{
   public PersegiPanjang(double panjang, double lebar){
      super(panjang, lebar);
   }
   protected double luas(){
      return (panjang*lebar);
   }
   protected double keliling(){
      return (2*(panjang+lebar));
   }
}
 
public class Main{
   public static void main(String[] args){
      double sisi, panjang, lebar;
      sisi = 5;
      panjang = 10;
      lebar = 3;
  
      BujurSangkar bujurSangkar = new BujurSangkar(sisi);
      System.out.println("Bujur sangkar dengan sisi : "+sisi);
      bujurSangkar.tampil();
 
      PersegiPanjang persegiPanjang = new PersegiPanjang(panjang, lebar);
      System.out.println("Persegi panjang dengan panjang sisi : "+panjang+" dan lebar sisi : "+lebar);
      persegiPanjang.tampil();
   }
}

Nanti apabila dijalankan, maka kurang lebih tampilannya akan seperti ini:

Java Extends Class

Seperti yang kita lihat di atas, kita menggunakkan kata kunci extends untuk memanggil kelas parent untuk menurunkan sifat - sifatnya. Lalu kita menggunakkan kata kunci super() untuk memanggil konstruktor yang sesuai. Di sana juga kita menerapkan sistem override untuk method luas() dan method keliling().

POLYMORPHISM

Polymorphism merupakan salah satu konsep penting dalam object oriented programming (OOP) khususnya di bahasa Java setelah abstraction dan inheritance. Polymorphism berarti banyak bentuk. Ada beberapa definisi berbeda tentang polymorphism yang berkaitan dengan pemrograman berorientasi obyek. Sedangkan apa yang dimaksud dengan polymorphism sendiri, sebenarnya sulit untuk didefinisikan. Sejalan dengan contoh yang diberikan, Anda diharapkan dapat mengerti dan memahami konsep polymorphism itu sendiri.
Polymorphism sering dikaitkan dengan penggunaan lebih dari satu metoda dengan nama sama. Penggunaan metoda dengan nama sama dapat diterapkan dengan method overloading dan method overriding. Peran polymorphism sebenarnya tidak terbatas hanya pada hal tersebut. Ada keterkaitan antara polymorphism dan inheritance (turunan).
Dalam konsep turunan, saat obyek dari subclass dikonstruksi, obyek dari superclass juga ikut dikonstruksi. Jadi setiap instance dari subclass adalah juga instance dari superclass. Apabila Anda mendeklarasikan metoda dengan parameter dari tipe superclass, Anda diperbolehkan untuk memberi argumen berupa obyek subclass yang merupakan turunan dari superclass tersebut.
Berikut ini adalah contoh program yang dapat memberikan gambaran berkaitan dengan konsep polymorphism. Perlu dipahami dan dimengerti bahwa kelas Object merupakan akar dari semua kelas Java dan menduduki puncak tertinggi dalam hirarkhi. Program akan mendefinisikan kelas yang berkaitan dengan bidang datar secara sederhana termasuk beberapa kelas turunannya (kelas PersegiPanjang dan Balok) dan membatasi hanya pada penerapan method overriding.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Nama file : Polimorphism.java
// Contoh penerapan konsep polimorphism
 
public class Polimorphism {
 
   public static void main(String[ ] args) {
 
      cetakObjek(new Balok());
      cetakObjek(new PersegiPanjang());
      cetakObjek(new BangunDatar());
      cetakObjek(new Object());
   }
    
   public static void cetakObjek(Object objek) {
      System.out.println(objek);
   }
 
} // Akhir kelas Polimorphism
 
class Balok extends PersegiPanjang {
   public String toString() {
      return "Mempunyai sisi panjang, lebar dan tinggi";
   }
}
 
class PersegiPanjang extends BangunDatar {
   public String toString() {
      return "Mempunyai sisi panjang dan lebar";
   }
}
 
class BangunDatar extends Object {
   public String toString() {
      return "Mempunyai berbagai bentuk";
   }
}
Baris nomor 14 -16 adalah deklarasi metoda cetakObjek yang mempunyai satu parameter dengan tipe kelas Object. Kelas Object merupakan akar dari semua kelas di Java. Langsung maupun tidak langsung, semua kelas di Java merupakan turunan dari kelas Object. Anda dapat memanggil atau menggunakan metoda cetakObjek dengan argumen berupa obyek yang dibuat dari kelas turunan superclass Object.
Ketika metoda cetakObjek dipanggil (baris nomor 8 – 11), argumen obyek akan diminta. obyek sebagai argumen metoda dapat berupa obyek yang merupakan kelas turunan dari kelas Object yaitu kelas BangunDatar, kelas PersegiPanjang maupun kelas Balok. Masing-masing kelas turunan mendeklarasikan ulang metoda toString yang mempunyai implementasi berbeda. Java Virtual Machine (JVM) akan menentukan secara dinamis implementasi metode toString yang akan digunakan saat program dijalankan. Kemampuan menentukan secara dinamis ini disebut dengan dynamic binding.
Dari gambaran program di atas, apabila parameter sebuah metoda adalah tipe superclass, maka argumen metoda yang diberikan dapat berupa tipe dari subclassnya. Kemampuan seperti inilah yang dimaksud dengan polymorphism. Dari gambaran tersebut, dapat didefinisikan kembali bahwa polymorphism adalah kemampuan untuk menghasilkan sesuatu yang berbeda dengan cara yang sama. Pemberian obyek dari subclass ke obyek dari superclass dapat dilakukan tanpa perlu melakukan konversi.


sumber : 
http://javanoobtuts.blogspot.co.id/2014/03/java-oop-polymorphism.html
http://javanoobtuts.blogspot.co.id/2014/02/konsep-pemrograman-berorientasi-objek.html
http://www.termasmedia.com/pemrograman/java/250-memahami-konsep-polimorfisme-polymorphism-di-java.html
http://javanoobtuts.blogspot.co.id/2014/03/java-oop-inheritance.html


0 komentar:

Posting Komentar

 

Atut Sulistianingrum Template by Ipietoon Blogger Template | Gadget Review