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.

KEUNTUNGAN PRINSIP ENCAPSULATION (ENKAPSULASI)

Enkapsulasi adalah bagaimana kita “membungkus” data dan method yang menyusun kelas sehingga kelas dapat dipandang sebagai suatu modul. Disini juga menentukan tingkat aksesibilitas dari masing-masing data dan method serta menyembunyikan detail implementasinya dari “dunia luar” ( data,method,kelas, interface, atau package lain yang mungkin berinteraksi dengan modul tersebut ).


Keuntungan menerapkan prinsip enkapsulasi :

  • Bersifat Independen, dapat digunakan pada bagian manapun pada progra
  • Bersifat Transparan, bila kita melakukan modifikasi pada suatu model, maka perubahan juga akan dirasakan juga oleh bagian program yang menggunakan modul tersebut.
  • Menghindari efek di luar perencanaan

Modul hanya akan berinteraksi dengan bagian program lainnya melalui veriabel-variabel input/output yang telah didefinisikan sebelumnya, sehingga akan mereduksi kemungkiann adanya hasil imbas pemrosesan yang diluar perencanaan semula.

APA SICH POLYMORPHISM??????

Polimorfi adalah sesuatu yang memiliki banyak bentuk, dalam pemrograman dapat diartikan sebagai modul yang memiliki nama sama namun memiliki behaviour yang yang berbeda sehingga listing code implementasinya berbeda.

Contoh Ilustrasi : Penggunaan kata “mentah”
- “Sayuran itu masih mentah, belum dimasak”
- “Pukulan petinju itu dapat dimentahkan lawannya”
- “Gagasan ini masih mentah sehingga butuh pembahasan lagi”

Sehingga kata “mentah” dapat diaplikasikan pada berbagai obyek dan dapat diinterpretasikan ke dalam beberapa makna.