Minggu, 28 April 2013

Inheritance and Polymorphism


Inheritance

Inheritance (Pewaris) mengadopsi suatu entitas atau objek yang mempunyai turunan, pada program biasa disebut dengan class turunan. Suatu class yang mempunyai turunan dinamakan parent class, sedangkan class turunan disebut dengan subclass. Subclass memarisi apa yang ada pada parentclass, subclass memperluan (extend) parent class nya. Sub – sub class lebih spesifik dari pada parent class.

Inheritance diterapkan jika terdapat suatu class yang dapat diperluas dari class lain. Deklarasi pada inheritance dengan menambahkan kata kunci extends setelah deklarasi namaclass, kemudian diikuti nama parent class, kata kunci extend tersebut memberitahukan compiler java bahwa kita memperluas class.

Public class Ayam extends Ternak {
….
}

Compiler java akan membacanya sebgai subclass dari object.

Public class Ayam extends Object

Misal :
Terdapat public class pegawai(Public String nama;public double gaji;} dan
Public class Manajer (public String nama; public double gaji; public department;}

Class Manajer memiliki member yang sama dengan class pegawai, hanya saja pada manajer dtambhkan member department, Class menejer merupakan peluasan dari class pegai dengan tambahan member department.

Public class Manajer extends Pegawai (Public string department;)

Beberapa istilah inheritance :
Extends               : Mendifinisikan class yang menjadi subclass
Superclass          : Menunjukan hirarki class yang berarti class dasar dari subclass
Subclass              : Class turunan secara hirarki dari superclass
Syper                    : Memanggil konstruktor dari superclass menjadi variable yang mengacu pda superclass


Contoh Inheritance :

Class Kotak{
Double s1;
Double s2;
Double s3;
Kotak()
{

Kotak (double 1,double2,double3){
S1=1;s2=2;s3=3}

Public void cetakkotak(){
System.out.println(“Isi kotak : “ +s1+s2+s2);}
}

public class Kotakku extends Kotak{
double s1;
Kotakku(double 1, double 2, double 3, double plus)
{
super(1,2,3);
s1=plus;
}

public static void main(String[] args) {
Kotakku Kotaksaya= new Kotakku(10,5,15,30);
Kotaksaya.CetakKotak();

System.out.println(”Sisi Pertama dari Kotak adalah = ” + Kotaksaya.s1);
System.out.println(”Sisi Pertama dari Kotak adalah = ” + Kotaksaya.s2);
System.out.println(”Sisi Pertama dari Kotak adalah = ” + Kotaksaya.s3);
}
}


Polymorphism


Polymorphism dapat berarti banyak bentuk, suatu aksi yang memungkinkan pemrograman menyampaikan pesan tertentu keluar dari hirarki obyek, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing objek. Polymorphism dapat disamakan dengan method Overloading, dimana dalam sebuah class terdapat method dengan nama yang sama.

Contoh Polymorphism

Diberikan sbuah parent class Bentuk, serta subclass, lingkaran, persegi, dan segitiga. Polymorphism memungkinkan untuk mendefinisikan method getLuas() pada setiap class, apapun object yang dibuat getLuas() akan memberikan hasil yang benar.



Contoh lain :
  Diberikan parent class Person dan  child class Student, kemudian subclass yang lain adalah Employee.
  Hierarki class-nya adalah sbb:





                Method getName pada superclass person yang dioveride pada subclass Student dan Employee.

public class Student {
                public String getName(){
                System.out.println(“Student Name:” + name);
                return name;
                }
}
public class Employee {
                public String getName(){
                System.out.println(“Employee Name:” + name);
                return name;
                }
}

Pada javam sebuar reference yg bertype superclass (Person) pada sebuah object subclass (Student).
public static main( String[] args ) {
                Student studentObject = new Student();
                Employee employeeObject = new Employee();
                Person ref = studentObject;
                //Person merefer ke object dg type student
                String name = ref.getName();
                //Memanggil getName() milik obeject Student

Main method , saat panggil getName dari object ref, method getName yang dipanggil adalah milik object Student, jika assign variable ref ke object Employee, maka method getName milik Employee yang dipanggil.

Tambahkan di main method kode berikut

                ref = employeeObject;
                //Person ref merefer ke object Employee

                String temp = ref.getName();
                //getName() milik Employee yang dipanggil

                System.out.println( temp );


Polymorhism dapat melakukan passing sebuah reference sebagia parameter input sebuat method, misalkan jika ditambahkan sebuah static method printInformation yang menggunakan type Person sebagai parameter.

Keuntungan dari Polymorphism adalah jika memerlukan menulis suatu code yang daoat dgunakan berbagia jenis type, code hanya cukup berinteraksi dengan base class (parents) dan dapat mengabaikan detail yang lebih spesifik yang berada pada subclass, selain itu Polymorphism memudahkan penulisan program dan memudahkan pihak lain.

Subclass yang lain dapat dubuat sebagai type baru dan object dari class baru ntersebut masih compatible dengan kode yang sudah ada.