Apa
sih setter getter?
Setter
getter ini ada di konsep OOP bagian enkapsulasi(pembungkusan). Setter adalah
pengeset nilai. Getter adalah pengirim nilai. Setter getter ini
diimplementasikkan dalam bentuk fungsi.
Apa
sih enkapsulasi? Enkapsulasi adalah pembungkusan. Lho apa yang dibungkus? Yang
dibungkus adalah variabel data. Maksudnya variablel data adalah variabel yang
terdapat dalam suatu class.
Cara
membungkusnya adalah dengan memberi akses modifier private. Atau tidak diberi
akses modifier, karena dalam bahasa C++ jika tidak ada akses modifiernya oleh
C++ didefault private.
Nah disinilah setter getter
dibutuhkan. Lha gimana nggak? Masa kita capek2 bikin variabel tapi gak bisa
digunain. kan konyol juga. Jadi kita butuh sesuatu untuk bisa menjadi jembatan
saat memasukkan dan mengambil nilai. Setter(memasukkan nilai). Getter(mengambil
nilai).
Bingung? Jangan bingung :D
Bisa diibiaratkan variabel adalah
raja dan setter getter adalah pengawalnya. Si raja gak boleh langsung nerima
hadiah dari rakyatnya. Iya kalo hadiahnya emang bener-bener hadiah. Kalo bom
gimana? Wah bahaya dong. Nah jadi butuh jembatan. lewat pengawal dulu buat
disaring hadiah yang bener-bener hadiah atau hadiah yang isinya bom atau yang membahayakan
nyawa si raja.
Nah itu dalam cerita. Kalo implementasi
dalam dunia nyata, setter getter ini berfungsi untuk melindungi si variabel
agar tidak semena mena bisa diisikan oleh sesuatu. Misal tidak menggunakan
variabel kita bisa mengisikan:
int umur=-10
lha emang ada umur -10?
Kalo ada si setter, kita bisa membuat
validasi terlebih dahulu. Misal:
void setUmur(int n){
if(umur>=0){
umur=n;
}
}
Nah jadi umur akan selalu valid
datanya seberapapun kita mengeset.
Ini salah satu dari sekian banyak keunungan
dari fungsi setter.masih banyak lagi keuntungan yang bisa didapat. Tinggal
searching aja. Hehe
Berikut adalah contoh penerapanya
dalam kodingan. Misal class persegi yang mempunyai data panjang dan lebar.
Berikut rinciannya:
#include <iostream>
#include <stdio.h>
using namespace std;
class persegi{
private:
int
p,l; //variable data diprivate
public:
persegi(){
p=l=0;
}
void setP(int n){
if(p>=0){ //validasi
p=n;
}else{
p=0; //jika n kurang dari 0 maka p diset menjadi 0
}
}
void setL(int n){
if(p>=0){ //validasi
l=n;
}else{ //jika n kurang dari 0 maka l diset menjadi 0
l=0;
}
}
int
getP(){
return p;
}
int
getL(){
return l;
}
void cetakLuas(){
cout<<p<<"*"<<l<<"="<<p*l<<endl;
}
int
getLuas(){
return p*l;
}
};
int main(){
persegi x;
persegi *y=new persegi();
int a;
x.setP(20); //mengeset panjang
x.setL(5); //mengeset lebat
x.cetakLuas();
//jika objek berupa pointer
y->setL(12);
y->setP(30);
y->cetakLuas();
return 0;
}
Sekian
dari saya, mohon maaf bila banyak kekurangan. Monggo komen aja jika ada yang
ingin ditanyakan. Terimakasih sudah berkunjung. Semoga bermanfaat :)
di blog ini dijelasin alasan kenapa kita harus mengkapsulasi variabel. mantap
BalasHapus