0Pricing
Python For Kids · Ders

Kapsülleme

Gelişmiş nesne yönelimli programlama kavramlarını keşfedin.

Kapsülleme, CoddyKit'te ücretsiz bir Python For Kids dersidir. Bu, 5 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python For Kids öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python For Kids kursu toplamda 5 dersten oluşur.

Kapsülleme

Nesne Yönelimli Programlama (OOP) dersine tekrar hoş geldiniz! Bugün Python'da verilerinizi ve yöntemlerinizi sınıflar içinde korumanıza yardımcı olan temel bir kavram olan kapsüllemeyi öğreneceğiz.

Kapsülleme — resim 1

Kapsülleme Nedir?

Kapsülleme, verileri (attribute'ları) ve bu veriler üzerinde işlem yapan yöntemleri (işlevleri) sınıf olarak bilinen tek bir birim içinde bir araya getirme kavramıdır. Ayrıca bir nesnenin bazı bileşenlerine doğrudan erişimi kısıtlar; bu da nesnenin iç gösteriminin dışarıdan gizlendiği anlamına gelir.

  • Veri Gizleme: Bir nesnenin iç durumunu istenmeyen müdahalelerden korumaktır.
  • Erişim Denetimi: Verilere ve yöntemlere nasıl erişileceğini veya bunların nasıl değiştirileceğini tanımlamaktır.

Kapsülleme, nesnelerin kendi verilerini denetlemesini ve yalnızca gerekli olanları dışarıya açmasını sağlar.

Erişim Belirteçleri

Python'da kapsülleme, sınıf üyelerinin (attribute'ların ve yöntemlerin) görünürlüğünü denetlemek için erişim belirteçleri kullanılarak uygulanır. Üç tür erişim belirteci vardır:

  • Genel: Her yerden erişilebilir.
  • Korumalı: Sınıfın ve alt sınıflarının içinden erişilebilir.
  • Özel: Yalnızca sınıfın kendi içinden erişilebilir.

Şimdi bu erişim belirteçlerinin Python'da nasıl kullanılacağına bakalım.

Genel Attribute'lar ve Yöntemler

Genel üyeler sınıfın dışından erişilebilir. Aksi belirtilmediği sürece tüm attribute'lar ve yöntemler geneldir.

Örnek:

# 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!

Korumalı Attribute'lar ve Yöntemler

Korumalı üyeler, başına tek alt çizgi (_) getirilerek belirtilir. Sınıfın ve alt sınıflarının içinden erişilebilirler; ancak sınıfın dışından doğrudan erişilmemelidir.

Örnek:

# 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

Özel Attribute'lar ve Yöntemler

Özel üyeler, başına çift alt çizgi (__) getirilerek belirtilir. Yalnızca sınıfın kendi içinden erişilebilirler ve sınıfın dışından doğrudan erişilemezler.

Örnek:

# 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

Kapsülleme Neden Kullanılır?

Kapsülleme çeşitli faydalar sağlar:

  • Denetim: Verilere nasıl erişileceğini veya verilerin nasıl değiştirileceğini denetler.
  • Güvenlik: Bir nesnenin iç durumunu istenmeyen değişikliklerden korur.
  • Bakım Kolaylığı: Kodu daha kolay sürdürülebilir ve hatalara daha az yatkın hâle getirir.

Kapsülleme, sağlam ve güvenli uygulamalar oluşturmanıza yardımcı olur.

Kapsülleme Örneği: Car Sınıfı

attributes ve methods ögelerini korumak için kapsülleme kullanan bir Car sınıfı oluşturalım.

Kod:

# 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

Harika İş Çıkardınız!

Python'da sınıflar içindeki verilerinizi ve methods ögelerinizi korumak için kapsüllemeyi nasıl kullanacağınızı öğrendiniz. Kapsülleme, nesnenizin verilerine erişimi denetlemenize yardımcı olarak programlarınızı daha güvenli ve bakımı daha kolay hâle getirir. Kodlama becerilerinizi geliştirmek için uygun erişim belirleyicileriyle sınıflar tasarlayarak pratik yapmayı sürdürün!

Kapsülleme — resim 10

Sıkça Sorulan Sorular

“Kapsülleme” dersi ücretsiz mi?

Evet — “Kapsülleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python For Kids kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python For Kids kursu toplamda 5 dersten oluşur.

“Kapsülleme” dersinde ne öğreneceğim?

Gelişmiş nesne yönelimli programlama kavramlarını keşfedin. Python For Kids ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python For Kids öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python For Kids, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 5 dersinin 4. dersidir.

“Kapsülleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python For Kids dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python For Kids dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Nesne Yönelimli Programlamaya Giriş
  2. Sınıflar ve Nesneler Oluşturma
  3. Kalıtım
  4. Kapsülleme
  5. Çok Biçimlilik
← Python For Kids Sayfasına Dön