Resim

Soyutlama (Abstraction)

Soyutlama (Abstraction)

Soyutlama, karmaşıklığı yönetme sanatıdır. Temel ilke şudur: Kullanıcıya veya diğer geliştiricilere sadece gerekli bilgileri göster, altta yatan karmaşık detayları ise gizle.

Gerçek hayattaki en iyi örnek: Bir araba kullanıcısı, direksiyonu çevirdiğinde tekerleklerin döndüğünü bilir, ancak motorun içinde yanma sürecinin veya hidrolik sistemin nasıl çalıştığını bilmek zorunda değildir.

A. Soyutlamanın Amacı

  • Karmaşıklığı Azaltma: Nesneyi kullanacak kişilerin, arka plan mantığına takılmadan sadece arayüze (metot isimlerine) odaklanmasını sağlar.

  • Değişime Karşı Koruma: Altta yatan kod değişse bile, dışarıya sunulan arayüz (metot imzaları) aynı kaldığı sürece, bu nesneyi kullanan diğer kodlar etkilenmez.

B. Python'da Soyutlama Uygulaması

Python'da soyutlama, genellikle aşağıdaki yöntemlerle sağlanır:

  1. Kapsülleme (Özel Nitelikleri Gizleme): Kapsülleme ile verileri gizlemek, zaten bir soyutlama biçimidir. Kullanıcı, hesap.bakiye'ye doğrudan erişmek yerine, hesap.bakiyeyi_goster() metodunu kullanır. Nasıl çalıştığı (hangi _değişkenin okunduğu) gizlenir.

  2. Soyut Sınıflar ve Metotlar (abc Modülü): Bu, bir sınıfın somut nesne oluşturulmasını engelleyen ve alt sınıfların zorunlu olarak uygulaması gereken metotları tanımlayan en katı soyutlama şeklidir.


Python'da Soyut Sınıflar (abc Modülü Kullanımı)

Python'da bir sınıfı soyut hale getirmek için yerleşik abc (Abstract Base Classes) modülü kullanılır.

  • Soyut Sınıf: Kendi başına bir anlamı olmayan, sadece ortak bir arayüz tanımlayan sınıftır.

  • Soyut Metot: Sınıf içinde sadece tanımlanan, ancak gövdesi olmayan metottur. Alt sınıflar bu metodu mutlaka uygulamak zorundadır.

  • Örnek: Şekil Soyut Sınıfı

from abc import ABC, abstractmethod
# ABC'den miras alarak bu sınıfı soyut bir temel sınıf yaparız
class Sekil(ABC): 
    
    # Soyut metot. Alt sınıflar bunu uygulamak ZORUNDADIR.
    @abstractmethod
    def alan_hesapla(self):
        # Bu metodun gövdesi yok, sadece bir taahhüttür.
        pass
    
    # Geleneksel metot da içerebilir
    def tanimla(self):
        print("Bu bir geometrik şekildir.")

# ----------------------------------------------------
# Soyut Sınıfı Uygulayan Alt Sınıflar

class Kare(Sekil):
    def __init__(self, kenar):
        self.kenar = kenar
        
    # Soyut metodu uygulamak ZORUNLUDUR!
    def alan_hesapla(self):
        return self.kenar ** 2

# Kullanım
kare = Kare(5)
print(f"Karenin alanı: {kare.alan_hesapla()}")
kare.tanimla() # Miras alınan somut metot da çalışır.

# Hata Durumu: Eğer 'alan_hesapla' metodu uygulanmasaydı,
# Asagidaki satirda HATA alırdınız:
# soyut_sekil = Sekil() # Hata: Soyut sınıfın nesnesi oluşturulamaz

Neden Soyut Sınıflar Önemlidir?

Soyut sınıflar, bir "sözleşme" (contract) görevi görür. Kodunuzu okuyan veya kullanan herkese, bir alt sınıfın (örneğin Kare sınıfının) mutlaka alan_hesapla gibi kritik bir metodu uygulayacağını garanti eder. Bu, büyük projelerde kod kalitesini ve tutarlılığını artırır.

Soyutlama, programlama yaparken büyük resmi görmemizi sağlar. Karmaşık nesnelerin sadece temel arayüzlerini dış dünyaya sunarak, kodunuzu daha güvenli, daha basit ve gelecekteki değişikliklere karşı daha dayanıklı hale getirirsiniz.

Kendiniz Deneyebilirsiniz:

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?