310 likes | 473 Views
Paternler (İlk Beş). Yaratıcı Bilgi Uzmanı Az Bağımlılık Denetçi İyi Uyum. Yaratıcı. Problem: Herhangi bir sınıftan yeni bir nesne yaratma sorumluluğu kime ait olmalıdır ?
E N D
Paternler (İlk Beş) • Yaratıcı • Bilgi Uzmanı • Az Bağımlılık • Denetçi • İyi Uyum
Yaratıcı • Problem: Herhangi bir sınıftan yeni bir nesne yaratma sorumluluğu kime ait olmalıdır ? • Nesne tabanlı bir sistemde en genel faaliyetlerden bir tanesi nesnelerin yaratılması faaliyetidir. Dolayısıyla nesne yaratma sorumluluğunun atanması konusunda genel bir prensibe sahip olunması yararlı olacaktır. Bu sorumluluğun iyi belirlenmesi, tasarımda az bağımlılığın artması, yeniden kullanılabilirlik seviyesinin yükselmesi ve sarmalamanın desteklenmesi anlamına gelmektedir.
Çözüm • Aşağıdakilerden biri veya birkaçının doğru olması durumunda A sınıfından bir nesne yaratma sorumluluğunu B sınıfına verebiliriz: • B, A nesnelerini birleştirir. • B,A nesnelerini içerir. • B, A nesnelerini kaydeder. • B, A nesnelerini çok yakın kullanır. • B,A nesnesi yaratılırken gerekli olan verilere • B, A nesnelerinin yaratıcısıdır.
Tartışma • Yaratıcı genel olarak nesenelerin yaratılması ile ilgili sorumlulukların atanması işlerini yürütür.Yaratıcı paterninin düşünülmesindeki asıl amaç, herhangi bir durumda yaratılması gereken nesne ile onu yaratacak olan arasında bağlantı kurulmasıdır. • Birleştirici parçaları birleştirir • Kapsayıcı içerikleri içerir • Kaydedici kaydeder. • Bazen yaratıcı, yaratma sırasında gerekli olan bilgileri içeren sınıf aranarak da kolaylıkla bulunabilir.
Uyarılar • Bazen yaratma işi bazı karmaşık durumları içerebilir. • Performans gerekçesiyle geri dönüşüm nesnelerinin kullanılması, • Harici özellik değerlerine bağlı şartlı olarak benzer sınıfların oluşturduğu bir aileden bir nesnenin yaratılması • Bu tür nesneler için diğer patern prensipleri tercih edilebilir.
Monopol Örneği • Larman’ın Monopol Oyunu örneğinde oyun tahtası karelerden oluştuğu için Tahta yazılım nesnesi Kare yazılım nesnelerinden sorumlu durumdadır. Tahta Karelerin mantıksal mekanıdır.
Bilgi Uzmanı • Bilgi uzmanını belirlemek için genel toplamı belirlemek adına gerekli olan bilgileri içeren nesneleri arayabiliriz. • Problem : Nesnelere sorumluluk atanması sırasında dikkat edilen genel prensip nedir? • Çözüm: Sorumluluğu yerine getirecek bilgiye sahip olan sınıfa, yani bilgi uzmanına bir sorumluluk ata.
Tartışma • Bilgi Uzmanı, nesne tasarımında sürekli olarak kullanılan temel rehber prensiptir. • Uzman, anlaşılması güç veya fantazili bir fikir anlamında değil; nesnelerin sahip oldukları bilgilerle yaptıkları şeylerin genel sezgisini ifade etmektedir. • Bir sorumluluğun yerine getirilmesi genelde farklı sınıflardan türetilen nesnelere dağılmış bilgilerin bir araya getilmesini gerekitirir. • Eğer bilgi farklı nesneler arasında dağılmış ise işi paylaşmak için mesajlar aracılığıyla etkileşimde bulunurlar.
Uyarılar • Bazen bağımlılık ve uyum problemleri dolayısıyla uzmanın tavsiye ettiği çözümler arzu edilmeyebilir. • Farklı sistem bileşenlerini aynı komponent üzerine koyarak karıştırmak yerine örneğin uygulama mantığını bir yere veritabanını daha uzak bir yere koyun.
Yararları • Bilgi sarmalaması nesnelerin kendi görevlerini yerine getirmeleri açısından gereklidir. Bu durum daha bağımsız ve idame edilebilir sistemler için bir şart olan az bağımlılığı desteklemektedir. • Gerekli bilgiye sahip sınıflar üzeride dağılmış davranışlar iyi uyum içinde bulunan ve kolay anlaşılır sınıf tanımlarını desteklemektedir. • İyi uyum genellikle desteklenmektedir.
Monopol Örneği • Eğer tahta üzerindeki kareler hakkında bilgi almak istiyorsanız ona nasıl ulaşılabileceğini bilen yazılım nesnesine bu sorumluluğu atamalısınız. Bu durumda Tahta yazılım nesnesi iyi bir seçim olacaktır. Çünkü Kare nesnesinin yaratıcısı yine Tahta nesnesidir. Fakat burada bilginin kare nesnesinden çekildiği unutulmamalıdır.
Az Bağımlılık • Bağımlılık bir elemanın bir diğer elemanla ne ölçüde bağlantılı olduğu, ona ne kadar güvendiği ve onun hakkında ne kadar bilgiye sahip olduğunun göstergesidir.
Az Bağımlılık Paterni • Problem: • Az bağımlılık, değişimlerden az etkilenme ve yeniden kullanılabilirlik nasıl desteklenir? • Çözüm: • Öyle bir sorumluluk ata ki bağımlılık düşük seviyede kalsın.
Tartışma • Az bağımlılık bütün tasarım kararlarında akılda tutulması gereken bir prensiptir. Muhakkak suretle gözönünde bulundurulması gereken önemli bir hedeftir.Bir tasarımcının tasarımı değerlendirirken kullandığı önemli bir değerlendirme kriteridir.
Uyarılar & Yararlar • (Yaygın ve durağan elemanlara çok bağımlılık az rastlanan bir problemdir.) • Yararlar: • Nesneler diğer bileşenlerde yapılan değişikliklerden etkilenmezler. • Nesnelerin izolasyon açısından anlaşılması basittir. • Nesneler yeniden kullanım için uygundur.
Monopol Örneği • Eğer biz kare nesnesi hakkında bilgi almak için Tahta nesnesi yerine gelişigüzel bir sınıf oluştursaydık bu sınıf hem Tahta nesnesinden hem de Kare nesnesinden bilgi almak zorumda kalacaktı. Bu da haliyle bağlantı sayısını artıracak yani bağımlılığı artıracaktı.
Paternler Arasındaki Bağlantılar • Daha önce Bilgi Uzmanının Az Bağımlılığı desteklediğini söylemiştik. Aslında bu durum paternlerin yılların getirdiği tecrübeler sonucunda oluşturulmuş olmasının doğal bir sonucudur. Genelde farklı fikirlerden yola çıksanız bile aynı sonuca varırsınız; çünkü fikirler (paternler)birbirlerini desteklemektedir.
Denetçi • Denetçi sistem olaylarının alınmasından ve gerçekleştirilmesinden sorumlu olan bir arayüz nesnedir.Sistem faaliyetlerinin gerçekleştirilmesi için gerekli yöntemleri belirlemektedir.
Problem : • Bir sistem giriş olayının yönetilmesinden kim sorumlu olacaktır? • Model-View-Controller mimari paterninin varlığı düşünülmektedir. Bu mimari kullanıcı arayüzleri (Views) ile diğer sistem fonksiyonelitesini ve bu fonksiyoneliteye erişimi kortrol eden yapıyı (Models) birbirlerinden ayırmaktadır.
Çözüm • Sistem olaylarının alınması ve yönetilmesi sorumluğunu aşağıdakilerden birini temsil eden sınıfa veriniz: • Tüm sistemi, araçları veya altsistemi temsil eder • Sistem olaylarının meydana geldiği kulllanım senaryolarını temsil eder.
Tartışma • Denetçi paterni genel kabul görmüş uygun seçimler için bir rehber hizmeti sunmaktadır. • Bir kullanım durumu için meydana gelen bütün sistem olayları için tek bir denetçinin kullanılması arzu edilen bir durumdur. Böylelikle denetçideki kullanım durumu bilgisinin idame edilmesi mümkün olacaktır.
Monopol Örneği • İlk sistem mesajı “Oyun Oyna” mesajıdır. Bu mesajı hangi nesne almalıdır.? • Eğer sınırlı sayıda sistem faaliyeti varsa MonopolyGame nesnesi bu iş için uygun olabilir. Aksi durumda çok fazla faaliyet olacaksa İyi Uyum paternini göz önünüde bulundurmalıyız.
İyi Uyum • Uyum bir elemanın sorumluluklarının ne derecede odaklanılmış ve birbirleriyle güçlü ilişkilendirildiğinin ölçüsüdür. • İyi Uyum: Eğer bir eleman birbirleriyle iyi ilişkilendirilmiş sorumluluklara sahipse ve çok büyük miktarlarda iş yükü yoksa bu eleman iyi uyuma sahiptir denilir.
İyi Uyum Paterni • Problem: • Karmaşıklık nasıl yönetilebilir bir seviyede tutulabilir? • Çözüm: • Sorumluluğu iyi belirle böylece uyum iyi olsun.
Tartışma • Az Bağımlılık gibi İyi Uyum da tasarım kararları alınırken dikkat edilmesi gereken bir konudur; sürekli altı çizilmesi gereken bir hedeftir.
Monopol Örneği • Daha önceki slaytlardan :MonopolyGame sınıfının denetçi olduğunu biliyoruz: • Eğer :MonopolyGame sınıfı yazılım nesneleri içinde oyunla ilgili fonksiyonların çoğunu yerine getiriyorsa az bağımlılık var denilir. • Eğer bu fonksiyonlar diğer yazılım nesnelerine bırakılmışsa iyi uyumdan bahsedilebilir.
Patern İlişkileri • Az bağımlılık ve İyi Uyum paternleri doğal olarak birbirlerini tetiklemektedir. • Her ikisi nesne tabanlı sistemlerde büyük boyuttaki problemleri küçük yönetilebilir parçalar haline getirmektedirler. • Eğer parçalar çok basit ise onlardan çok oluduğu anlamına gelmektedir. • Eğer parçalar çok karmaşık ise hiçbiri anlaşılabilir olmayacaktır.
Uyum Örnekleri • Çok Az Uyum – Bir sınıf tek başına birçok fonksiyonel alandan sorumludur. • Az Uyum – Bir sınıf bir fonksiyonel alana ait karmaşık bir görevden tek başına sorumludur.
Orta Seviye Uyum – Bir sınıf biribirleriyle değil ama sınıf konsepti bazında matıksal dolaylı ilişkiye sahip birkaç alandan tek başına düşük seviyede sorumludur. • İyi Uyum – Bir sınıf bir fonksiyonel alanla ilgili orta seviyede sorumluluğa sahiptir ve görevini tamamlamak için diğerleriyle ortaklaşa çalışmaktadır.
Yararları • Sadelik ve tasarımın anlaşılırlığı artar • Bakım ve iyileştirme kolaylaşır • Az bağımlılık desteklenir.
Özet • Sorumlulukların akıllıca atanması nesne tasarımında oldukça önemli bir konudur.Sorumlulukların atanması işlemi genellikle etkileşim diyagramlarının çizilmesi sırasında ve programlama safhasında tanımlanmaktadır. • Paternler sorumlulukların atanması sırasında güzel tavsiyeler sunan problem/çözüm çiftleridir.