Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  GRASP design patternlarından biridir.Türkçede uzman kalıbı olarak adlandırılmaktadır.

Nesnelere* sorumluluk atanması ile ilgilenen kalıptır.Bu kalıp derki; bir sorumluluk atamanız gerekiyorsa öncelikle o sorumlulukla yeterli ve gerekli bilgiye kim sahipse, sorumluluğu ona atayın.Bu temelde bir yapı oluşturun.Çünkü yazılım sistemlerini oluşturan sınıfların* sayısı yüzler hatta binlercedir.Bu sınıfların* gerçekleştireceği sorumlulukların sayısı da o denli fazladır.Kolay anlaşılabilir, bakımı yapılabilir* ve genişleyebilen sistemlerin gelecekte yaşaması* için, bu kalıba uymaları gerekecektir.

Örnek olarak bir satış sistemini düşünelim.Burada Sale,SaleLine ve ProductInfo diye 3 tane sınıfımız* olsun.Information Expert kalıbına uygun bir yapı için sorumlulukları atamaya çalışalım.Sorumluluklar bir satışın toplamı, bir satış kaleminin toplam tutarı ve ürünün fiyatı olsun.Atama işlemini yaparken; satış toplamını Sale sınıfına, satış kalemi toplamını SaleLine sınıfına, ürün fiyatını da ProductInfo sınıfına atmamız gerekecektir.Bu gerçek hayatta şuna benzer:genel müdürsünüz ve bir aylık toplam masrafları görmek istiyorsunuz.Siz bunu gidip finans müdürüne diyorsunuz, O da gidip teknik işler amirine, satış amirine .... gibi alt şeflerden masraflarla ilgili bir rapor isteyecektir.Toplayacağı raporları özetleyip genel müdüre sunmaktadır.Genel müdür, gidip doğrudan alt birim şefleriyle konuşmaz.Herkesin sorumlulukları farklıdır.Kısacası, herkes kendine yeter ve gerek bilgiye sahip olmalıdır.

Bu sayede encapsulation da yapılmış olur.Her nesne* sadece kendine ait bilgiyle donatılmış olur.Birbirine az bağımlı* ve bakılabilir* sistemler gerçekleştirilmiş olur.

Bu kalıbın bir dezavantajı olarak bir örnek vermek gerekirse, veritabanına kayıt işlemleri örnek verilebilir.Böyle bir tasarım için hem Sale, hem SaleLine hem de ProductInfo sınıflarının* veritabanına bağlanabilmeleri için herbirinin ayrı ayrı veritabanı işlemlerini tanımlamaları gerekir.Yani herbirinin kendine ait bağlantıları vs. olması gerekecektir.Bu şekilde bir tasarımda Sale sınıfı* sadece satış ile ilgili bir sınıf* olmayacak, aynı zamanda başka sorumlulukları da gerçekleyen bir sınıf* haline gelecektir.Sonuçta, veritabanı işlemleri için başka sınıflarla* bağımlı olacağından, bağımlılık* artacaktır.
mennan
30 Haziran 2005 01:21
2.  Sorumluluk ataması yaparken hangi sınıfa sorumluluk verileceğine karar vermek bazen zor olabiliyor.

Örneğin Product ve Order sınıflarından birinde bir metod yazılacak diyelim; mesela koduna göre ürünlerin 1 aylık toplam satış miktarını döndüren bir metod. Bu metodu Order sınıfına da yazmak mümkün, Product sınıfına da. Çünkü iki sınıfı da ilgilendiren bir metod.

int Order.getMonthlySaleAmount(string productCode);
veya
int Product.getMonthlySaleAmount();

Sonuç olarak bir tanesine karar verir yazarsınız, olur biter.

fizikci
30 Haziran 2005 10:59
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1093 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen