3 Pilar dalam Pemrograman Berorientasi Objek

Pemrograman Berorientasi objek (PBO) (Object Orientation Programming(OOP)) merupakan konsep pemrograman yang membagi program menjadi objek-objek yang nantinya dapat terhubung atau saling berinteraksi satu sama yang lainnya.Dalam hal ini OOP memiliki 3 pilar penting yang memberikan nilai plus sebagai bahasa pemrograman yang sudah familiar di dunia pemroraman.antara lain ;

Inheritance (pewarisan) merupakan proses pewarisan data dan method dari kelas induk(Super Class) ke kelas anak(Sub Class). Dalam inheritance terdapat istilah overriding dan overload, apa itu? cari sendiri!! hehe. overriding itu kemampuan subClass untuk memodifikasi atau meredefinisi data atau method dari superClass. proses ini nantinya akan mengakibatkan kepada kedua kelas; subClass dan superClass. kalo overloding itu kemampuan dalam membuat dua atau lebih method dengan nama yang sama dalam satu kelas, namun memiliki jumlah parameter atau tipe argumentnya berbeda.bila kita membuat 2 kelas maka kita boleh meanggabungkan 2 kelas tersebut dengan cara “inheritance” atau “friend” kalau kita menggabungkan dengan cara inheritance, maka kita bisa memasuki anggota kelas lain baik yang bertype “public” atau “protected”, sedangkan yang bertype private anda tidak bisa memasukinya.Untuk mendapatkan turunan dari superclass, kita dapat menggunakan kata kunci extend. Untuk mempermudah mari kita lihat contoh program dibawah ini,

public class Truk{
// cunstructor dari kelas Truk
public Truk() {
System.out.println(“cunstructor kelas Truk..”);
}
// atribut dari kelas Truk
private String tipeTruk;
private String warna;
// method dari kelas Truk
public void hidupkan() {
System.out.println(“mesin truk dihidupkan..”);
}
public void gas() {
System.out.println(“truk melaju…”);
}
public void rem() {
System.out.println(“truk melambat..”);
}
public void matikan() {
System.out.println(“mesin truk dimatikan..”);
}
}

Kemudian kita buat kelas lain yaitu kelas Hino. Karena Hino masih merupakan salah satu jenis dari Truk, maka kita tak perlu menuliskan kembali method dan atribut yang kiranya umum dimiliki Truk. Kita hanya perlu menurunkan kelas Hino dari kelas Truk dengan menggunakan kata kunci extend. Sebagai contoh,

public class Hino extend Truk {
// constructor dari kelas Hino
public Hino() {
System.out.println(“constructor dari Hino”);
}
// kode lain yang dibutuhkan
}

Walaupun deklarasi kelas Hino hanya sesederhana itu, namun sebenarnya Hino secara otomatis telah memiliki method dari kelas Truk seperti method gas, rem, matikan, dan hidupkan. Serta atribut seperti tipe dan warna. Sebagai contoh, kita buat kelas baru untuk mengimplementasikan hasil pewarisan tadi.

public class inheritanceTruk{
public void main (String []args) {
Truk truk = new Truk();
Hino hino = new Hino();
System.out.println(“panggil method gas dan rem milik truk”);
truk.gas();
truk.rem();
System.out.println(“panggil method gas dan rem milik hino hasil pewarisan”);
hino.gas();
hino.rem();
}
}

Kemudian compile dan jalankan kelas polimorfisme Truk, maka kita akan mendapatkan output sebagai berikut :

cunstructor kelas Truk..
cunstructor kelas Hino..
panggil method gas dan rem milik truk
truk melaju…
truk melambat…
panggil method gas dan rem milik hino hasil pewarisan
truk melaju…
truk melambat…

Dari output diatas terlihat bahwa secara implisit, kelas Hino telah memiliki method rem dan gas seperti halnya kelas Truk. Method tersebut didapatnya dari hasil pewarisan dari kelas Truk.

