2. Sınıf Diyagramları
Tanım
• Sınıf diyagramı: Bir sistemin yapısını; sistemdeki sınıfları,
sınıfların niteliklerini ve sınıflar arasındaki ilişkileri
göstererek ifade eden diyagramdır.
• Sistemi oluşturan sınıflar ve bunlar arasındaki ilişkiler
• Sistemin statik yapısını ifade eder.
• Yapısal (structural) bir diyagramdır.
• UML’deki en temel diyagram tiplerinden biridir.
• Sınıf diyagramları, nesneye-yönelik modellemenin
yapıtaşıdır.
2
3. Sınıf Diyagramları
• Sınıf diyagramı, sistem için tanımlanan tüm
sınıfları içermeyebilir.
• Bir sistemi modellemek için birden fazla sınıf
diyagramı kullanılabilir.
• Bir sistemle ilgili çizilen bir sınıf diyagramı
sistemin belirli bir görünümünü ifade ederken,
çizilen bütün sınıf diyagramları birlikte bütün
sistemi gösterir.
3
4. Sınıf Diyagramları
• Sınıf diyagramı temelde statik bakış açısı sunar.
– Yol Haritası gibi
• Nesneler şehirleri, ilişkiler şehirler arasındaki yolları gösterir
• Hedefe ulaşmak için hangi yolun takip edilmesi gerektiğini
söylemez
• Sınıf diyagramında hangi nesnelerin işbirliği
yaptığı belli,ancak nesnelerin nasıl işbirliği
yapacakları belli değildir.
– Nasıl sorusunun cevabı “sequence” veya
“collaboration”diyagramlarında tanımlanır
4
5. Sınıf Diyagramları
• Sınıf diyagramları, nesneye-yönelik
programlama dilleriyle doğrudan
eşleştirilebilen tek diyagram türüdür. Bu
yüzden de yazılım geliştiriciler tarafından sıkça
kullanılmaktadır.
• Sınıf diyagramları geliştirme boyunca kullanılır
• Sınıf diyagramı UML 2.0’da pek değişmemiştir.
5
6. Sınıf ve Nesne
• Sınıf nedir?
– Ortak durum ve davranışlara sahip nesneler aynı sınıf
altında gruplanır.
– UML diliyle sınıf bir çeşit sınıflandırıcı(classifier)’dır
• Örneğin, Volkswagen, Toyota ve Ford ortak özellikleri olan ve
ortak davranışlar gösteren birer arabadır. Öyleyse bunların
hepsini “Araba” sınıfıyla ifade edebilirim.
• Nesne nedir?
– Belirli bir sınıfa ait olgudur(instance).
• Örneğin Araba sınıfının bir nesnesi Toyota olabilir.
6
8. Sınıf Diyagramları
Nitelikler (Attributes)
• İki çeşit gösterim şekli vardır
– Satır içi (inlined)
– Sınıflar arası ilişkiler vasıtasıyla
• Çokluk (multiplicity), biriciklik (uniqueness) ve
sıralama (ordering) gibi kavramlar da
gösterilebiliyor.
8
9. Sınıf Diyagramları
Satır içinde gösterilen nitelikler
• Satır içinde gösterilen nitelikler için aşağıdaki
standart gösterim kullanılır.
– visibility / name : type multiplicity = default
{property strings and constraints} visibility ::=
{+|-|#|~} multiplicity ::= [lower..upper]
9
10. Sınıf Diyagramları
• visibility: Niteliğin görünürlüğünü belirtir.
– + : public
– - : private
– # : protected
– ~ : package
• / : Niteliğin türetilmiş(derived) bir nitelik olduğunu belirtir.
• name: Niteliğin adı
• type: Niteliğin türü.
• multiplicity: Niteliğin kaç tane olgusunun (instance) olabileceğini belirtir.
– Kullanılmadığında “1” tane olgunun olacağı anlaşılır.
– Bir tamsayı olabilir.
– Niteliğin belli bir aralıkta olgusu olabiliyorsa, bu aralığı belirleyen iki tamsayı köşeli parantez
içinde ve .. İle ayrılarak gösterilir.
– Üst limiti yoksa sınırı belirtmek için * simgesi kullanılabilir.
– Sıfır ya da daha çok olgusu olabileceği ifade edilmek istendiğinde ise * simgesi tek başına
kullanılır.
10
11. Sınıf Diyagramları
• default: Niteliğin varsayılan değeri varsa
belirtilir.
• property strings: Özellik ve etiketlerden oluşan
bir kısımdır. Biriciklik(uniqueness) ve
sıralama(ordering) gibi kavramları ifade etmek
için kullanılır.
• constraints: Nitelikle ilgili bir ya da daha fazla
kısıtlama belirtilebilir. Doğal dille ifade
edilebileceği gibi OCL ile de ifade edilebilir.
11
13. Sınıf Diyagramları
Sınıflar arasındaki ilişkiler vasıtasıyla gösterilen
nitelikler
• Daha ayrıntılı bir sınıf diyagramı
• Karmaşık türdeki nitelikler için daha açıklayıcı
bilgi sağlar.
13
15. Sınıf Diyagramları
İşlemler (Operations)
– Bir sınıfın gerçekleştirdiği işlemler
• Ekrana bir dörtgen çizme
• Listeden seçilen elemanlarının sayısını hesaplama
– İşlem imzası
• Operasyonlar şu gösterimle ifade edilir.
– visibility name ( parameters ) : return-type {properties}
– parameters:
• direction parameter_name : type [ multiplicity ] =
default_value { properties }
15
16. Sınıf Diyagramları
İşlem Gösterimi
• visibility: İşlemin görünürlüğünü belirtir.
• name: İşlemin adını belirtir. Yapılan işlemin
özünü açıklayan bir eylem kullanılır.
• return-type: İşlemin döndüreceği değerin
türünü belirtir.
• properties: İşlemle ilişkili kısıtlamaları ve
özellikleri (constraints and properties) belirtir.
16
17. Sınıf Diyagramları
Parametre Gösterimi
• direction: Parametre işlemde “nasıl kullanılır” sorusunun
cevabını belirtir. “in”, “inout“, “out” ya da “return” olabilir.
• parameter-name: Parametrenin adı.
• type: Parametrenin türü.
• multiplicity: İşleme geçilen parametrenin olgu sayısıyla ilgili
bilgi verir.
• default value: parametrenin varsayılan değeri.
• properties: parametre ile ilişkili kısıtlamaları ve özellikleri
(constraints and properties) belirtir.
17
19. Sınıf Diyagramları
• İşlemler ve Methodlar
– Operasyon, yalnızca bir davranışı ortaya çıkarmak
için (davranış tetikleme) kullanılacak bilgileri
içerirken; metot, bu davranışın gerçekte nasıl
implement edildiğini gösterir.
19
21. Sınıf Diyagramları
İLİŞKİLER (RELATIONSHIPS)
Dependency
– Sınıflar arasındaki en zayıf ilişkidir.
– İki sınıf arasında dependency ilişkisinin olması demek, bir sınıf diğer
sınıfı kullanır ya da onun bilgisine sahiptir demektir.
– “uses” ilişkisi vardır.
– Sürekli bir ilişki yok. (transient relationship)
– Bağımlı sınıfın nesnesi diğer sınıfın nesnesini gerektiğinde kullanır.
• Window “uses” WindowClosingEvent 21
22. Sınıf Diyagramları
Association
– Dependency ilişkisinden daha güçlü
– “has a” ilişkisi vardır.
– Kaynak sınıf, hedef sınıfın olgusunu nitelik olarak içerir.
– Hedef sınıf diğer sınıflar tarafından da kullanılabilir
(shared).
• Window “has a” Cursor
22
23. Sınıf Diyagramları
Association(Devam)
• Association ilişkisi isimlendirilebilir, hangi sınıfın hangi sınıfı
kullandığı (navigability) açıkça gösterilebilir.
• Multiplicity bilgisi açıkça gösterilebilir.
23
24. Sınıf Diyagramları
Aggregation
– Association ilişkisinin daha güçlü versiyonu
– Aidiyet gerektirir.
– İki sınıfın yaşam evreleri arasında bir ilişki gerektirebilir. Birbirlerinden
bağımsız olarak yok edilemeyebilirler.
– “Owns a” ilişkisi vardır
– Navigability, multiplicity gösterilebilir.
• Window “owns a” Rectangle
24
25. Sınıf Diyagramları
Composition
– Sınıflar arasında çok güçlü bir ilişki kurar
– Parça-bütün ilişkisi kurar
– Bütün rolündeki nesne yok edildiğinde parça da yok olur.
– “is part of” ilişkisi vardır.
– navigability, multiplicity gösterilebilir.
• TitleBar “is a part of” Window 25
26. Sınıf Diyagramları
Generalization
– Sınıf genelleştirmesi yapmak amaçlı kullanılır.
– “is a” ilişkisi vardır.
– İlişki isimlendirilmez, multiplicity tanımlanmaz.
– UML çoklu kalıtımı destekler.
• Cat “is a” Animal
26
28. Sınıf Diyagramları
Arayüz (Interface)
• Gerçekleştirimi olmayan işlemler içeren sınıf.
• Sınıfın dışarıyla nasıl iletişim kuracağını gösterir.
• Saf soyut sınıflardır.
• Normal sınıf gösterimiyle gösterilebilir. <<interface>>
sterotype’ı kullanılır.
28
29. Sınıf Diyagramları
Realization
• Bir çeşit genelleştirme (generalization) olarak
düşünülebilir.
• Arayüz sınıfını gerçekleştiren (realize eden) sınıf
arayüzdeki bütün işlemleri gerçekleştirmek
(implement) zorundadır.
29
31. Kütüphane Destek Sistemi
Gereksinimleri hatırlayalım…
• Kütüphane islemlerini desteklemek amacıyla web
tabanlı bir yazılım sistemi olusturulacaktır.
• Üye olmak isteyen kisi sisteme kayıt olacak ve kayıtlı
üyeler kayıtlı kitap ve dergileri ödünç alacaktır.
• Kisiler sisteme üye olmadan da kitap ve dergi
katalogunu görebileceklerdir.
• Kütüphane sistem yöneticisi, yeni kitap ve dergilerin
satın almasını yapacaktır. Popüler yayınlardan birden
çok kopya satın alınacaktır. Eski kitap ve dergiler, zaman
asımına ugradıklarında veya çok yıprandıklarında yok
edilecektir.
31
32. Kütüphane Destek Sistemi
• Sistemde, üye bilgilerini düzenleyecek, üye kayıt islemini
onaylayacak ve gerektiginde çevrimiçi yardım hizmeti
verebilecek bir kütüphane görevlisi kullanıcısı bulunacaktır.
• Kütüphane görevlisi kullanıcısı kitap veya dergi ödünç
islemleri ile ilgili olarak sisteme bilgi girecektir.
• Üye, kütüphanede kayıtlı olan ama o anda bulunmayan bir
kitap veya dergiyi rezerve edebilecektir. Kitap veya dergi
kütüphaneye geri döndürüldügünde, rezervasyonu yapan
üye e-posta yoluyla haberdar edilecektir. Rezervasyon, üye,
kitap veya dergiyi ödünç aldıgında veya üyenin özel istegi
üzerine iptal edilebilecektir.
32
33. Kütüphane Destek Sistemi
• Sistem; kitap ve dergi baslıklarının, kitap ve dergi kopyalarının,
üyelerin, ödünç islemlerinin ve rezervasyonların kaydedilmesine,
güncellenmesine ve silinmesine olanak saglayacaktır.
• Uygulama, isletim sisteminden bagımsız çalısabilecek ve modern bir
kullanıcı arayüzüne sahip olacaktır.
• Yazılım, merkezi bir veri tabanına baglanarak Web tabanlı olarak
çalısabilecektir. Son kullanıcılar sisteme standart bir Web tarayıcısı
ile baglanabilmeli ve kullanıcı makinenin üzerine herhangi baska bir
program yüklenmesine gerek kalmamalıdır.
• Sistem özel bilgilerin aktarımı söz konusu oldugu durumda Web
tarayıcı ile güvenli kanallar üzerinden iletisim saglayacaktır.
• Sistem yeni islevler eklemek suretiyle genisletilebilir olacaktır.
33