Encapsulation

Sebuah class yang baik tidak akan menyatakan/memperlihatkan semua informasi mengenai dirinya kepada pihak luar. Class yang baik akan memilah setiap informasi di dalam dirinya. Mana informasi yang tidak boleh diketahui pihak luar, mana informasi yang boleh diketahui pihak luar, mana data yang boleh diubah dari luar, mana data yang tidak boleh diubah, dan sebagainya.


Contoh:
Misalkan terdapat class Person yang memiliki 3 buah field, yaitu nama, tahun lahir, dan umur. Dari class ini kita dapat menentukan field mana yang seharusnya dapat diakses dan mana yang tidak boleh. Field nama dan tahun lahir, boleh dibaca dan diubah dari luar class tersebut (jika ternyata ada kesalahan input nama atau tahun lahir). Sedangkan field umur hanya dapat dibaca dan tidak boleh diubah dari luar class tersebut. Mengapa? Karena jika ada seseorang yang secara tidak sengaja mengubah umur dari sebuah object Person, maka akan terjadi ketidakkonsistenan antara tahun lahir dan umur yang disimpan.
Agar data-data suatu class dapat dilindungi, maka perlu dilakukan enkapsulasi (pembungkusan) terhadap setiap field milik class tersebut. Selain melindungi data suatu class dari pihak luar, enkapsulasi juga bermanfaat untuk melakukan validasi.
Contoh:
Jika hak akses semua field class Person adalah public, maka pihak luar dapat mengisi tahun lahir atau umur dengan nilai negatif. Hal ini tentu saja akan menyebabkan kesalahan. Anda mungkin akan berkata, “Saya akan melakukan validasi terhadap nilai yang diinput sebelum akhirnya saya memasukkan nilai tersebut ke dalam field umur/tahun lahir.” Hal ini mungkin saja Anda lakukan, tapi coba bayangkan jika dalam program yang Anda buat, Anda harus mengganti nilai sebuah field yang dengan syarat tertentu sebanyak 100 kali. Anda juga harus melakukan validasi sebanyak 100 kali, dan besar kemungkinannya akan ada validasi yang terlupakan oleh Anda.
Dengan enkapsulasi, sebuah object akan dapat menyaring sendiri nilai yang ia peroleh dan mengganti nilai field dirinya sesuai dengan ketentuan yang seharusnya.
Bagaimana Melakukan Enkapsulasi
Ada 2 langkah yang diperlukan untuk melakukan enkapsulasi:
1. Hak akses dari setiap field di dalam class tersebut diubah menjadi private.
2. Buatlah getter dan setter method sesuai dengan kebutuhan. Hak akses dari getter/setter method ini harus public agar dapat dipanggil dari luar class.


Getter/Setter Method
Getter method adalah method perantara yang berfungsi untuk mengambil nilai dari sebuah field tertentu di dalam class. Setter method adalah method perantara yang berfungsi untuk mengganti nilai sebuah field tertentu dengan nilai yang diberikan dari luar class (tentu saja setelah disaring terlebih dahulu oleh setter method yang bersangkutan).
public class Person
{
//3 buah field dengan hak akses private
private string _nama;
private int _tahunLahir;
private int _age;
//Getter Method untuk nama
public string GetNama()
{
return _nama;
}
//Setter Method untuk nama
public void SetNama(string nama)
{
_nama = nama;
}
//Getter Method untuk tahun lahir
public int GetTahunLahir()
{
return _tahunLahir;
}
//Setter Method untuk tahun lahir
public void SetTahunLahir(int tahun)
{
if(tahun < 1900) _tahunLahir = 1900; else _tahunLahir = tahun; }
//Getter Method untuk umur public int GetUmur() {
// Mengembalikan selisih tahun saat ini dgn tahun lahir } }

Kesimpulan

Dalam pembahasan di atas, kita dapat menyimpulkan setidaknya ada 2 buah manfaat enkapsulasi, yaitu:
1. Membatasi hak akses terhadap data/informasi di dalam sebuah class.
2. Melakukan validasi terhadap nilai yang akan di-assign pada field sebuah class.

Enkapsulasi

Enkapsulasi (bahasa Inggris:encapsulation), secara umum merupakan sebuah proses yang membuat satu jenis paket data jaringan menjadi jenis data lainnya. Enkapsulasi terjadi ketika sebuah protokol yang berada pada lapisan yang lebih rendah menerima data dari protokol yang berada pada lapisan yang lebih tinggi dan meletakkan data ke format data yang dipahami oleh protokol tersebut. Dalam OSI Reference Model, proses enkapsulasi yang terjadi pada lapisan terendah umumnya disebut sebagai "framing". Beberapa jenis enkapsulasi lainnya antara lain:
• Frame Ethernet yang melakukan enkapsulasi terhadap datagram yang dibentuk oleh Internet Protocol (IP), yang dalam datagram tersebut juga melakukan enkapsulasi terhadap paket data yang dibuat oleh protokol TCP atau UDP. Data yang dienkapsulasi oleh protokol TCP atau UDP tersebut sendiri merupakan data aktual yang ditransmisikan melalui jaringan.
• Frame Ethernet yang dienkapsulasi ke dalam bentuk frame Asynchronous Transfer Mode (ATM) agar dapat ditransmisikan melalui backbone ATM.
Lapisan data-link dalam OSI Reference Model merupakan lapisan yang bertanggung jawab dalam melakukan enkapsulasi atau framing data sebelum dapat ditransmisikan di atas media jaringan (kabel, radio, atau cahaya). Dalam teknologi jaringan Local Area Network (LAN), hal ini dilakukan oleh Carrier sense multiple access with collision detection (CSMA/CD) untuk jaringan Ethernet; token-passing untuk jaringan Token Ring, dan lain-lain.



0 komentar:

Posting Komentar

Template by : kendhin x-template.blogspot.com