Enkapsulasi dengan Python
Enkapsulasi sebagai sebuah kata ketika mendengar untuk pertama kali tampaknya hal yang sangat mewah, teknis dan rumit untuk dilakukan di dunia pemrograman, khususnya jika Anda seorang pemula. Ketika saya mencoba mempelajari tentang enkapsulasi dari berbagai sumber, saya berharap seseorang dapat membuatnya lebih mudah untuk dipahami secara naratif. Jadi di sini saya mencoba menjelaskan enkapsulasi seperti yang saya pahami setelah melalui banyak materi baik online maupun offline.
- Karena Anda di sini untuk belajar tentang enkapsulasi, saya anggap Anda sudah memiliki pengetahuan tentang OOP (Pemrograman Berorientasi Objek).
“ Enkapsulasi adalah mekanisme pembungkus data (variabel) dan kode yang bekerja pada data (metode) bersama sebagai satu kesatuan ”
Sepertinya definisi yang cukup berbahaya sendiri. mari kita pahami dengan cara yang sederhana.
Asumsikan bahwa Anda adalah pemrogram senior sebuah startup dan Anda memiliki tim yang bertanggung jawab untuk membangun mekanisme yang memungkinkan pengguna membuat akun di aplikasi startup Anda. Misalkan untuk saat ini Anda hanya ingin akun diatur menggunakan nama dan kata sandi pengguna dan satu-satunya kata sandi yang Anda izinkan adalah numerik. Ya! Saya tahu itu tidak praktis di dunia nyata untuk kata sandi hanya berupa angka tetapi mari kita asumsikan saja demi memahami topiknya. Menjadi pemrogram senior, Anda akan bertanggung jawab untuk membuat kelas akun dan pemrogram junior akan bertanggung jawab untuk menggunakan kelas tersebut.
misalkan Anda membuat kelas sebagai berikut:
class Account:
# constructor
def __init__(self):
self.user = ''
self.password = 0
self.menu()
# display option
def menu(self):
user_input = input("""
Select to Enter the following details:
1. set account
2. login
5. Exit
""")
if user_input == '1':
self.set_account()
elif user_input == '2':
self.login()
else:
exit()
# To set account
def set_account(self):
user_name = input("set user id: ")
self.user = user_name
user_password = int(input("Set Password: "))
self.password = user_password
# To login
def login(self):
user_input = input("enter User id: ")
if user_input == self.user:
user_pass = int(input("enter password: "))
if user_pass == self.password:
return "Welcome {}".format(self.user)
else:
return "wrong password"
else:
return "user not found"
katakanlah 'Rohit' adalah pengguna dan dia membuat akun menggunakan perintah berikut:
rohit = Account()
# after running the above code we get the prompt and add the following detail
"""
Select to Enter the following details:
1. set account
2. login
5. Exit
1
set user id: rohit
Set Password: 123
"""
rohit.password
Sekarang untuk mengatasi situasi seperti ini, enkapsulasi hadir sebagai pahlawan super kami untuk menyelamatkan pekerjaan dan identitas pengguna kami.
Apa yang dilakukan enkapsulasi adalah, memungkinkan Anda untuk menjadikan variabel Anda pribadi. Itulah yang dimaksud dengan membungkus variabel(data) . Bagaimana kita bisa melakukannya dengan python . Cukup tambahkan garis bawah ganda di awalan data yang ingin Anda jadikan pribadi ( __data ).
Sekarang dalam kasus kelas Akun kami, kami tidak ingin orang lain mengetahui kata sandi pengguna kami. jadi kami akan membuat perubahan pada kode kami seperti berikut:
class Account:
def __init__(self):
self.user = ''
self.__password = 0
self.menu()
def menu(self):
user_input = input("""
Select to Enter the following details:
1. set account
2. login
5. Exit
""")
if user_input == '1':
self.set_account()
elif user_input == '2':
self.login()
else:
exit()
def set_account(self):
user_name = input("set user id: ")
self.user = user_name
user_password = int(input("Set Password: "))
self.__password = user_password
def login(self):
user_input = input("enter User id: ")
if user_input == self.user:
user_pass = int(input("enter password: "))
if user_pass == self.__password:
return "Welcome {}".format(self.user)
else:
return "wrong password"
else:
return "user not found"
Sekarang jika seseorang mencoba mengakses variabel kata sandi, dia akan dilempar kesalahan sebagai berikut:
rohit.password
# running the above piece of code will output the following error
"""
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-7ddf6c297392> in <module>
----> 1 rohit.password
AttributeError: 'Account' object has no attribute 'password'
"""
rohit._Account__password
# Output
# 1234
Tetapi mengapa ada konsep enkapsulasi jika tidak ada yang bersifat pribadi? Saya tahu itu yang ada di pikiran Anda, bukan?. Jadi masalahnya, enkapsulasi diperlukan ketika Anda tidak ingin orang lain (programer junior, pengguna) mengetahui atau membuat perubahan menjadi variabel penting, metode. Sampai dan kecuali mereka dapat mengakses kode sumber, mereka tidak akan dapat mengetahui variabel atau metode mana yang bersifat pribadi dan karenanya, tidak akan dapat mengakses atau mengubahnya.
Tetapi bagaimana jika Rohit lupa kata sandinya dan ingin mengambil atau mengubahnya. Konvensinya adalah kami membuat 2 metode di kelas kami yang memungkinkan untuk mengakses dan mengubah variabel pribadi yang dikenal sebagai metode Getter dan Setter . bagaimana cara membuatnya? gunakan kode berikut:
class Account:
def __init__(self):
self.user = ''
self.__password = 0
self.menu()
# GETTER
def get_pass(self):
return self._Account__password
# SETTER
def set_pass(self,newpass):
if type(newpass) == int:
self.__password = newpass
else: return "Password should only be numeric"
def menu(self):
user_input = input("""
Select to Enter the following details:
1. set account
2. login
5. Exit
""")
if user_input == '1':
self.set_account()
elif user_input == '2':
self.login()
else:
exit()
def set_account(self):
user_name = input("set user id: ")
self.user = user_name
user_password = int(input("Set Password: "))
self.__password = user_password
def login(self):
user_input = input("enter User id: ")
if user_input == self.user:
user_pass = int(input("enter password: "))
if user_pass == self.__password:
return "Welcome {}".format(self.user)
else:
return "wrong password"
else:
return "user not found
Tidak hanya variabel, python bahkan memungkinkan Anda untuk menjadikan metode Anda pribadi. Prosesnya sama, cukup ubah nama metode Anda menjadi “__method” dan metode Anda akan dijadikan pribadi.
Seluruh konsep membuat variabel pribadi, mengakses variabel pribadi melalui metode pengambil dan mengubah nilai variabel pribadi menggunakan metode penyetel dikenal sebagai Enkapsulasi .
Semoga blog ini dapat membantu Anda dalam beberapa hal. tanda tangan ! sampai jumpa

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































