İçerik Tablosu
- Nesne Yönelimli Programlamaya (OOP) Giriş
- Python Sınıfları ve Nesneleri: OOP’nin Temel Taşları
- Yapıcı Metot: Nesnelerinizi Başlatma
- Sınıf Özniteliklerini Yönetme: Ekleme, Erişme ve Silme
- Kapsamlı Örnek: Bir Evcil Hayvan Sınıfı
Nesne Yönelimli Programlamaya (OOP) Giriş
Nesne Yönelimli Programlama (OOP), kodu fonksiyonlar ve mantık yerine “nesneler” etrafında düzenleyen güçlü bir programlama paradigmasıdır. Bu nesneler veriyi (öznitelikler) ve bu veri üzerinde çalışan fonksiyonları (metodlar) kapsüller. Bu yaklaşım modülerliği, yeniden kullanılabilirliği ve sürdürülebilirliği teşvik eder. OOP’nin temel prensipleri şunlardır:
- Soyutlama: Sadece temel bilgileri modelleyerek karmaşık sistemleri basitleştirme.
- Kapsüllenme: Verileri ve metodları bir sınıf içinde paketleyerek veri bütünlüğünü koruyarak ve içsel uygulama ayrıntılarını gizleyerek.
- Kalıtım: Mevcut sınıflardan (üst sınıflar) yeni sınıflar (alt sınıflar) oluşturarak, öznitelikleri ve metodları devralarak.
- Çok Biçimlilik: Farklı sınıfların nesnelerinin aynı metot çağrısına kendi özgül yollarıyla yanıt vermelerini sağlama.
Nesne yönelimli bir dil olan Python, bu prensipleri kullanarak sağlam ve iyi yapılandırılmış uygulamalar oluşturmanıza olanak tanır. Stringler ve tamsayılar gibi yerleşik tipler bile Python’da nesnedir.
Python Sınıfları ve Nesneleri: OOP’nin Temel Taşları
Bir sınıf, nesne oluşturmak için bir şablondur. Bu sınıfın nesnelerinin sahip olacağı öznitelikleri (veri) ve metodları (davranış) tanımlar. Bir nesne, bir sınıfın örneğidir—şablonun somut bir gerçekleşmesidir.
Basit bir örnekle açıklayalım:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
print("Hav hav!")
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.name) # 'name' özniteliğine erişme
my_dog.bark() # 'bark' metodunu çağırma
Yapıcı Metot: Nesnelerinizi Başlatma
__init__
metodu, yapıcı metot olarak da bilinir, yeni bir nesne oluşturduğunuzda otomatik olarak çağrılan özel bir metottur. Nesnenin özniteliklerini başlangıç değerleriyle başlatmak için kullanılır.
class Cat:
def __init__(self, name="Whiskers", color="Gri", age=2):
self.name = name
self.color = color
self.age = age
def meow(self):
print("Miyav!")
my_cat = Cat() # Varsayılan değerleri kullanır
print(my_cat.name, my_cat.color, my_cat.age)
another_cat = Cat("Mittens", "Turuncu", 5) # Varsayılan değerleri geçersiz kılar
print(another_cat.name, another_cat.color, another_cat.age)
Sınıf Özniteliklerini Yönetme: Ekleme, Erişme ve Silme
Oluşturulduktan sonra bir nesnenin özniteliklerini ekleyebilir, erişebilir ve silebilirsiniz.
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.name) # Çıktı: Buddy
my_dog.age = 3 # Yeni bir öznitelik ekleme
print(my_dog.age) # Çıktı: 3
del my_dog.breed # Bir özniteliği silme
#print(my_dog.breed) # Bu bir AttributeError hatası verecektir
print(hasattr(my_dog, 'breed')) # Çıktı: False - özniteliğin var olup olmadığını kontrol eder.
Kapsamlı Örnek: Bir Evcil Hayvan Sınıfı
Kalıtımı ve çok biçimliliği gösteren daha karmaşık bir örnek oluşturalım:
class Pet:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("Genel evcil hayvan sesi")
class Dog(Pet):
def speak(self):
print("Hav hav!")
class Cat(Pet):
def speak(self):
print("Miyav!")
my_dog = Dog("Fido", 5)
my_cat = Cat("Whiskers", 2)
my_dog.speak() # Çıktı: Hav hav!
my_cat.speak() # Çıktı: Miyav!
Bu örnek, kalıtımın daha genel bir sınıftan (Pet) özelleştirilmiş sınıflar (Dog, Cat) oluşturmanıza ve çok biçimliliğin aynı metoda (speak
) farklı şekilde yanıt vermelerini sağlamanıza nasıl izin verdiğini gösterir.