Enkapsulasi
Jelajahi konsep OOP tingkat lanjut.
Enkapsulasi adalah pelajaran Python For Kids gratis di CoddyKit. Ini adalah pelajaran 4 dari 5. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python For Kids, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python For Kids mencakup 5 pelajaran total.
Enkapsulasi
Selamat datang kembali di pelajaran Pemrograman Berorientasi Objek (PBO)! Hari ini, Anda akan mempelajari enkapsulasi dalam Python, yaitu konsep penting yang membantu melindungi data dan metode di dalam kelas.

Apa Itu Enkapsulasi?
Enkapsulasi adalah konsep menggabungkan data (atribut) dan metode (fungsi) yang bekerja pada data tersebut ke dalam satu unit yang disebut kelas. Enkapsulasi juga membatasi akses langsung ke beberapa komponen objek, sehingga representasi internal objek tersembunyi dari pihak luar.
- Penyembunyian Data: Melindungi keadaan internal objek dari gangguan yang tidak diinginkan.
- Kontrol Akses: Menentukan cara data dan metode dapat diakses atau diubah.
Enkapsulasi memastikan objek mengendalikan datanya sendiri dan hanya menyediakan hal-hal yang diperlukan.
Pengubah Akses
Dalam Python, enkapsulasi diterapkan menggunakan pengubah akses untuk mengontrol visibilitas anggota kelas (atribut dan metode). Ada tiga jenis pengubah akses:
- Publik: Dapat diakses dari mana saja.
- Terlindungi: Dapat diakses di dalam kelas dan subkelasnya.
- Privat: Hanya dapat diakses di dalam kelas itu sendiri.
Mari kita lihat cara menggunakan pengubah akses ini dalam Python.
Atribut dan Metode Publik
Anggota publik dapat diakses dari luar kelas. Secara default, semua atribut dan metode bersifat publik, kecuali ditentukan sebaliknya.
Contoh:
# Defines the Person class with public attributes and methods
class Person:
def __init__(self, name, age):
self.name = name # Public attribute
self.age = age # Public attribute
def greet(self):
print("Hello, my name is " + self.name + "!") # Public method
# Creates an object of the Person class
person1 = Person("Alice", 30)
# Accesses public attributes and methods
print(person1.name) # Output: Alice
person1.greet() # Output: Hello, my name is Alice!
Atribut dan Metode Terlindungi
Anggota terlindungi ditandai dengan awalan garis bawah tunggal (_). Anggota ini dapat diakses di dalam kelas dan subkelasnya, tetapi tidak seharusnya diakses secara langsung dari luar kelas.
Contoh:
# Defines the Employee class with protected attributes and methods
class Employee:
def __init__(self, name, salary):
self._name = name # Protected attribute
self._salary = salary # Protected attribute
def _increase_salary(self, amount):
self._salary += amount # Protected method
print(self._name + "'s new salary is " + str(self._salary))
# Creates an object of the Employee class
employee1 = Employee("Bob", 50000)
# Accesses protected attributes and methods (not recommended)
print(employee1._name) # Output: Bob
employee1._increase_salary(5000) # Output: Bob's new salary is 55000
Atribut dan Metode Privat
Anggota privat ditandai dengan awalan garis bawah ganda (__). Anggota ini hanya dapat diakses di dalam kelas itu sendiri dan tidak dapat diakses secara langsung dari luar kelas.
Contoh:
# Defines the BankAccount class with private attributes and methods
class BankAccount:
def __init__(self, owner, balance):
self.__owner = owner # Private attribute
self.__balance = balance # Private attribute
def deposit(self, amount):
self.__balance += amount # Modifies private attribute
print("Deposited:", amount)
self.__show_balance()
def __show_balance(self):
print("Current Balance:", self.__balance) # Private method
# Creates an object of the BankAccount class
account1 = BankAccount("Charlie", 1000)
# Attempts to access private attributes and methods (will cause errors)
# print(account1.__owner) # AttributeError
# account1.__show_balance() # AttributeError
# Uses public methods to interact with private attributes
account1.deposit(500) # Output:
# Deposited: 500
# Current Balance: 1500
Mengapa Menggunakan Enkapsulasi?
Enkapsulasi memberikan beberapa manfaat:
- Kontrol: Mengontrol cara data diakses atau diubah.
- Keamanan: Melindungi keadaan internal objek dari perubahan yang tidak diinginkan.
- Kemudahan Pemeliharaan: Membuat kode lebih mudah dipelihara dan mengurangi kemungkinan terjadinya error.
Enkapsulasi membantu membangun aplikasi yang tangguh dan aman.
Contoh Enkapsulasi: Kelas Car
Mari buat kelas Car yang menggunakan enkapsulasi untuk melindungi atribut dan metodenya.
Kode:
# Defines the Car class with encapsulated attributes and methods
class Car:
def __init__(self, make, model, year):
self.make = make # Public attribute
self.model = model # Public attribute
self.__year = year # Private attribute
def get_year(self):
return self.__year # Public method to access private attribute
def set_year(self, year):
if year > 0:
self.__year = year # Public method to modify private attribute
print("Year updated to", self.__year)
else:
print("Invalid year!")
def __display_info(self):
print(self.make, self.model, self.__year) # Private method
def show_info(self):
self.__display_info() # Public method that calls a private method
# Creates an object of the Car class
car1 = Car("Tesla", "Model S", 2020)
# Accesses public attributes and methods
print(car1.make) # Output: Tesla
print(car1.get_year()) # Output: 2020
# Modifies the private attribute using a public method
car1.set_year(2021) # Output: Year updated to 2021
# Calls a public method that interacts with a private method
car1.show_info() # Output: Tesla Model S 2021
# Attempts to access private attributes and methods directly (will cause errors)
# print(car1.__year) # AttributeError
# car1.__display_info() # AttributeError
# Defines the Student class with encapsulated attributes
class Student:
def __init__(self, name, grade):
self.name = name # Public attribute
self.__grade = grade # Private attribute
def get_grade(self):
return self.__grade # Public method to access private attribute
def set_grade(self, grade):
if 0 <= grade <= 100:
self.__grade = grade # Updates the grade
else:
print("Invalid grade!")
# Creates an object of the Student class
student1 = Student("Diana", 85)
# Accesses and modifies the grade using public methods
print(student1.get_grade()) # Output: 85
student1.set_grade(90)
print(student1.get_grade()) # Output: 90
# Attempts to access the private attribute directly (will cause an error)
# print(student1.__grade) # AttributeError
Kerja Bagus!
Anda telah mempelajari cara menggunakan enkapsulasi dalam Python untuk melindungi data dan metode di dalam kelas. Enkapsulasi membantu Anda mengontrol akses ke data objek, sehingga program menjadi lebih aman dan mudah dipelihara. Teruslah berlatih dengan merancang kelas yang memiliki pengubah akses yang sesuai untuk meningkatkan keterampilan pemrograman Anda!

Pertanyaan yang Sering Diajukan
Apakah pelajaran “Enkapsulasi” gratis?
Ya — teks lengkap “Enkapsulasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python For Kids, upgrade ke CoddyKit PRO. Kursus Python For Kids mencakup 5 pelajaran total.
Apa yang akan aku pelajari di “Enkapsulasi”?
Jelajahi konsep OOP tingkat lanjut. Kamu berlatih Python For Kids dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python For Kids?
Tidak diperlukan pengalaman sebelumnya. Python For Kids di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 5.
Berapa lama pelajaran “Enkapsulasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python For Kids ini?
Ya. Setiap pelajaran Python For Kids menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.