penjelasan
dari 3 karakteristik metodologi berorientasi objek
Karakteristik metodologi berorientasi
objek :
·
Encapsulation
·
Inheritance
·
Polymorphism
Metodologi pengembangan system berorientasi objek ada tiga karakteristik
utama, yaitu
Encapsulation (pengkapsilan) merupakan daasar untuk
pembatasan ruang lingkup program terhadap data yang dip roses. Prosedur dan
data atau fungsi atau method di kemas secara bersamaan dalam suatu objek,
sehingga prosedur atau fungsi lain dari luar tidak dapat mengaksesnya. Data
terlindung dari prosedur lain atau prosedur yang ada didalam objek itu sendiri.
Encapsulation adalah proses pemaketan data
bersama metode-metodenya dimana hal ini bermanfaat untuk menyembeunyikan
rincian-rincian implementasi dari pemakai. Dalam sebuah objek yang mengandung
variabel-variabel dan methodmethod, dapat ditentukan hak akses pada sebuah
variabel atau method dari objek. Pembungkusan variabel dan method dalam sebuah
objek dalam bagian yang terlindungi inilah yang disebut denganenkapsulasi.
Bagian eksternal dari sebuah objek
sering disebut sebagai interface atau antarmukaterhadap
objek lain. Karena objek lain harus berkomunikasi dengan obejk itu hanya
melalui antarmuka maka bagian internal objek dapat dilindungi dari gangguan
luar. Karena program luar tidak mengakses implementasi internal objek, maka
implementasi internal dapat berubah tanpa mempengaruhi bagian-bagian program
lain.
Di dalam Java,
pengkapsulan dapat dilakukan dengan pembentukan kelas-kelas
menggunakan keyword class. Sedangkan
penyembunyian informasi dapat dilakukan dengan pengendalian tgerhadap
pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan default,
private, protected, dan public. Penyembunyian informasi
deilakukan dengan implementasi penerapan kendari menggunakan keywordprivate dan protected pada
elemen data.
Inheritance
Inheritance (pewarisan) adalah teknik
yang menyatakan bahwa anak dari objek akan mewarisi data/atribut dan metoda
dari induknya langsung. Atribut dan metoda dari objek induk diturunkan kepada
anak objek, demikian seterusnya. Pendefinisian objek dipergunakan untuk
membangun suatu hirarki dari objek turunannya, sehingga tidak perlu membuat
atribut dan metoda lagi pada anaknya, karena telah mewarisi sifat induknya.
Inheritance mempunyai arti bahwa atribut dan operasi yang dimiliki bersama
diantara kelas yang mempunyai hubungan secara hirarki. Suatu kelas dapat
ditentukan secara umum, kemudian ditentukan secara spesifik menjadi sub kelas.
Setiap subkelas memiliki hubungan atau mewarisi semua sifat yang dimiliki oleh
kelas induknya, dan ditambah dengan sifat unik yang dimilikinya. Sifat yang
dimiliki oleh kelas induknya tidak perlu diulang dalam setiap subkelas. Sebagai
contoh, ScrollingWindows dan FixedWindows adalah subkelas dari Windows. Kedua
subkelas mewarisi sifat yang dimiliki oleh Windows. ScrollingWindows
menambahkan Scroll Bar dan sebuah Offset. Kemampuan untuk menghilangkan
beberapa faktor dari superkelas yang bersifat umum dan memasukkannya ke dalam
kelas induknya serta mewariskan sifat dari kelas induknya, mengurangi
pengulangan dalam desain dan pemrograman. Hal ini merupakan keuntungan utama
dari sistem berorientasi objek.
Polymorphism (polimorfisme) yaitu konsep
yang menyatakan bahwa suatu yang sama dapat mempunyai bentuk dan prilaku berbeda.
Polimorfisme mempunyai arti bahwa operasi yang sama mungkin mempunyai perbedaan
dalam kelas yang berbeda. Operasi MOVE mungkin mempunyai perbedaan dalam kelas
windows atau kendaraan bermotor. Suatu implementasi yang spesifik dari sifat
polimorfisme, mungkin dapat mempunyai lebih dari suatu metoda.
Pada objek mobil, walupun minibus dan truk
merupakan jenis objek mobil yang sama, namun memiliki juga perbedaan. Misalnya
suara truk merupakan jenis objek mobil yang sama, namun juga memiliki juga perbedaan.
Misalnya suara truk lebih keras dari pada minibus.
Hal ini juga berlaku pada objek anak
(child) melakukan metode yang dama dengan algoritma berbeda dari objek
induknya. Hal ini yang disebut polymorphism, konsep atau teknik dasar lain
adalah ruang lingkup/ pembatasan. Artinya setiap objek mempunyai ruang lingkup
kelas, atribut, dan metode yang dibatasi.
Motodologi non objek menggunakan beberapa
alat untuk menggambarkan model, seperti : data flow diagram, entity
relationship diagram, dan structure chart. Sedangkan pada metodologi
berorientasi objek menggunakan satu jenis model dari tahap analisis sampai
implementasi, yaitu object diagram (diagram objek).
1.
Berikan contoh sederhana
implementasi dari 3 karakteristik diatas ke dalam bahasa pemrograman
berorientasi objek.
1. ENCAPSULATION
Berikut
adalah contoh programnya.
public class Kapsul{
private double panjang; // attribute yang
disembunyikan
private double lebar; // attribute yang disembunyikan
private double tinggi; // attribute yang disembunyikan
public Kapsul(){
double panjang = 0;
double lebar = 0;
}
private double luas(double p, double l) { //attribute
yang di enkapsulasi
return p*l;
}
public void setPanjang(double panjang) {
this.panjang = panjang;
}
public void setLebar(double lebar) {
this.lebar = lebar;
}
public double getPanjang() {
return panjang;
}
public double getLebar() {
return lebar;
}
public double getLuas() {
return luas(panjang, lebar);
}
}
class Encapsulasi{
public static void main(String[] args) {
Kapsul pp = new Kapsul();
pp.setPanjang(50);
pp.setLebar(100);
System.out.println("Panjang : "+
pp.getPanjang());
System.out.println("Lebar : "+
pp.getLebar());
System.out.println("Luas : "+ pp.getLuas());
}
}
Output
Program
Dari program di atas dapat dilihat bahwa deklarasi
variabel disembunyikan dan pada saat dilakukan proses perkalian untuk mencari luas dilakukan
enkapsulasi. Program di atas akan menghasilkan 2 class yaitu : class
Kapsul dan class Encapsulasi. Kedua classini
berbeda. Di mana class Kapsul merupakan kelas untuk
pembentukan Objek dan pemrosesan dalam pencarian luas persegi panjang.
Sedangkan untuk class Encapsulasimerupakan kelas untuk menampilkan
hasil dari proses tersebut.
Inheritance
Sebagai contoh, misalkan ada sebuah
kelas Titik yang mempunyai kelas turunan Titik3D:
class Titik
private integer x
private integer y
Titik()
x < 0
y < 0
{end Titik}
public getX() -> integer
-> x
{end getX}
public getY() -> integer
-> y
{end getY}
{end class}
class Titik3D: Titik
private integer z
Titik3D()
z <- 0
{end Titik3D}
public getZ() -> integer
-> z
{end getZ}
{end class}
Keterkaitan antara kelas Titik dan Titik3D adalah kelas
Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik
disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas
turunan atau derived classatau subclass.
Pada contoh di atas, ketika kelas
Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada
pada kelas Titik walau pada kode programnya metode itu tidak dituliskan,
misalkan sebagai berikut:
Titik3D p <- new Titik3D()
integer x <- p.getX()
integer y <- p.getY()
integer z <- p.getZ()
Keuntungan dari pewarisan adalah tidak perlu mengutak
atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena
tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya.
Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan
destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang
sama dengan pada kelas dasar.
Ketika sebuah kelas turunan dibuat
objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil
terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga
saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan
baru kemudian destruktor kelas dasar dijalankan.
Contoh program
java nya :
Simpan
dengan nama BeautyfullMahasiswa.java
public
class BeautyfullMahasiswa extends Mahasiswa{
public
void printNama(){
System.out.println(“Hallo, saya
Mahasiswa yg cantik n baik”);
Super.printNama();
}
}
Simpan
dengan nama Main.java
public
class Main{
public
static void main(String[] args]) {
BeautyfullMahasiswa
mhs = new BeautyfullMahasiswa();
mhs.setNim(“09530524”);
mhs.setNama(“Afrida
Asna”);
mhs.printNim();
mhs.printNama();
}
}
Kemudian
compile dan run.
C:\>javac BeautyfullMahasiswa.java
C:\>javac Main.java
C:\>java
Main
Kontruksi
objek mahasiswa
Nim:09530524
Hallo,
saya Mahasiswa yg cantik n baik
Nama:
Afrida Asna
C:\>
Terlihat
bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa
teks tambahan, sehingga method printNama(), pada class BeautyfullMahasiswa,
memiliki perilaku yang berbeda dengan class Mahasiswa.