Sınıflara isim verirken, her kelimenin baş harfinin büyük olması diyagramlarımızın başkaları tarafından incelenmesi sırasında kolaylık sağlayacaktır. |
Bir özelliğin değerini sonradan değiştirebileceğimiz gibi yandaki "yaş" özelliği gibi varsayılan bir değer de verebiliriz. Bu değerler number,string, boolean,float,double veya kullanıcı tanımlı bir tür olabilir. |
İşlevler özelliklerden farklı olarak birtakım bilgilere ihtiyaç duyabilir, veya birtakım bilgileri dışarıya verebilir, ya da bunların hiçbirini yapmaz. Yandaki işlev1, birtakım işler yapar bunun için dışardan bir bilgiye ihtiyaç duymaz ve dışarıya bir bilgi vermez, işlev2, işini yapabilmek için birtakım bilgilere ihtiyaç duyar.Mesela, işlev2, eğer bir toplama işlemi yapıyorsa toplanacak elemanları ister. işlev3 ise iş yaptıktan sonra işinin sonucunu dış dünyaya verir. |
Bir sınıf diyagramında kullanılabilecek temel yapılar bunlar olmasına rağmen "constraints" ve "notes" dediğimiz elemanları da ekleyebiliriz.Notes(Notlar) genellikle işlevlerin ve özelliklerin hakkında bilgi veren opsiyonel kutucuklardır.Constraints (koşullar) 'ler ise sınıfa ilişkin birtakım koşulların belirtildiği ve parentez içinde yazılan bilgilerdir.
Şimdi de sınıflar arasındaki ilişkiye(Assocation) değinelim.
ASSOCATION (Sınıflar arası ilişki)
Sınıflar arasındaki ilişkiyi göstermek için iki sınıf arasına düz bir çizgi çekilir.İlişkiyi gösteren çizginin üzerine ilişkinin türü yazılır.Mesela Kitap ve İnsan sınıfları olsun.Kitap ile insan sınıfı arasında "okuma" ilişkisi vardır.Bunu sınıf diyagramında aşağıdaki gibi gösteririz.
Bir İnsan sınıfı gerçek nesnesi olan "Ali" ile kitap sınıfı gerçek nesnesi olan "UML kitabı" arasında "okuma" ilşkisi vardı.Kısaca şöyle deriz. Ali, UML kitabı okur.Tabi gerçek bir sistemde ilşkiler bu kadar basit olmayabilir. Bazı durumlarda ikiden fazla sınıf arasında ilişki olabilir, o zaman da her sınıf arasındaki ilşkiyi tanımlamamız gerekir.Bazı durumlarda ise belirtilen ilişkinin bir kurala uyması gerekebilir.Bu durumda ilişki çizgisinin yanına "constraints"(ilişki kuralı) yazılır. |
Bazı durumlarda sınıflar arasındaki ilişki, bir çizgiyle belirtebileceğimiz şekilde basit olmayabilir.Bu durumda ilişki sınıfları kullanılır.İlişki sınıfları bildigimiz sınıflarla aynıdır.Özellik ve işlev elemanları olabilir.Sınıflar arasındaki ilişki eğer bir sınıf türüyle belirleniyorsa UML ile gösterimi aşağıdaki şekildeki gibi yapılır.
Görüldüğü gibi Müşteri ile Kitapçı sınıfı arasında "satın alma" ilişkisi vardır.Fakat müşteri satın alırken Ücret ödemek zorundadır.Bu ilişkiyi göstermek için Ücret sınıfı ilişki ile kesikli çizgi ile birleştirilir. |
Burda 1 yüzbaşı 100 Er'e komut(emir) verebilir anlamı vardır. |
-> Bire-bir
-> Bire-çok
-> Bire-bir veya daha fazla
-> Bire-sıfır veya bir
-> Bire-sınırlı aralık (mesela:bire-[0,20] aralığı)
-> Bire-n (UML de birden çok ifadesini kullanmak için '*' simgesi kullanılır.)
-> Bire-Beş yada Bire-sekiz
Diğer bir ilişki türü ise bir sınıfın kendisiyle kurduğu ilişkidir.Bu tür ilişkiler genellikle bir sınıfın sistemde birden fazla rolü varsa ortaya çıkar.Bu tür ilişkilere "reflexive associations" denir.Bu tür bir ilişki UML ile aşağıdaki gibi gösterilir.
Patron bir eleman olmasına rağmen kendisi gibi eleman olan birden çok çalışan 'dan sorumludur. |