Kamis, 12 April 2012

Enkapsulasi dalam Java

Pada tulisan kali ini saya akan menjelaskan tentang enkapsulasi(pengkapsulan) dalam bahasa pemograman berbasis objek. bahasa pemograman yang saya gunakan adalah bahasa java yang sangat mengimplementasikan OOP(Object Oriented Programming). langsung saja kita mulai.
Enkapsulasi merupakan proses pemaketan data bersama metode-metodenya. Manfaat utama dari enkapsulasi ini adalah meyembunyikan rincian-rincian implementasi dari pemakai. Bagian internal objek mempunyai ketampakan terbatas dibanding bagian eksternal objek. Penyusunan seperti ini menjaga bagian internal dari pengaksesan eksternal yang tidak diinginkan.
Bagian eksternal objek sering disebut antarmuka objek karena berlaku sebagai antarmuka objek terhadap objek lain. Karena objek lain harus berkomunikasi dengan objek itu hanya melalui antarmuka maka bagian internal objek dapat dilindungi dari gangguan luar. Karena program luar tidak dapat mengakses implementasi internal objek, implementasi internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.
Enkapsulasi menyediakan duan manfaat utama bagi pemograman, yaitu:
  • Penyembunyian Informasi: Penyembunyian implementasi (implementation hiding) mengacu perlindungan implementasi internal objek. Objek disusun dari antarmuka public dan bagian private yang merupakan kombinasi data dan metode internal. Manfaat utama adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.
  • Modularitas (modularity) : Objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antar muka, maka kita bebas melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain dari sistem. Manfaat ini mempermudah mendistribusikan objek-objek di sistem.
Enkapsulasi pada Java dilakukan dengan pembentukan kelas-kelas, yaitu keyword class. Sedangkan penyembunyian informasi dilakukan dengan pengendalian terhadap pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan default, private, protected, dan public. Penyembunyian informasi dilakukan dengan menerapkan kendali pengaksesan private atau protected pada elemen data.
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  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 Test – 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){

Tidak ada komentar:

Posting Komentar