Nesne Yönelimli Programlama (OOP) Nedir? Python ile Adım Adım Örnek

Programlama Paradigmaları

Nesne Yönelimli Programlama (OOP) Nedir? Python ile Adım Adım Örnek

Programlama Paradigmaları
4 dk okuma süresi
Bu makalede Nesne Yönelimli Programlama (OOP) nedir, Python'da sınıf ve nesne nasıl tanımlanır, kapsülleme ve kalıtım nasıl uygulanır — hepsi adım adım örnek python kod snippetleriyle gösterilmektedir.
Nesne Yönelimli Programlama (OOP) Nedir? Python ile Adım Adım Örnek

Nesne Yönelimli Programlama (OOP) nedir?

Nesne Yönelimli Programlama (OOP), yazılımda veriyi ve o veriye bağlı davranışları birlikte modellemeye odaklanan bir yaklaşımdır. OOP, kodu daha düzenli, yeniden kullanılabilir ve yönetilebilir hale getirmeyi amaçlar. Bu genel tanıma dair açıklayıcı bir kaynak için Nesne Yönelimli Programlama - FineProxy sayfasına bakabilirsiniz.

Bu yazıda, özellikle python kod snippetleri üzerinden; sınıf (class), nesne (object), kapsülleme (encapsulation) ve kalıtım (inheritance) kavramlarını adım adım göstereceğim. Örnekler Python 3 ile uyumludur ve temel eğitim amaçlıdır.

Python'da OOP'nin temel kavramları

Sınıf ve nesne (Class & Object)

Sınıf, aynı türdeki nesnelerin sahip olacağı özellikleri (attribute) ve davranışları (method) tanımlayan bir şablondur. Nesne ise bu sınıfın somut bir örneğidir. Python'da sınıf tanımları ve sınıf kullanımına ilişkin temel açıklama ve örnekler için Python'un resmi öğreticisine bakabilirsiniz: Python Öğreticisi (resmi belge) ve sınıflar ile ilgili detaylı bölüm için Python Sınıflar sayfası yararlıdır.

Kapsülleme (Encapsulation)

Kapsülleme, nesne içindeki verinin nasıl erişileceğini ve değiştirileceğini kontrol etme yöntemidir. Python'da gerçek bir erişim engelleme mekanizması yoktur; bunun yerine isimlendirme kuralları (tek alt çizgi, çift alt çizgi) ve property gibi yapılar kullanılarak veri kontrolü sağlanır. Kapsülleme kavramına dair kısa bir açıklama için kaynak: Nesne Nedir.

Kalıtım (Inheritance)

Kalıtım, bir sınıfın başka bir sınıfın özelliklerini ve davranışlarını miras almasını sağlar. Bu sayede ortak kod üst sınıfta toplanır, alt sınıflarda yalnızca farklı davranışlar tanımlanır. Python'da kalıtım ve yöntem ezme (method overriding) sık kullanılan OOP tekniklerindendir.

Adım adım Python örnekleri (python kod snippetleri)

Aşağıdaki örnekler basitten başlayarak kapsülleme ve kalıtımı gösterir. Kod parçacıklarını kendi bilgisayarınızda Python 3 ile çalıştırarak deneyebilirsiniz.

1) Basit sınıf ve nesne

class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def greet(self):
return f"Merhaba, benim adım {self.name}."

p = Person("Ayşe", 30)
print(p.greet())

Bu örnekte Person sınıfı iki özellik (name, age) ve bir yöntem (greet) içerir. __init__ metodu, nesne oluşturulurken çağrılan başlatıcıdır. (Not: Görsel amaçlı yazımda Python anahtar kelimeleri italik veya başka bir etiketle verilmemiştir; kodu doğrudan Python yorumlayıcısında kullanabilirsiniz.)

2) Kapsülleme: veri gizleme ve kontrol

Python'da veri gizlemeye ilişkin yaygın yaklaşım tek alt çizgi (_balance) ile koruma niyeti göstermektir ve property ile kontrollü erişim sağlamaktır:

class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self._balance = balance # tek alt çizgi: dışarıya gösterilmeme niyeti

@property
def balance(self):
return self._balance

def deposit(self, amount):
if amount <= 0:
raise ValueError("Miktar pozitif olmalı")
self._balance += amount

def withdraw(self, amount):
if 0 < amount <= self._balance:
self._balance -= amount
else:
raise ValueError("Yetersiz bakiye veya geçersiz tutar")

Bu yapı, bakiye verisinin doğrudan atanmamasını sağlayıp, para çekme ve yatırma işlemlerinde kontrol eklememize izin verir. Python'un sınıflar ve özellikler ile ilgili resmi açıklamaları için Python belgelerine bakabilirsiniz: Sınıflar — Python Belgeleri.

3) Kalıtım ve yöntem ezme

class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return "..."

class Dog(Animal):
def speak(self):
return f"{self.name} havladı."

class Cat(Animal):
def speak(self):
return f"{self.name} miyavladı."

animals = [Dog("Karabas"), Cat("Minik")]
for a in animals:
print(a.speak())

Burada Dog ve Cat sınıfları Animal sınıfından türemiştir. Her alt sınıf speak metodunu kendine göre uyarlamıştır; döngü içinde farklı türlerde nesnelere aynı isimli yöntemi çağırmak mümkündür (polimorfizm).

Neden OOP kullanılır? (Kısa)

  • Kodun tekrar kullanılabilirliğini ve düzenini artırır.
  • Büyük projelerde sorumlulukları sınıflar halinde ayırarak bakım kolaylığı sağlar.
  • Gerçek dünyadaki kavramları (nesneler) doğrudan modellemeyi kolaylaştırır.

Pratik öğrenme ve iyi uygulamalar kontrol listesi

  • Basit sınıflarla başlayın: Tek bir sorumluluk (single responsibility) prensibini uygulayın.
  • Kapsüllemeyi, property ve kontrollü yöntemlerle sağlayın; doğrudan iç durumları değiştirmeyin.
  • Kalıtımı dikkatle kullanın; çoğu durumda bileşen (composition) tercih edilebilir.
  • İsimlendirmede açık ve anlaşılır olun; Python'da alt çizgi kullanımıyla erişim niyetini belirtin.
  • Unit test yazarak sınıfların beklenen davranışı sağladığını doğrulayın.

Kısaca özet ve kaynaklar

Bu makalede OOP'nin temel taşları — sınıf, nesne, kapsülleme ve kalıtım — Python örnekleriyle gösterildi. Başlangıç için resmi Python öğreticisi ve sınıflar bölümü yararlı referanslardır: Python Öğreticisi ve Sınıflar. Genel OOP tanımları için ek okuma: FineProxy OOP ve kapsülleme tanımı için Nesne Nedir.


Not: Örnek kodlar öğretim amaçlıdır; gerçek projelerde ek hata kontrolleri, logging ve birim testler eklemek iyi uygulamadır.