0Pricing
Python For Kids · Pelajaran

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.

Enkapsulasi — ilustrasi 1

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!

Enkapsulasi — ilustrasi 10

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.

Semua pelajaran dalam kursus ini

  1. Pengantar OOP
  2. Membuat Kelas dan Objek
  3. Pewarisan
  4. Enkapsulasi
  5. Polimorfisme
← Kembali ke Python For Kids