OOP Python: Encapsulation Pada Python Ternyata Berbeda

OOP Python Encapsulation Pada Python Ternyata Berbeda

Apa itu Encapsulation (enkapsulasi)?

Enkapsulasi (encapsulation) adalah sebuah metoda untuk mengatur component class dengan cara menyembunyikan alur kerja dari class tersebut. Component class yang dimaksud adalah property dan method. Dengan enkapsulasi, kita bisa membuat pembatasan akses kepada property dan method, sehingga hanya property dan method tertentu saja yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah ‘information hiding’.

Pada konsep enkapsulasi semua property dalam bentuk private. Untuk mengakses dan merubah property diperlukan method getter dan setter. Misalkan kita buat contoh class Hero, sebagai berikut:

class Hero(object):
    __jumlah = 0
    def __init__(self, nama, jenis, kuat, serang, tahan):
        # semua property dalam bentuk private
        self.__nama = nama
        self.__jenis = jenis
        self.__kuat = kuat
        self.__serang = serang
        self.__tahan = tahan
        Hero.__jumlah += 1

    # method getter
    def getNama(self):
        return self.__nama

    def getJenis(self):
        return self.__jenis

    def getKuat(self):
        return self.__kuat

    def getSerang(self):
        return self.__serang

    def getTahan(self):
        return self.__tahan

    # method setter
    def setNama(self, nama):
        self.__nama = nama

    def setJenis(self, jenis):
        self.__jenis = jenis

    def setKuat(self, kuat):
        self.__kuat = kuat

    def setSerang(self, serang):
        self.__serang = serang

    def setTahan(self, tahan):
        self.__tahan = tahan


semar = Hero("Semar", "Hulubalang", 100, 15, 5)
cepot = Hero("Cepot", "Prajurit", 100, 8, 3)

print(semar.getNama())
print(semar.getKuat())
semar.setKuat(90)
print(semar.getKuat())

Encapsulation Cara Python

Untuk penanganan enkapsulasi dengan cara python maka bisa menggunakan decorator. Adapun decorator yang digunakan property, getter, setter dan deleter. Berikut ini contoh kode penggunaan decorator property, getter, setter dan deleter:

class Hero(object):
	
    def __init__(self, nama, jenis, kuat):
        self.__nama = nama
        self.__jenis = jenis
        self.__kuat = kuat

    @property
    def info(self):
        return (self.__nama + " - " + self.__jenis + " - " + str(self.__kuat))

    @property
    def nama(self):
        pass

    @nama.getter
    def nama(self):
        return self.__nama

    @nama.setter
    def nama(self, input):
        self.__nama = input

    @property
    def jenis(self):
        pass

    @jenis.getter
    def jenis(self):
        return self.__jenis

    @jenis.setter
    def jenis(self, input):
        self.__jenis = input

    @property
    def kuat(self):
        pass

    @kuat.getter
    def kuat(self):
        return self.__kuat

    @kuat.setter
    def kuat(self, input):
        self.__kuat = input


semar = Hero("Semar", "Penyihir", 100)
print(semar.info)
semar.nama = "Semar Mendem"
semar.jenis = "Jawara"
semar.kuat = 150
print(semar.info)

Nampak pada contoh kode diatas adalah method setter dan getter yang dibuat seolah-olah menjadi property biasa.

Silahkan tuliskan di bagian komentar bila ada pertanyaan.

Be the first to comment

Leave a Reply

Your email address will not be published.


*