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

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.