Enkapsulasi Java | PBO
bagus delarossa | 01.20 |
Pemograman Berbasis Objek
Enkapsulasi
adalah suatu cara untuk menyembunyikan informasi detail dari suatu
class. Dua hal yang mendasar dalam enkapsulasi yakni :
• Information hiding.
• Interface to access data.
Information hiding
Sebelumnya
kita dapat mengakses anggota class baik berupa atribut maupun method
secara langsung dengan menggunakan objek yang telah kita buat. Hal ini
dikarenakan akses kontrol yang diberikan kepada atribut maupun method
yang ada di dalam class tersebut adalah 'public'. Kita dapat
menyembunyikan informasi dari suatu class sehingga anggota class
tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan
memberikan akses kontrol 'private' ketika mendeklarasikan atribut atau
method. Proses ini disebut dengan information hiding.
Interface to access data
Jika
kita telah melakukan information hiding terhadap suatu atribut pada
suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut
yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu
interface berupa method untuk menginisialisasi atau merubah nilai dari
suatu atribut tersebut.
Implementasi UML
Berikut ini kita akan coba untuk lebih memahami penggunaan konsep enkapsulasi dengan mengimplementasikan UML berikut :
UML Vehicle class with no hiding
Vehicle class berisi atribut yang mempunyai modifier public(+), sehingga TestVehicle1 sebagai test program mempunyai akses langsung terhadap atribut pada Vehicle.
Listing program - Vehicle.java
public class Vehicle{
public double load, maxLoad;
public Vehicle (double maxLoad){
maxLoad = maxLoad + load;
}
public double getLoad(){
return load;
}
public double getMaxLoad(){
return maxLoad;
}
}
Listing program - TestVehicle.java
public class TestVehicle{
public static void main(String[] args){
System.out.println("Creating a vehicle with a 10,000kg maximum load.");
Vehicle vehicle = new Vehicle(10000.0);
System.out.println("Add box #1 (500kg)");
vehicle.load = vehicle.load + 500.0;
System.out.println("Add box #2 (250kg)");
vehicle.load = vehicle.load + 250.0;
System.out.println("Add box #3 (5000kg)");
vehicle.load = vehicle.load + 5000.0;
System.out.println("Add box #4 (4000kg)");
vehicle.load = vehicle.load + 4000.0;
System.out.println("Add box #4 (300kg)");
vehicle.load = vehicle.load + 300.0;
System.out.println("Vehicle load is = " +vehicle.getLoad() + "kg");
}
}
Compile Vehicle.java dan TestVehicle.java lalu jalankan TestVehicle.java. Seharusnya akan keluar tampilan sebagai berikut :
Analisa program
Kita lihat bahwa pada output program tersebut kita menginisialisasi batas maximum load 10,000 kg,
Vehicle vehicle = new Vehicle(10000.0);
akan tetapi dengan memberikan akses kontrol / modifier public pada atribut class Vehicle
public double load, maxLoad;
kita dapat mengakses langsung atribut class yang seharusnya perlu diberi pengecekan agar tidak sampai melebihi maxload
vehicle.load = vehicle.load + 500.0;
maka
dapat mengakibatkan masalah(trouble) yakni batas maximum load yang kita
buat tidak berpengaruh apapun sehingga terdapat penambahan boxes yang
melebihi kapasitas(10050.0kg) dikaernakan tidak ada pengecekan kapasitas
maksismum.
UML Vehicle class with hiding
Vehicle
class berisi atribut yang mempunyai modi_er public, sehingga
TestVehicle1 sebagai test program mempunyai akses langsung terhadap
atribut pada Vehicle.
Listing program - Vehicle.java
public class Vehicle1{
private double load, maxLoad;
public Vehicle1 (double max){
this.maxLoad = max;
}
public double getLoad(){
return this.load;
}
public double getMaxLoad(){
return this.maxLoad;
}
public boolean addBox(double weight){
double temp = 0.0D;
temp = this.load + weight;
if(temp <= maxLoad){
this.load = this.load + weight;
return true;
}
else{
return false;
}
}
}
Listing program - TestVehicle.java
public class TestVehicle1{
public static void main(String[] args){
System.out.println("Creating a vehicle with a 10,000 kg maximum load.");
Vehicle1 vehicle = new Vehicle1(10000);
System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));
System.out.println("Add box #2 (250kg) : " + vehicle.addBox(250));
System.out.println("Add box #3 (5000kg) : " + vehicle.addBox(5000));
System.out.println("Add box #4 (4000kg) : " + vehicle.addBox(4000));
System.out.println("Add box #5 (300kg) : " + vehicle.addBox(300));
System.out.println("Vehicle load is " +vehicle.getLoad() + "kg");
}
}
Compile Vehicle1.java dan TestVehicle1.java lalu jalankan TestVehicle1.java. Maka akan keluar tampilan sebagai berikut :
Analisa program
Kita
lihat bahwa pada output program tersebut pada penambahan box ke-5
terjadi kelebihan kapasitas maksimal sehingga method addBox
mengembalikan nilai false, dalam arti bahwa terjadi penolakan terhadap
penambahan box ke 5.
1 komentar:
tanggal posting?
Posting Komentar