UML Etkileşim Diyagramları

Transkript

UML Etkileşim Diyagramları
Yazılım Modelleme ve Tasarımı
Yazılım Modelleme ve Tasarımı
UML Etkileşim Diyagramları (Interaction Diagrams)
Tasarım yöntemlerini incelemeden önce tasarımı ifade etmek için kullanılacak olan
UML etkileşim diyagramları incelenecektir.
UML'de iki tür etkileşim diyagramı vardır:
b) Ardışıl Diyagramlar (Sequence Diagrams):
Nesneler yan yana gösterilir. Etkileşimler (mesajlar) oluştukları sıra ile yukarıdan
aşağıya doğru çizilirler.
a) İletişim Diyagramları (Communication Diagrams)
UML 1.x’te: İşbirliği Diyagramları (Collaboration Diagrams)
Nesneler arası etkileşim bir graf şeklinde gösterilir.
sd Ornek
:A
cd Ornek Diyagram
message1()
Diyagramın adı
UML 2.0
message2()
:A
A’dan
yaratılan herhangi
bir nesne
message3()
1: message2()
2: message3()
B’den
yaratılan
adı nb olan nesne
Her yeni nesne çizimin sağına eklenir.
- Fazla yer kaplar.
+ Mesajların zaman içinde sıralarını anlamak daha kolaydır.
nb : B
+ Az yer kaplar.
+ Mesajların dallanmalarını göstermek kolaydır.
- Mesajların sıralarını anlamak zordur.
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.1
Yazılım Modelleme ve Tasarımı
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.2
Yazılım Modelleme ve Tasarımı
İletişim (Communication) Diyagramları
Mesaj Sıra Numaraları:
Mesajlar gönderildikleri sıraya göre numaralanırlar. İlk mesaja numara verilmez.
Bir mesajın neden olduğu diğer mesajlara da sebep mesajın numarasına bağlı alt
numaralar verilir.
Aşağıdaki örnekte, ClassA'nın bir nesnesi ClassB'nin bir nesnesine msg2 mesajını
yolladığında ClassB'nin nesnesi de ClassC'nin nesnesine msg3 mesajını
gönderecektir. msg3 sonlandığında tekrar msg2'ye dönülecektir.
Örnek:
Mesajın yönü
makePayment(cashTendered)
İlk iç mesaj
: Register
1: makePayment(cashTendered)
Bağlantı
Sisteme
ilk mesaj
nb : B
message1()
:Sale
1.1: create(cashTendered)
Birinci
:Payment
parametre
Nesne
msg1()
1: msg2()
:ClassA
class Sale{
// C++
private:
Payment * payment;
public:
void makePayment(const Money& cashTendered){ // Sale makePayment metodu
payment = new Payment(cashTendered);
// Payment sınıfından nesne yaratılıyor
// Diğer işlemler ...
}
// Diğer üyeler ...
};
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
İkinci
A
Nesne yaratılıyor
Kurucu (constructor )
çalışır
©2002 - 2012 Dr. Feza BUZLUCA
4ek.3
Yazılım Modelleme ve Tasarımı
Üçüncü
:ClassB
B
C
msg2()
msg3()
1.1: msg3()
1:
1.1:
2.1: msg5()
2: msg4()
:ClassC
msg4()
Beşinci
2:
msg5()
2.2: msg6()
Dördüncü
D
msg1()
2.1:
msg6()
2.2:
:ClassD
Altıncı
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.4
Yazılım Modelleme ve Tasarımı
Koşullu Mesajlar:
Bu tür mesajlar sadece belli bir koşul gerçekleştiğinde gönderilebilirler.
Kendine mesaj:
Nesneler kendilerine
de mesaj gönderebilirler.
msg1()
Nesne yaratma: Bir mesaj nesne yaratılmasını sağlamak
için gönderiliyorsa normal olarak bu mesaja create adı
verilir ve bir kurucu (constructor) çağrısı olarak
yorumlanır.
Eğer başka bir isim verilirse <<create>> tanımlayıcısı
kullanılır.
: Register
1: create(cashier)
:Sale {new}
:Register
: Register
«create»
1: make(cashier)
Koşullu mesaj
message1()
1 [ color = red ] : calculate()
: Foo
Koşulsuz olarak
msg2 ya da msg4'ten sonra
:Sale {new}
: Bar
Karşılıklı Dışlamalı Mesajlar:
Nesneler arası etkileşim belli bir koşula bağlı olarak farklı yollar izleyebilir.
Aşağıdaki örnekte "test" koşuluna bağlı olarak a ya da b yollarından biri izlenecektir.
:ClassE
1a ve 1b karşılıklı dışlamalı
iki koşullu yoldur
2: msg6()
1: clear()
msg1()
:ClassA
1a [test] : msg2()
1b [not test] : msg4()
:ClassD
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.5
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
1b.1: msg5()
:ClassB
1a.1: msg3()
:ClassC
©2002 - 2012 Dr. Feza BUZLUCA
4ek.6
1
Yazılım Modelleme ve Tasarımı
Yazılım Modelleme ve Tasarımı
Döngüler (İterasyonlar):
Ardışıl Diyagramlar
Örnek:
Iterasyon * ile belirtilir.
İstenirse döngü koşulu da yazılır.
: Register
runSimulation ()
: Simulator
Nesne
: Sale
makePayment(cashTendered)
1 * [i:=1..N ] : num := nextInt()
makePayment(cashTendered)
:Random
create(cashTendered)
: Payment
Çoklu Nesneler (Multiobject):
Bazı durumlarda bir çok nesneden oluşan yapılara (list, map, set) aynı mesajın
gönderilmesi gerekir. Bu tür yapılara çoklu nesne (multiobject) denir. Bu nesne
grupları iki dörtgen (UML 1.X) şeklinde gösterilir.
Aynı mesaj gruptaki
tüm nesnelere gönderiliyor
UML 1.X’te çoklu nesneler
t := getTotal ()
1 *: st := getSubtotal()
: Sale
:SalesLineItem
*
UML 2.0’da çoklu nesneler
t := getTotal ()
lineItems[i]:
SalesLineItem
1 *: st := getSubtotal()
: Sale
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.7
Yazılım Modelleme ve Tasarımı
: Register
: Sale
msg1()
a:=msg2()
msg3()
retValue
msg4()
msg5()
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.8
Yazılım Modelleme ve Tasarımı
Kendine mesaj:
Karşılıklı Dışlamalı Mesajlar (UML 1.X):
Nesne Yaratma / Yok Etme:
:Register
msg1()
Geri Dönüşler:
Metotlardan geri dönüşleri
göstermek çoğunlukla gerekli
değildir. Gerekli olduğu durumlarda
geri dönüşler kesik çizgi ile
gösterilir.
Çağırılan metodun geri döndürdüğü
değer istenirse mesajın başına
yazılır istenirse geri dönüş
çizgisinin üstüne yazılır.
Kurucu
(Constructor)
:Sale
clear()
:A
:B
msg1()
create(cachTendered)
:C
[x<10] calculate()
:Payment
[x>=10] calculate()
....
<<destroy>>
Koşullu Mesajlar:
X
Destructor
sd koşullu
:Foo
Koşul olduğunu belirten
Anahtar sözcük
msg1()
Yeni Format (UML 2.x):
sd if-then-else
:Bar
:A
msg x
alt
[ color = red ]
calculate()
opt
:B
:C
msg1()
[ x < 10 ]
calculate()
msg y
[ else ]
calculate()
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.9
Yazılım Modelleme ve Tasarımı
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.10
Yazılım Modelleme ve Tasarımı
Nesne gruplarına (Multiobject) mesajlar:
İterasyonlar (Döngüler):
UML 1.X:
:Sale
:SalesLineItem
t := getTotal()
* st := getSubtotal()
:Simulator
:Random
:Programmer
runSimulation()
loop
[i:=1..N]
Dizinin i.elemanı
UML 2.0:
hours := nextInt()
Dizinin i.elemanı
work(hours)
:Sale
eat()
lineItems[i]
:SalesLineItem
t := getTotal()
loop
:Sale
lineItems[i]
:SalesLineItem
t := getTotal()
st := getSubtotal()
loop
[i<lineItemSize]
st := getSubtotal()
i++
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.11
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.12
2
Yazılım Modelleme ve Tasarımı
Diyagramlar arası etkileşim (Interaction) (UML 2.x):
Altprogram çağırmak gibidir. Çok tekrarlanan işlemler için kullanılır.
sd etkilesim
:A
:B
:C
msg1()
msg1()
ref
Tekrar
msg2()
sd Tekrar
:B
:C
msg x()
msg y()
msg z()
www.akademi.itu.edu.tr/buzluca
www.buzluca.info
©2002 - 2012 Dr. Feza BUZLUCA
4ek.13
3

Benzer belgeler

2. Iterasyon

2. Iterasyon www.akademi.itu.edu.tr/buzluca www.buzluca.info

Detaylı

Tasarım Modelinin (Design Model) Oluşturulması

Tasarım Modelinin (Design Model) Oluşturulması Bu aşamada, nesneye dayalı yönteme göre problemin mantıksal çözümü oluşturulur. Tasarım modelinde yazılım sınıfları ve aralarındaki işbirliği (etkileşim) belirlenir. Bu model iki tip UML diyagramı ...

Detaylı

(Application Domain Model)

(Application Domain Model) www.akademi.itu.edu.tr/buzluca www.buzluca.info

Detaylı

8.GoF Kalıpları

8.GoF Kalıpları Aşağıdaki örnekte, ClassA'nın bir nesnesi ClassB'nin bir nesnesine msg2 mesajını yolladığında ClassB'nin nesnesi de ClassC'nin nesnesine msg3 mesajını gönderecektir. msg3 sonlandığında tekrar msg2'...

Detaylı