Oleh : Bernadus Very Christioko ( P31.2008.00565 )

Konsep Pemrograman Berorientasi Obyek
• Object
• Class
• Inheritance
• Interface
• Package
• Encapsulation
• Polymorphism

Object
Object merupakan kunci untuk memahami konsep pemrograman berorientasi obyek. Di dalam dunia nyata banyak sekali kita temui sebuah object, seperti contoh : mobil, sepeda, radio, televisi, anjing, kucing, dll.

Obyek dalam dunia nyata selalu mempunyai dua karakteristik yaitu status dan perilaku, contoh : Televisi mempunyai status ( on, off, volume, channel tv ) dan perilaku ( matikan, hidupkan, keraskan volume, kecilkan volume, cari channel tv, ganti channel tv ).

Obyek dalam dunia pemrograman juga mempunyai dua karakteristik yaitu variabel/field sebagai status dan method sebagai perilaku dari sebuah object. Obyek menyimpan statusnya pada variabel dan mendefinisikan perilakunya melalui sebuah method. Method akan mengakses nilai dari field obyek dan sebagai mekanisme utama komunikasi antar obyek, sehingga dunia luar tidak perlu mengetahui bagaimana obyek dapat saling berkomunikasi melalui sebuah method.

Photobucket

Sebagai contoh obyek televisi mempunyai status ( on, off, volume, channel tv ) dan perilaku ( matikan, hidupkan, keraskan volume, kecilkan volume, ganti channel tv ) sehingga Obyek lain seperti contoh obyek orang yang ingin berkomunikasi dengan obyek televisi hanya perlu memanggil m ethod yang ada pada obyek televisi, contoh: jika ingin menghidupkan televisi  panggil method ‘hidupkan’, jika ingin mengeraskan volume  panggil method ‘keraskan volume’, jika ingin mengganti channel tv  panggil method ‘ganti channel tv’.

Class
Dalam dunia nyata sering kita menemukan obyek televisi yang beragam mulai dari warna, bentuk, pembuat, dll. Tentu saja semua televisi dibuat dengan menggunakan cetakan/blueprint yang sama oleh karena itu semua televisi mempunyai komponen yang sama. Dalam dunia program, televisi yang berbeda-beda tersebut merupakan turunan/anak dari class obyek ‘televisi’.

Berikut pendefinisian obyek Televisi ke dalam class di Java


/* Nama file : Televisi.java */
public class Televisi {

// variabel class Televisi
int on = 1;
int off = 0;
int volume = 0;
int channel = 0;
int status = 0;

// method class Televisi
void HidupkanTV(){
if ( status == off){
status = on;
}
}
void MatikanTV(){
if ( status == on){
status = off;
}
}
void KeraskanVol(){
volume = ++volume;
}
void KecilkanVol(){
volume = --volume;
}
void GantiChannel(int NoChannel){
channel = NoChannel;
}
void CetakStatus(){
System.out.println("Status Televisi : "+status);
System.out.println("Volume Televisi : "+volume);
System.out.println("Channel Televisi : "+channel);
System.out.println("----------------------");
}
}


Berikut pembuatan obyek ‘Tvku’ berdasarkan class ‘Televisi’ dan pengaksesan methodnya.

/* Nama file : TelevisiBeraksi.java */
public class TelevisiBeraksi {
public static void main(String[] args){

// ciptakan obyek Tvku dari class Televisi
Televisi Tvku = new Televisi();

// panggil method yang ada pada obyek Tvku
Tvku.CetakStatus();
Tvku.HidupkanTV();
Tvku.KeraskanVol();
Tvku.KeraskanVol();
Tvku.CetakStatus();
Tvku.GantiChannel(3);
Tvku.GantiChannel(10);
Tvku.MatikanTV();
Tvku.CetakStatus();
}
}

Dan jika dijalankan maka output dari program diatas sbb:
Photobucket

Inheritance
Berbagai macam bentuk televisi yang ada pasti mempunyai beberapa ciri yang sama satu sama lain, contoh TV tabung, TV LCD, TV layar datar, semua tipe televisi ini pasti mempunyai tombol ON/OFF, tombol Volume, tombol Channel. Terkadang pada beberapa tipe tedapat beberapa fitur baru yang ditambahkan untuk melengkapi fungsi Televisi tersebut, seperti contoh : Video/DVD player port, USB port, Camera port, Speaker port, dll.

Dalam pemrograman berorientasi obyek diperbolehkan menurunkan variabel dan method yang biasa digunakan dalam class induk/parent. Dalam contoh dibawah Televisi menjadi superclass dari obyek TV tabung, TV LCD, TV layar datar dan setiap obyek yang diturunkan dari superclass dapat mempunyai subclass-subclass lain dibawahnya sebagai class turunan/anak.

Photobucket

Untuk membuat subclass dari class Televisi gunakan keyword extends diikuti oleh nama class induk/parent.

Class nama_subclass extends nama_superclass
Contoh : TVLcd.java

/* Nama file : TVLcd.java */
public class TVLcd extends Televisi{
// field baru dan method baru untuk mendefinisikan class TV LCD
// letakkan disini
}

Contoh diatas akan menurunkan semua field dan method yang ada pada superclass Televisi ke subclass TVLcd yang baru

Interface
Obyek berkomunikasi dengan dunia luar menggunakan method. Method berfungsi sebagai antarmuka/interface dengan dunia luar, seperti contoh : tombol remote televisi, remote berfungsi sebagai interface antara orang dengan alat elektronik televisi. Jika TV dalam keadaan mati kita menekan tombol ON maka TV akan menyala, begitu juga sebaliknya. Jika kita menekan tambol volume (+), maka volume TV akan bertambah keras, begitu juga sebaliknya. Dengan kata lain, Interface merupakan sekelompok method kosong dari sebuah class. Method dari class Televisi akan tampak seperti berikut :

