Saturday, December 20, 2008

Konsep OOP (Object Oriented Programming)


Polymorphism

Dasarnya di sebut OOP, dikarenakan OOP membagi program menjadi beberapa objek yang saling berinteraksi, yang memudahkan untuk pengorganisasian kode program, baik dalam pembuatan maupun maintenance. Misalnya ketika ada error atau modifikasi, lebih mudah untuk menelusurinya, tinggal tentukan di modul atau objek mana yang mau dimodifikasi, tanpa harus menelusuri modul atau objek yang lain. Di Java, objek berbentuk Class.
OOP memiliki 3 konsep yang menjadi ciri-cirinya, yaitu :
1. Encapsulation
2. Inheritance
3. Polymorphism
Dalam tulisan ini, yang dibahas lebih jauh adalah polymorphism. Untuk memahami polymorphism, sebelumnya kita harus tahu terlebih dahulu, apa itu encapsulation dan inheritance.

Encapsulation ( Pengkapsulan )
Konsep dari pengkapsulan adalah ‘membungkus’ nilai-nilai yang biasanya bersifat standar dari suatu objek. Dalam OOP pengkapsulan di wujudkan dalam bentuk ‘class’. Apabila ingin memanfaatkan nilai atau method/fungsi dari class tersebut cukup dipanggil nilai/method dari class yang bersangkutan tanpa harus tahu proses apa saja yang terjadi didalamnya.
Sebagai contoh : Dibuat suatu class ‘Kendaraan’, dimana didalamnya ada method ‘klakson’ yang fungsinya mengeluarkan suara dengan parameter volume untuk besar kecilnya suara yang dihasilkan.
Ketika program lain ingin menggunakan method klakson, cukup memanggil method klakson, dengan volume tertentu untuk menghasilkan suara, tanpa harus tahu proses-proses yang dilakukan untuk menghasilkan suara, seperti mengirimkan sinyal ke speaker dll.

Inheritance (Pewarisan )
Pewarisan adalah membuat class yang masih memiliki spesifikasi yang sama dengan class yang sudah ada, Class yang baru disebut class turunan/subclass, sementara class yang sudah ada disebut dengan class induk/superclass. Subclass akan memiliki ( mewarisi ) semua sifat dan ciri-ciri dari superclass.
Sebagai contoh : Dibuat sebuah class bernama poligon yang memiliki panjang, lebar dan warna serta memiliki method cetak, kemudian dibuat pula class segitiga dan class segiempat yang menginduk (mewarisi ) poligon, dalam java menggunakan key ‘extends’. Sehingga baik segitiga maupun segiempat memiliki panjang,lebar warna serta method cetak.

Polymorphism
Polymorphism memungkinkan suatu objek dapat dimodifikasi sedemikian rupa, seperti menambah sifat, memodifikasi method bahkan di bentuk ulang. Polymorphism memungkinkan program berkembang terus menerus baik saat pengembangan awal maupun pada saat ingin menambahkan kemampuan baru.
Polymorphism ada 2 jenis :
1. Overloading
Overloading digunakan untuk menambah atau mengurangi sifat-sifat dari suatu objek ataupun method.
Sebagai contoh : Class ‘poligon’ memiliki method cetak untuk mencetak panjang, lebar dan warna dari poligon, kemudian dibuat class ‘segitiga1’ yang mewarisi poligon, tetapi untuk method cetak di modifikasi dengan mengganti parameter panjang dan lebar menjadi alas dan tinggi serta menghilangkan parameter warna. Sehingga di class segitiga1 method cetak memiliki 2 bentuk yaitu dengan 3 parameter dan 2 parameter.
Listing : Poligon.java
public class Poligon{
int panjang,lebar;
String warna;
public void cetak (int panjang,int lebar,String warna){
System.out.println("Panjang :" + panjang);
System.out.println("Lebar : " + lebar);
System.out.println("Warna :" + warna);
}}










Listing : Segitiga1.java
class Segitiga1 extends Poligon {
public void cetak(int alas,int tinggi){

System.out.println("Alas : " + alas);
System.out.println("Tinggi : " + tinggi);
}
public static void main (String[]args){
Segitiga1 a = new Segitiga1();
a.cetak(4,6);
}}













Hasil eksekusi :







coba tambahkan : a.cetak(4,6,"merah"); simpulkan mengapa hasilnya seperti itu ? ( inilah keuntungan / kelebihan overloading :D )

2. Overriding
Overriding adalah menuliskan kembali method yang sama yang telah ditulis sebelumnya, ataupun method hasil pewarisan. Sehingga ketika dieksekusi, method yang sudah dirubah yang dijalankan. Akan tetapi apabila mengoverride hasil pewarisan, ketika menjalankan method dari induknya yang dijalankan adalah method yang di induk, bukan method yang sudah di override. Karena pewarisan sifatnya kebawah bukan ke atas.

Sebagai contoh :
Class ‘Segitiga2’ mewarisi class ‘segitiga1’ kemudian method cetak di tulis ulang ( di override ) dengan menambahkan mencetak luas segitiga, ketika dieksekusi yang dijalankan adalah method cetak yang sudah di override. Akan tetapi ketika method segitiga1.cetak yang dipanggil, ketika di eksekusi yang dijalankan adalah cetak yang di segitiga1, bukan cetak yang di override di segitiga2.

Listing : Segitiga2.java
class Segitiga2 extends Segitiga1 {
void cetak(int alas,int tinggi){
System.out.println("Alas : " + alas);
System.out.println("Tinggi : " + tinggi);

System.out.println("Luas : " + alas * tinggi / 2);
}
public static void main (String[]args){
Segitiga2 b = new Segitiga2();
b.cetak(7,4);

}}












Hasil eksekusi :







Sumber :

http://www.google.co.id

http://www.debreuil.com/docs/ch01_Overriding.htm

http://netindonesia.net/forums/t/5825.aspx

http://blog.galihsatria.com




No comments: