Seorang programmer tentu sudah terbiasa memandang suatu aplikasi ataupun kelas dan interface referensi (API) sebagai suatu modul yang terbungkus rapi. Kita tidak perlu mengetahui implementasi (source code) dari modul-modul tersebut, yang perlu kita ketahui hanyalah variabel/peubah yang menjadi input atau output program tersebut, serta bagaimana ia berinteraksi dengan “dunia luar”.
Pengkapsulan adalah bagaimana kita me-“wrapping” atau membungkus data dan method yang menyusun kelas sehingga kelas tersebut bisa dipandang sebagai suatu modul. Termasuk di sini adalah menentukan hak akses dunia luar terhadap attribute dan method dalam suatu kelas. Dalam dunia pemrograman disebut “Information Hiding”.Java menggunakan 3 eksplisit keyword untuk setting batasan / hak akses dunia luar terhadap suatu kelas, yaitu private, protected, dan public.Private berarti tidak seorang pun di “dunia luar” boleh mengaksesnya, jika ia berupa atribut, maka akses dari luar hanya bisa dilakukan melalui method, yang tentu saja, method itu tidak bersifat private dunks….
Contoh neh…:
Kita punya kelas Resep.
class Resep{
//atribut private ini tidak bisa diisi langsung dari luar kelas..
private String jenis;
private String namakue;
//konstruktor...
Resep(String n){
this.namakue=n;
}
void isiJenis(String j){
this.jenis=j;
System.out.print(this.namakue+" itu “+this.jenis);
}
//function...
String kadaluarsa(){
String tahan="";
if (jenis.equals("kue basah")){
tahan=" -- > cepet kadaluarsa";
}else{
tahan=" --> lama kadaluarsanya..";
}
//nilai yang dikembalikan..
return tahan;
}
}
Kelas di atas akan diturunkan menjadi kelas Basah, yaitu berisi sifat kue basah.
Kita akan mencoba langsung mengisikan atribut jenis pada kelas parent-nya.
class Basah extends Resep{
Basah(String n){
super(n);
this.jenis="kue basah";
}
}
Apa yang terjadi ketika kita kompilasi ???
F:\”data samson”\modul\modultutorialjava>javac Basah.java
Basah.java:5: jenis has private access in Resep
this.jenis="kue basah";
^1 error
Error di atas terjadi karena si turunan berusaha langsung mengakses atribut private yang dipunya oleh parent-nya. Gimana cara mengaksesnya? Ya harus pakai method donk, nah, seperti ini deh ☺
class Basah extends Resep{
Basah(String n){
super(n);
//methodnya...
isiJenis("kue basah");
}
}
}Kue tart adalah jenis kue basah.
class Tart{
public static void main(String args[]){
Basah tart=new Basah("Kue Tart");
System.out.println(tart.kadaluarsa());
}
}Jika dikompilasi dan dirun akan menjadi seperti ini :
F:\”data samson”\modul\modultutorialjava>javac Tart.java
F:\”data Samson”\modul\modultutorialjava>java Tart
Kue Tart itu kue basah -- > cepet kadaluarsa
Protected hampir sama dengan private, hanya saja, ia bisa diakses oleh kelas bawahannya tanpa menggunakan perantara, jadi bisa secara langsung diakses asalkan memenuhi syarat :
Dalam satu kelas itu sendiri, atau kelas bawahannya, ia tidak bisa diakses oleh kelas yang tidak ada hubungan dengan kelas itu sama sekali.
Syarat dan ketentuan berlaku :
Akses tidak melalui instansiasi / pembentukan object, kalau melalui instansiasi, protected hanya tidak bisa diakses ketika dia berada pada package yang berbeda.
Contoh :
//disimpan dalam folder satu
package satu;
public class MakhlukHidup{
protected String nyawa;
}
//disimpan dalam folder dua
package dua;
import satu.*;
public class Tumbuhan{
public Tumbuhan(String n){
MakhlukHidup mh=new MakhlukHidup();
mh.nyawa="Roh...";
}
}
Ketika dicompile, wew…apa yang terjadi ???
F:\data samson\modul\modultutorialjava\waduh>javac dua\Tumbuhan.java
dua\Tumbuhan.java:6: nyawa has protected access in satu.MakhlukHidup
mh.nyawa="Roh...";
^
1 error
Hm…, ga bisa diakses ya? Ya iya lah,…nah, coba ganti modifier protected pada atribut nyawa dengan modifier Public, Pasti bisa diakses, nah, sekarang tahu kan perbedaan public sama protected ???
Silahkan mencoba dan mempelelajarinya..
Label:
Java Moklet
Pengkapsulan
Zacky Andritera
Jumat, 02 Desember 2011
Langganan:
Posting Komentar (Atom)
Labels
- Attitude (1)
- Java (3)
- Java Moklet (19)
- JAVA Project (4)
Blog Archive
Popular Posts
-
Beberapa hari terakhir ini, gw ditanyain terus tentang caranya connect java swing ke jasper report. Dan konyolnya, gw juga udah lupa caran...
-
Pada postingan sebelumnya, kita telah membahas cara membuat IPK Counter tanpa tampilan antarmuka grafis (GUI), kali ini kita akan membuat ...
-
Tujuan Pada modul ini, Anda akan belajar bagaimana mengendalikan events triggered ketika user berinteraksi dengan aplikasi GUI Anda. Setel...
-
Seorang programmer tentu sudah terbiasa memandang suatu aplikasi ataupun kelas dan interface referensi (API) sebagai suatu modul yang terbun...
-
1. Static (satu-satunya*) Selama ini, yang kita ketahui adalah suatu variabel atau method diasosiasikan dan diakses melalui suatu instance ...
-
1. Abstract (Sesuatu yang masih belum jelas) Abstract class adalah class yang mempunyai setidaknya satu abstract method. Abstact class digu...
-
buat koneksiin java dengan database mysql pertama-tama kita buat dulu class java dengan nama DatabaseConnection, Ingat, nama class gak bole...
-
Kelas anonimous merupakan kelas yang dideklarasikan tanda nama, biasanya kelas ini dibuat ketika mendeklarasikan sebuah variabel. Contoh ...
-
Apa itu swing java ? Swing Java adalah salah satu pemrograman berbasis GUI(Graphical User Interface) di Java. Sesungguhnya di Java ter...
-
“ Swing ” adalah nama kode dari proyek yang mendevelop komponen baru . Bukan merupakan nama resmi . Namun nama ini lebih seri...
Diberdayakan oleh Blogger.
0 komentar:
Posting Komentar