1.09.2009

İşbirliği (Collaboration) diyagramı

İşbirliği diyagramları nesneler arasındaki ilişkileri ve aralarında gezen mesajların sırasını gösterir. Nesneler kutular ile gösterilirken, oklar nesnelerin arasında gezen mesajları gösterir. Mesajların yanındaki numaralar “sıra (dizge) numarası” olarak adlandırılır ve nesneler arasında iletilen mesajların sırasını gösterir. UML 1,2,3.. gibi numaralandırma sistemlerinin yanında 1.1, 1.2, 1.3, 2.1, 2.2,... gibi numaralandırma sistemlerini de kabul edilmektedir.
Aşağıdaki örnekte ise sipariş verme use case’i ile ilgili basit bir işbirliği diyagramını göstermektedir.. Bu sefer iki noktadan sonra sınıf isimleri yer almaktadır. Bunun nedeni ise bu sınıftan türetilen tüm nesnelerin aynı şekilde davranacağındandır.
İşbirliği diyagramlarında nesneler iki türde yer alır. Tedarikçi (supplier) ve istemci (client). Bu iki kavram işbirliği diyagramlarında parametreler gösterilirken karşımıza çıkar. Temel olarak tedarikçi nesneler çağrılan metodu sunan nesnelerdir. Bir dizge diyagramında aradaki bağlantıyı gösteren okun ucundaki nesne, mesajı alan ve çağrılan metodu sunan tedarikçi nesnedir. İstemci nesneler tedarikçi nesne üzerindeki metodları çağırır.
İşbirliği diyagramında kullanılan nesneleri daha detaylı incelersek:
Nesne: Yukarıdaki işbirliği diyagramında bize dizge diyagramlarından da tanıdık geleceği üzere nesne aynı şekilde gösterilmektedir. Nesne kutusunun içerisinde yer alan “a” harfi nesneyi, “A” harfi ise sınıfı temsil etmektedir.
Senkron mesaj: Gönderildiği nesneden yanıt bekleyen mesajlardır ve belirli bir süre sonra, işlem tamamlandığında aynı bağlantı üzerinden yanıt alınmaktadır. Bir senkron mesaj
ile gösterilirken geri dönen yanıt da
işaretiyle gösterilir.
Asenkron mesaj: Senkron mesajların aksine cevap beklemeyen mesajlardır. Bir işbirliği diyagramında asenkron mesaj aşağıdaki simge ile gösterilir.
Prosedür çağrısı: Yukarıdaki diyagramda “b” nesnesi “c” nesnesi üzerinden bir prosedürü çağırmaktadır.
Sıra numarası: İşbirliği diyagramlarında zaman bilgisi bulunmadığından mesajlaşmalarda sıra numarası kullanılır. Dizge diyagramlarında zaten bir zaman ekseni mevcut olduğundan sıra bilgisini yazmak seçime bağlıdır. Fakat işbirliği diyagramlarında zamanı ekseni olmadığından mesaj numarası kullanmak zorunludur.
Belirsiz nesne (Anonymous object): Bir sınıftan türeyen her nesnenin aynı şekilde davranacağının düşünüldüğü tasarımlarda sınıftan türeyen nesne için isim kullanılmayabilir. Bu durumda nesne adı belirtilmez ve belirsiz nesne “:A” şeklinde sadece sınıf adı ile nitelenir.
Kendine referans (Self-reference): Kendi üzerindeki bir metodu çağıran nesnedir. Çoğu durumda nesne, kontrol amaçlı olarak sahip olduğu metodları kullanabilir.
Zaman aşımı (Timeout): Belirli bir zaman cevap gelmeyince çağrılan mesaj tipidir. Aşağıdaki gibi gösterilir.
Çoklu nesne (Multi object): Bir nesen kendi içerisinde birden fazla nesne içeriyorsa bu nesne çoklu nesne olarak tanımlanırve aşağıdaki gibi gösterilir.
Yorum: Diyagramın kim tarafından, ne zaman oluşturulduğunu ve kapsamını tutan bileşendir. Bilgi amaçlı olarak sağ üst köşeye konulabilir.
Karmaşık sistemler, tasarlanan görevlerine yerine getirmek için ortaklaşa çalışan bir çok nesne içermektedir. UML içindeki işbirliği diyagramları temel olarak bu nesneler arasındaki ilişkiye yoğunlaşırken dizge diyagramları mesaj sırası ile ilgilenmektedir. Her iki diyagram da pek çok noktada ortaklık gösterir. Aralarındaki farklara bir göz atmek istersek:
1. Dizge diyagramları, zamana bağımlı olarak nesneler arasındaki mesajlaşmayı gösterir. İşbirliği diyagramları ise zamandan bağımsızdır.
2. İşbirliği diyagramları ile tek bir diyagram üzerinde dinamik yapıyı ve nesnelerin statik ilişkisini göstermek mümkündür. Dizge diyagramları ise sadece dinamik yapıyı temsil eder.
3. Dizge diyagramları ilk analiz safhasında oluşturulurken işbirliği diyagramları daha çok tasarım aşamasında oluşturulur.
4. Dizge diyagramlarından mesajlaşma sıraları, işbirliği diyagramlarında ise ilişkiler daha kolay gözlemlenir. Büyük diyagramlar için işbirliği diyagramlarını takip etmek zorken dizge diyagramlarında bu iş daha kolaydır. Ancak işbirliği diyagramları daha az alanda daha çok bilgiyi gösterebilir.
5. Belirli bir amacı yerine getirmek üzere bir araya gelen nesneler arasındaki ilişkiler işbirliği diyagramları ile daha rahat görülür. Yine genel resmi görmek işbirliği diyagramları ile daha kolay olmaktadır.
6. Dizge diyagramlarındaki bir bağlantı bir nesneden diğer bir nesneye giden mesajı gösterirken işbirliği diyagramlarındaki bir bağlantı nesneler arasındaki bir ya da daha fazla mesajı gösterebilir.
7. Dizge diyagramlarında nesnelerin yaratılışı ve sonlandırışı daha kolay görülür. İşbirliği diyagramında ise aynı iş bu kadar kolay gerçekleştirilemez.
8. İşbirliği diyagramlarında zaman kavramı olmadığı için bir nesnenin ne zaman aktif ne zaman pasif olduğunu anlamak zordur. Bunu anlamak içn mesaj tiplerini incelemek gerekmektedir. Fakat dizge diyagramlarında bunu kavramak çok kolaydır.
9. İşbirliği diyagramları daha karışıuk dallanmalara (branching) ve eş zamanlı akış denetimine (concurrent flow of control) izin verirken dizge diyagramları doğası gereği çok daha basit dallanmalara müsaade etmektedir. Bu yönüyle işbirliği diyagramları daha karışık sistemleri modelleyebilmektedir.

Hiç yorum yok:

Yorum Gönder