Di dalam pemograman berorientasi objek ada istilah Encapsulation/Enkapsulasi
Enkapsulasi mengacu pada bundling data dengan metode yang beroperasi pada data tersebut, atau pembatasan akses langsung ke beberapa komponen objek, contohnya kapsul obat di mana kita bisa memegang dan meminumnya namun kita tidak bisa membuka dan mengganti isinya karena di bungkus oleh kapsul, enkapsulasi memiliki cara kerja yang hampir sama dimana setia attribute/method di bungkus dengan hak akses/sifat khusus apakah attribute itu bisa di isi ataupun bisa di lihat.
enkapsulasi juga di gunakan untuk alasan keamaan contohnya data mahasiswa dimana kita bisa melihat nama mahasiswa namun kita tidak bisa mengganti nama mahasiswanya,itu artinya bahwa attribute nama di dalam objek mahasiswa sudah dibungkus agar hanya bisa di lihat saja dan tidak bisa di isi nilai lain
baiklah kita akan coba mempratekannya :
class Mahasiswa:
def __init__ (self):
self.__nama = "Bagus"
di atas adalah contoh class objek Mahasiswa lalu mahasiswa tersebut mempunya attribute __nama,lalu kenapa kita menggunakan garis bawah sebelum penamaan attributenya?dalam python garis bawah 2 kali berarti menandakan bahwa variable itu bersifat private artinya variable itu tidak bisa di akses di luar class itu dan hanya bisa akses di dalam kelas tersebut singkatnya seperti ini :
#tidak bisa di akses seperti ini
m = Mahasiswa()
print(m.__nama)
lalu bagai mana kita menampilkan nilai nama ataupun megganti/memberikan nilai nama baru? maka kita harus membuat fungsi untuk keduanya
class Mahasiswa:
def __init__ (self):
self.__nama = "Bagus"
def getNama(self):
return self.__nama
def setNama(self,nama):
self.__nama = nama
lalu kita bisa menggunakan method tersebut seperti ini
m = Mahasiswa()
m.setNama("Ali")
print(m.getNama())
mungkin agak sedikit ribet dan panjang hanya untuk satu variable namun metode ini bisa berguna saat kita hanya ingin attribute __nama hanya menampilkan nilai dan tidak boleh memasukan nilai baru,maka kita hanya perlu menghapus methode setNama
selain menggunakan fungsi di atas di dalam python ada sebuah metode yang bernama decorator yang berisi property,setter,gettter,deleter
class Mahasiswa:
def __init__ (self):
self.__nama = "Bagus"
#memberi tahu bahwa nama adalah property dari objek
@property
def nama(self):
pass
#memeberikan fungsi getter pada property nama
@nama.getter
def nama(self):
return self.__nama
#memeberikan fungsi setter pada property nama
@nama.setter
def nama(self,nama):
self.__nama = nama
m = Mahasiswa()
m.nama = "Abdul"
print(m.nama)
singkatnya decorator membuat sebuah property yang mewakili sebuah attribute ataupun method,disini property nama mewakili attribute __nama
ok cukup sampai disini
uncuk refrensi dan contoh lainnya bisa kalian lihat disini
https://www.geeksforgeeks.org/encapsulation-in-python
One thought on “Enkapsulasi Pemograman Berorientasi Objek Di Python”