BİLGİSAYAR BİLİMİ KUR 1 - 2. DÖNEM 17. HAFTA - NESNE YÖNELİMLİ PROG. - TASARIM DESENLERİ
- egitimdebilisim.com
- 10 Tem 2024
- 3 dakikada okunur
Güncelleme tarihi: 3 Nis
ÜNİTE:
1.3. PROGRAMLAMA
KAZANIMLAR:
1.3.5.2. Proje geliştirme sürecinde işbirlikli olarak görev alır.
PYTHON - Design Patterns (Tasarım Desenleri)
Python'da Tasarım Desenleri (Design Patterns), yazılım geliştirme süreçlerinde sık karşılaşılan problemlere genel çözümler sunan, tekrar kullanılabilir şablonlardır. Bu desenler OOP (Nesne Yönelimli Programlama) mantığıyla çalışır ve kodun daha esnek, okunabilir ve bakımı kolay olmasını sağlar.
Tasarım desenleri üç ana kategoriye ayrılır:
Yaratımsal (Creational) Tasarım Desenleri → Nesne oluşturma sürecini optimize eder.
Yapısal (Structural) Tasarım Desenleri → Nesneler arasındaki ilişkileri düzenler.
Davranışsal (Behavioral) Tasarım Desenleri → Nesneler arasındaki iletişimi yönetir.
Şimdi bu kategorilerden en çok kullanılanlara basit örneklerle bakalım:
1. Yaratımsal Tasarım Desenleri
Bu desenler nesne oluşturma süreçlerini düzenler.
Singleton (Tek Nesne) Deseni
Bu desen, bir sınıftan yalnızca bir tane nesne oluşturulmasını sağlar.

Nasıl Çalışıyor?
_instance değişkeni sınıf seviyesinde bir nesne saklıyor.
new metodu sayesinde, eğer _instance değişkeni boşsa yeni bir nesne oluşturuluyor.
Aynı sınıftan tekrar bir nesne oluşturmaya çalışırsan, önceden oluşturulan nesne döndürülüyor.
✅ Avantaj: Bellek kullanımını optimize eder.❌ Dezavantaj: Çoklu iş parçacığında (multithreading) dikkatli kullanılmalıdır.
2. Yapısal Tasarım Desenleri
Bu desenler nesneler arasındaki ilişkileri organize eder.
Adapter (Adaptör) Deseni
Farklı arayüze sahip nesnelerin uyumlu çalışmasını sağlar.

Nasıl Çalışıyor?
EskiSistem sınıfı eski bir metod içeriyor.
Adapter sınıfı, eski sistemin calistir() metodunu, yeni sistemde yeni_calistir() olarak kullanılmasını sağlıyor.
Böylece eski sistemin kodlarını değiştirmeden yeni sistemle uyumlu hale getiriyoruz.
✅ Avantaj: Eski kodları değiştirmeden yeni sistemlere uyum sağlar.❌ Dezavantaj: Fazladan bir katman ekler, bazen karmaşıklık yaratabilir.
3. Davranışsal Tasarım Desenleri
Bu desenler nesneler arasındaki iletişimi düzenler.
Observer (Gözlemci) Deseni
Bir nesne değiştiğinde, ona bağlı olan diğer nesnelerin de otomatik olarak haberdar olmasını sağlar.


Nasıl Çalışıyor?
Kanal sınıfı, aboneleri liste şeklinde saklıyor.
Abone sınıfı, bildirim aldığında ekrana yazdırıyor.
yeni_video() metodu çağrıldığında, tüm abonelere haber veriliyor.
✅ Avantaj: Gevşek bağlı (loosely coupled) bir yapı sağlar.❌ Dezavantaj: Çok fazla gözlemci olduğunda performans düşebilir.
Özet
Singleton → Tek nesne oluşturmayı garanti eder.
Adapter → Eski kodu yeni sisteme uyumlu hale getirir.
Observer → Bir değişiklik olduğunda tüm bağlı nesneleri bilgilendirir.
Design Patterns (Tasarım Desenleri) Özet Video:
Design Patterns (Tasarım Desenleri) Alıştırmaları:
1. Singleton - (Tek Nesne) Alıştırma
📌 Görev:
Veritabanı bağlantısı oluşturan bir sınıf yaz.
Bu sınıftan sadece tek bir nesne oluşturulsun.
💡 İpucu:
new metodunu kullan.
Aynı sınıftan ikinci kez nesne oluşturduğunda aynı nesneyi döndürmeli.

Açıklamalar
_instance değişkeni, sınıftan sadece bir tane nesne oluşturulmasını sağlıyor.
new metodu sayesinde ilk çağrıda nesne yaratılıyor, sonraki çağrılarda aynı nesne döndürülüyor.
İlk oluşturulduğunda "Veritabanı bağlantısı kuruldu!" yazacak, ancak ikinci kez oluşturulmaya çalışıldığında yeni bir bağlantı açılmayacak.
2. Adapter - (Dönüştürücü) Alıştırma
📌 Görev:
EskiHesapMakinesi sınıfı topla(a, b) metoduna sahip.
Yeni sistem hesapla(a, b) metodunu kullanıyor.
Bir adaptör yaz ve eski sınıfı yeni sisteme uygun hale getir.
💡 İpucu:
Adapter sınıfı içinde, hesapla(a, b) çağrıldığında eski sınıfın topla(a, b) metodunu kullan.

Açıklamalar
EskiHesapMakinesi sınıfı topla(a, b) metodunu kullanıyor.
Adapter sınıfı eski nesneyi saklıyor ve yeni sistemin hesapla(a, b) çağrısını eski topla(a, b) metoduna yönlendiriyor.
Sonuç olarak eski sistemi değiştirmeden yeni sistemde kullanabiliyoruz.
3. Observer - (Gözlemci) Alıştırma
📌 Görev:
HaberMerkezi adında bir sınıf oluştur.
Bu sınıfa abone olan kişilere yeni haberler gönderilsin.
abone_ekle() ile abone ekleyebilmeli.
yeni_haber() çağrıldığında tüm abonelere haber gönderilmeli.
💡 İpucu:
Aboneleri bir liste içinde sakla.
yeni_haber() metodu, tüm aboneleri bilgilendirsin.


Açıklamalar
HaberMerkezi sınıfı aboneleri liste halinde saklıyor.
abone_ekle() metodu ile yeni aboneler ekleniyor.
yeni_haber(haber) çağrıldığında, tüm abonelere bildirim gönderiliyor.
Abone sınıfı, haberleri ekrana yazdırıyor.
Design Patterns (Tasarım Desenleri) Alıştırma Çözümleri Özet Video:
Ödev:
Observer - (Gözlemci) Alıştırma
📌 Görev:
HaberMerkezi adında bir sınıf oluştur.
Bu sınıfa abone olan kişilere yeni haberler gönderilsin.
abone_ekle() ile abone ekleyebilmeli.
yeni_haber() çağrıldığında tüm abonelere haber gönderilmeli.
💡 İpucu:
Aboneleri bir liste içinde sakla.
yeni_haber() metodu, tüm aboneleri bilgilendirsin.
Oluşturduğunuz kodların fotoğrafını aşağıdaki mail adresine gönderiniz.
Maile isim soy isim, sınıf ve okul numarası bilgilerinizi yazmayı unutmayınız.
egitimdebil@gmail.com
Önerilen program: IDE - PYTHON (Bilgisayarla çalışmayanlar, kodları deftere yazıp fotoğrafını gönderebilirler.)
Bilişim Teknolojileri Öğretmeni: İshak BEZCİ
Son gün ve saat : Pazar gece 12.00
Комментарии