/* Nama file : TV.java */
public interface TV {
// variabel class Televisi
public static final int on = 1;
public static final int off = 0;


// method class Televisi
public abstract void HidupkanTV();

public abstract void MatikanTV();

public abstract void KeraskanVol();

public abstract void KecilkanVol();

public abstract void GantiChannel(int NoChannel);

public abstract void CetakStatus();

}

Untuk menggunakan interface TV diatas gunakan keyword implements pada pembuatan class.

/* Nama file : TVku.java */
public class TVku implements TV{
// variabel class
int status = 0;
int volume = 0;
int channel = 0;

// method class Televisi
void HidupkanTV(){
if ( status == off){
status = on;
}
}
void MatikanTV(){
if ( status == on){
status = off;
}
}
void KeraskanVol(){
volume = ++volume;
}
void KecilkanVol(){
volume = --volume;
}
void GantiChannel(int NoChannel){
channel = NoChannel;
}
void CetakStatus(){
System.out.println("Status Televisi : "+status);
System.out.println("Volume Televisi : "+volume);
System.out.println("Channel Televisi : "+channel);
System.out.println("----------------------");
}
}


Package
Package merupakan nama dari sekelompok class dan interface yang saling terkait. Package seperti layaknya sebuah folder, kita dapat mengelompokkan class-class pada folder yang berbeda-beda sesuai dengan keterkaitannya. Pada bahasa pemrograman Java, sangat dimungkinkan sebuah software tersusun dari ribuan class, oleh karena itu sangat perlu untuk mengelompokkan ke dalam package sehingga mudah dalam melakukan pengembangan. Berikut cara pendefinisian package pada java :

package Tugas;

public class Televisi {

}


Encapsulation
Encapsulation merupakan teknik yang membuat variabel/field class menjadi bersifat privat dan menyediakan akses ke variabel/field melalui public method. Jika field di deklarasikan sebagai private, maka field ini tidak bisa diakses oleh siapapun diluar class, dengan demikian field disembunyikan di dalam class. Dengan kata lain encapsulation juga berfungsi untuk menyembunyikan data.

Encapsulation juga merupakan tembok penghalang yang mencegah kode atau data diakses oleh data lain di luar class. Akses ke kode dan data di kontrol melalui interface. Manfaat utama teknik encapsulation adalah kita mampu memodifikasi kode tan[a merusak kode yang telah digunakan pada class lain.
Contoh :

/* Nama file : Encapsulasi.java */
public class Encapsulasi {

private String nama;
private int umur;

public int getUmur(){
return umur;
}
public String getNama(){
return nama;
}
public void setUmur( int newUmur){
umur = newUmur;
}
public void setNama(String newNama){
nama = newNama;
}
}

Method public merupakan akses ke field class yang disediakan diluar class. Method yang disediakan diatas adalah method ‘set’ dan ‘get’. Sehingga jika class lain jika ingin mengakses field harus melalui method ‘set’ dan ‘get’.
Variabel pada class Encapsulasi dapat di akses dengan cara berikut.


/* Nama file : TesEncapsulasi.java */
public class TesEncapsulasi {
public static void main(String[] args){
Encapsulasi encap = new Encapsulasi();
encap.setNama("Joko");
encap.setUmur(20);
System.out.println("Nama : " + encap.getNama());
System.out.println("Umur : "+ encap.getUmur());
}
}

Jika dijalankan outputnya seperti di bawah ini :
run:
Nama : Joko
Umur : 20
BUILD SUCCESSFUL (total time: 7 seconds)

Polymorphism
Polymorphism merupakan kemampuan obyek untuk menjadi berbagai bentuk. Yang paling umu terjadi adalah ketika referensi class parent digunakan untuk class anak.Penting untuk mengetahui bahwa kemungkinan satu-satunya cara untuk mengakses obyek melalui referensi variabel. Referensi variabel hanya dapat dideklarasikan ke dalam satu tipe data. Setelah dideklarasikan,tipe referensi variabel tidak dapat diubah.

Referensi variabel dapat di turunkan ke obyek yang lain, asal tidak dideklarasikan dengan keyword ‘final’. Tipe dari referensi variabel dapat menentukan method yang dapat mengaksesnya. Referensi variabel dapat merujuk kepada objek yang dinyatakan atau subtype dari tipe yang dideklarasikan. Referensi variabel dapat dinyatakan ke dalam kelas atau interface.

Contoh :

public interface Vegetarian{}
public class Binatang{}
public class Rusa extends Binatang implements Vegetarian{}

Sekarang class Rusa merupakan polymorphism karena merupakan turunan dari banyak object. Kesimpulan dari class Rusa diatas sebagai berikut:

• Rusa ADALAH Binatang
• Rusa ADALAH Vegetarian
• Rusa ADALAH Rusa
• Rusa ADALAH Object

Ketika kita ingin mereferensikan obyek variabel Rusa, maka langkah berikut adalah benar :

Rusa r = new Rusa();
Binatang b = r;
Vegetarian v = r;
Object o = r;

Semua referensi variabel r,b,v,o merujuk ke obyek Rusa yang sama.

Referensi :
1. The Java Tutorial - http://java.sun.com/docs/books/tutorial/index.html
2. Java Tutorial - http://www.tutorialspoint.com/java/index.htm

Posted by B. Very Christ 19 August 2009