12 Şubat 2016 Cuma

UML TEMELLERi



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 sınıfın çeşitli özellikleri olabilir.Mesela, bir insan nesnesi olan 'ali' nesnesinin yaşı bir özellik(attribute) bildirir. Bir sınıfın özellikleri SınıfAdı'nın hemen altına yazılır. Bir sınıfın hiç özelliği olmayabileceği gibi birden fazla özelliği de olabilir. Aşağıda bir sınıfın özelliklerinin grafik olarak gösterimi vardı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.
Sınıfların bir diğer önemli elemanı da işlevlerdir (operations). İşlevler bir sınıfta iş yapabilen elemanlardır.Bu iş başka bir sınıfa yönelik olabileceği gibi kendi içindeki bir iş de olabilir.Class diyagramında işlevler aşağıdaki gibi özelliklerin hemen altında gösterilir.
İş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.
Şu ana kadar gördüğümüz ilişkiler bire-bir ilişkilerdi.İlişkiler bire-bir olmak zorunda değildir.Bir sınıf, n tane başka bir sınıf ile ilişkiliyse buna bire-çok ilişiki denir.Mesela Yüzbaşı ile Er arasında bire-yüz bir ilişki vardır.Diyagramda bunu gösterirken Yüzbaşı sınıfına 1 Er sınıfına ise 100 yazacağız.Gösterimi aşağıdaki gibidir.
Burda 1 yüzbaşı 100 Er'e komut(emir) verebilir anlamı vardır.
En temel ilişkiler aşağıdaki gibi listelenebilir:

-> 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.
Share: