Kamis, 03 April 2008

PILAR OBJECT ORIENTED PROGRAMMING

Inheritance (Pewarisan)
Inheritance/pewarisan adalah pewarisan data dan method dari suatu kelas kepada kelas yang lain, dengan kata lain membuat class baru yang masih mempunyai spesifikasi (state & behaviour) yang sama dengan class yang sudah ada.
  1. Class yang baru disebut class turunan/subclass sementara,class yang sudah ada disebut dengan class induk/superclass.
  2. Subclass (class turunan) akan memiliki (mewarisi) semua cirri dan sifat dari superClass ( class Induk )
  3. Pada kelas turunan dapat ditambahkan state dan berhaviour yang baru, yang merupakan spesifik milik subclass itu sendiri.
  4. Keyword yang digunakan dalam pewarisan ini adalah extends

Beberapa alasan menggunakan inheritance :

  • Bersifat Reusable
    Salah satu keuntungan OOP adalah bersifat reusable. Jika kita membuat beberapa kelas yang berasal dari basis yang sama (data dan method), namun pada masing-masingnya akan ditambahkan data atau method yang khusus. Tanpa inheritance, kita harus menyalin semua data dan method dari suatu kelas.
  • Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama.
    Jika kita ingin memodifikasi suatu data atau method untuk semua SubKelas, kita tidak perlu melakukan perubahan pada masing-masing sub kelas. Modifikasi cukup dilakukan pada kelas Super yang menjadi basis dari SubKelas tersebut.
  • Hemat waktu, biaya dan tenaga dalam pengembangan program.

    Contoh Class induk:

    class induk {
    int A,B;
    void tampilan(){
    System.out.println("Nilai Matematika:",+A);
    System.out.println("Nilai Fisika :",+B);
    }
    }


    Contoh Class turunan :

    class anak extends induk {
    int C;
    void hitungjumlah(){
    System.out.println("Jumlah :"+(A+B+C));
    }
    }


    Keterangan :
    class anak extends induk{
    membuat class “anak” yang diturunkan dari class ”induk”
    System.out.println("Jumlah :"+(A+B+C));
    class “anak” juga mempunyai state milik class “induk” jadi nilai A dan B tetap bisa digunakan walaupun di class “anak” hanya mempunyai nilai C.

    class induk_anak {
    public static void main (String[] args) {
    induk induk1 = new induk();
    anak anak1 = new anak()

    System.out.println (“NILAI INDUK”);
    induk1.A=2;
    induk1.B=4;
    induk.tampilan();

    System.out.println (“NILAI ANAK”);
    anak1.A=4;
    anak1.B=5;
    anak1.tampilan()

    anak1.C=10;
    anak1.jumlahhitung();
    }
    }


    Hasil :

    NILAI INDUK
    Nilai Matematika : 2
    Nilai Fisika : 4

    NILAI ANAK
    Nilai Matematika : 4
    Nilai Fisika : 5

    Jumlah : 19


    Pada class turunan dimungkinkan juga untuk meredefinisikan atau memodifikasi data dan method dari class induknya di class turunan, proses ini akan mengubah data dan method dari keduanya, kelas induk dan kelas anaknya. Istilah ini sering disebut dengan Overloading/Overriding.
  • Overriding hanya bisa dilakukan untuk data dan method yang memiliki modifier public, protected maupun default.
  • Dengan adanya overriding method, object akan langsung menggunakan method yang didefinisikan pada class tersebut
  • Untuk mengakses method yang sama milik calss induk dibutuhkan keyword super
    Contoh : super.A=10;
    super.tampilan();



    Beberapa alasan menggunakan overriding :
  • Mendefinisikan kembali method kelas induknya secara total
    Perubahan dilakukan secara menyeluruh, baik jumlah maupun tipe parameter dari argumen inputnya, tipe nilai kembaliannya, maupun behaviour pemrosesan datanya.
  • Menambahkan behaviour tertentu pada method kelas induknya
    Perubahan hanya dilakukan untuk menambahkan behaviour yang secara khusus dimiliki hanya oleh kelas anak tersebut.

Pada kelas turunan juga dapat dipastikan memiliki constructor dari class induk.
- Untuk menggunakan constructor milik class induk kita cukup menggunakan keyword super
- Tidak perlu menuliskan nama constructor, tetapi cukup menggunakan keyword super diikuti parameter yang sama dengan class induk.

Contoh :

class induk {
int X,Y;
induk (int a, int b) {
X=a;
Y=b;
}

void tampilan() {
System.out.println("Nilai X :"+X);
System.out.println("Nilai Y :"+Y);
}
}

class anak extends induk {
int Z;
induk (int a, int b, int c) {
super(a,b);
Z=c;
}

void tampilan() {
System.out.println("Nilai X:+X);
System.out.println("Nilai Y:+Y);
System.out.println("Nilai Z:+Z);
}

void hitungjumlah() {
System.out.println ("Jumlah Total:"+(X+Y+Z));
}
}

class induk_anak() {
public static void main(String[] args) {
induk induk1=new induk();
anak anak1=new anaka();

System.out.println ("NILAI INDUK");
induk1.X=2;
induk1.Y=4;
induk1.tampilan();

System.out.println ("NILAI ANAK");
anak1.X=2;
anak1.Y=4;
anak1.Z=8;
anak1.tampilan();
anak1.hitungjumlah();
}
}


Hasil :

NILAI INDUK
Nilai X : 2
Nilai Y : 4

NILAI ANAK
Nilai X : 2
Nilai Y : 4
Nilai Z : 8

Jumlah Total : 14



“Multiple Inheritance” tidak diperkenankan di Java, tetapi ada cara lain untuk menurunkan beberapa kelas dalam satu class yaitu “Multilevel (inheritance) Hierarchy”

Contoh :

class induk {
.......
.......
}

class anak extends induk {
.......
.......
}

class cucu extends anak {
.......
.......
}


Keterangan :
Class cucu akan mempunyai sifat seperti yang dimiliki pada class anak dan class induk sekaligus.

7 komentar:

Unknown mengatakan...

lho kok yang multiple isinya ..... .... ...., maksude kepriwe inyong malah bingung.
http://trisnowlaharwetan.wordpress.com
http://triswlaharwetan.net

Anonim mengatakan...

Itu hanya format penulisan program saja. Krn kita tidak diperkenankan multiple inheritance, akan tetapi bisa kita akali dengan menurunkan beberapa kelas dalam satu kelas.
Pada contoh tersebut kelas cucu extends pada kelas anak. Karena kelas anak merupakan turunan dari kelas induk, maka kelas cucu merupakan turunan dari kelas anak dan kelas induk.

iftizamni mengatakan...

ngga mudeng ah, pusiing

iftizamni mengatakan...

he he, btw thx yah..

.:: al_fathz Production ::. mengatakan...

Saya datang ke sini malah jadi tambah pusing yach...

Rendra mengatakan...

gak jalan programnya.. pusing

Anonim mengatakan...

How do I make money? - Worktomakemoney
What is your minimum bet? It depends on งานออนไลน์ the casino, as is the player's selection. How do you 바카라 사이트 earn septcasino money? You'll win and, depending on