Polimorfisme
Polimorfisme memungkinkan sebuah kelas untuk memiliki banyak bentuk yang berbeda. Maksudnya dengan satu method yang sama, kita bisa mendapatkan fungsi yang berbeda. Untuk mempermudah, kita ambil contoh dari kelas Truk dan Hino sebelumnya. Misalkan pada kelas Hino, kita tambahkan method gas dan rem tersendiri yang memiliki fungsi berbeda dari kelas Truk.

public class Sedan extend Truk {
// constructor dari kelas Hino
public Hino() {
System.out.println(“constructor dari Hino”);
}
// method gas sendiri yang dimiliki oleh kelas Hino
public void gas() {
System.out.println(“truk Hino melaju cepat…”);
}
public void rem() {
System.out.println(“truk Hino melambat..”);
}
}

Kemudian untuk membuktikan perbedaan fungsinya, kita membuat satu kelas lagi untuk mengimplementasikan kedua kelas tersebut.

public class polimorfismeTruk {
public static void main (String []args) {
Truk truk = new Truk();
Hino hino = new Hino();
System.out.println(“panggil method gas dan rem milik truk”);
truk.gas();
truk.rem();
System.out.println(“panggil method gas dan rem milik hino”);
hino.gas();
hino.rem();
}
}

Kemudian compile dan jalankan kelas polimorfismeTruk, maka kita akan mendapatkan output sebagai berikut :

cunstructor kelas Truk..
cunstructor kelas Hino..
panggil method gas dan rem milik Truk
truk melaju…
truk melambat…
panggil method gas dan rem milik hino
truk Hino melaju cepat…
truk Hino melambat…

terlihat bahwa output dari method gas dan rem milik kelas Truk dan Hino berbeda. Method gas dan rem milik Hino akan mengacu pada kelas Sedan itu sendiri walaupun sebenarnya kelas Hino telah diwarisi method gas dan rem milik kelas Truk. Inilah yang dinamakan polimorfisme. Polimorfisme mengubah sifat menurut objek sesuai acuan dan secara otomatis akan menjalankan method yang tepat dari objek yang menjadi acuan tersebut.

Encapsulation
Inti dari konsep encapsulation adalah menyembunyikan kompleksitas suatu kelas dari kelas lain yang mengaksesnya. Sebagai contoh, kita ambil kelas Truk dan memodifikasinya untuk mengimplementasikan encapsulation.

public class Truk {
// cunstructor dari kelas Truk
public Truk() {
System.out.println(“cunstructor kelas Truk..”);
}
// atribut dari kelas Truk
private String tipeTruk;
private String warna;
/************************************
*  method dari kelas Truk sebelumnya
***********************************/
// method accessor kelas Truk
public String getTipeTruk() {
return tipeTruk;
}
public String getWarna() {
return warna;
}
// method mutator kelas truk
public void setTipeTruk (String tipeTruk) {
this.tipeTruk = tipeTruk;
}
public void setWarna (String warna) {
this.warna = warna;
}
}

Perhatikan bahwa atribut dari tipeTruk dan warna memiliki access modifier private yang berarti bahwa atribut tersebut tidak dapat diakses dari kelas manapun selain kelas Truk. Namun atribut masih tetap dapat dipakai dengan menggunakan accessor dan mutator method. Inilah contoh sederhana dalam menyembunyikan informasi suatu kelas dari kelas lain atas dasar penyederhanaan kompleksitas pemrograman. Kelas lain tidak perlu tahu kompleksitas desain dan struktur dari suatu kelas yang menjadi internal fungsi dari kelas tesebut, namun tetap bisa mendapatkan informasi yang diperlukan.

Thankyou ^_^

3 Balasan ke 3 Pilar dalam Pemrograman Berorientasi Objek

  1. […] versi lengkap disini […]

  2. ul1n mengatakan:

    makasih banget buat post yang 1 ini, thanks before

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: