top of page

BİLGİSAYAR BİLİMİ KUR 1 - 2. DÖNEM 17. HAFTA - NESNE YÖNELİMLİ PROG. - TASARIM DESENLERİ

Güncelleme tarihi: 1 Eki

ÜNİTE:


1.3. PROGRAMLAMA


KAZANIMLAR:


1.3.5.2. Proje geliştirme sürecinde işbirlikli olarak görev alır.






Tasarım Desenleri (Design Patterns)


Günlük yaşamda:


  • Python ile tekrar eden kodlar düzenlenebilir.

  • Python ile projelerde ortak yapı kurulabilir.

  • Python ile oyun tasarımı standartlaştırılabilir.

  • Python ile veri tabanı bağlantısı kolaylaştırılabilir.

  • Python ile uygulama yönetimi basitleştirilebilir.


Örneğin“Python ile tek bir nesnenin kullanılmasını Singleton tasarım deseniyle sağlayabiliriz.”







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:


  1. Yaratımsal (Creational) Tasarım Desenleri → Nesne oluşturma sürecini optimize eder.

  2. Yapısal (Structural) Tasarım Desenleri → Nesneler arasındaki ilişkileri düzenler.

  3. 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.


ree

Nasıl Çalışıyor?


  1. _instance değişkeni sınıf seviyesinde bir nesne saklıyor.

  2. new metodu sayesinde, eğer _instance değişkeni boşsa yeni bir nesne oluşturuluyor.

  3. 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.


ree

Nasıl Çalışıyor?


  1. EskiSistem sınıfı eski bir metod içeriyor.

  2. Adapter sınıfı, eski sistemin calistir() metodunu, yeni sistemde yeni_calistir() olarak kullanılmasını sağlıyor.

  3. 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.


ree
ree

Nasıl Çalışıyor?


  1. Kanal sınıfı, aboneleri liste şeklinde saklıyor.

  2. Abone sınıfı, bildirim aldığında ekrana yazdırıyor.

  3. 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.


ree

Açıklamalar


  1. _instance değişkeni, sınıftan sadece bir tane nesne oluşturulmasını sağlıyor.

  2. new metodu sayesinde ilk çağrıda nesne yaratılıyor, sonraki çağrılarda aynı nesne döndürülüyor.

  3. İ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.


ree

Açıklamalar


  1. EskiHesapMakinesi sınıfı topla(a, b) metodunu kullanıyor.

  2. 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.

  3. 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.



ree
ree

Açıklamalar


  1. HaberMerkezi sınıfı aboneleri liste halinde saklıyor.

  2. abone_ekle() metodu ile yeni aboneler ekleniyor.

  3. yeni_haber(haber) çağrıldığında, tüm abonelere bildirim gönderiliyor.

  4. 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








Yorumlar


bottom of page