Not : UML yazısında diğer diagramlar var.
Class Diagram
Class diagram tasarımın (problem domain) static bir görüntüsünü verir. İşin nasıl yapıldığını anlatmaz sadece sınıfların yapısını belirtir.
Class diagram, diğer UML diagramlarına göre nesneye yönelik tasarıma göbekten bağlıdır. Başka bir iş için bence
kullanılamaz. Örneğin Functional Programming için Class Diagram kullanılabileceğini hayal bile edemiyorum.
Diğer UML diagramları - mesela Component Diagram, Deployment Diagram - nesneye yönelik tasarım ile bu kadar yakinen ilişkili değildirler.
Class Alan ve Metodları
Class alan metodları + (public) , # (protected) , - (private) karakterleri ile
başlar.
Class StereoType
Sınıflara da ilişkilerde olduğu gibi stereotype
verilebilir.
İlişkiler
Class diagramda temel olarak kullanılan 4 çeşit ilişki
vardır. Bunlar zayıftan kuvvetliye doğru olarak Dependency, Association, Aggregation ve Composition ilişkileridir. Aşağıdaki şekilde bazı ilişkiler görülebilir.
Not : UML standardında bir sınıfın property ve operation'ları yerine feature kelimesini kullanıyor.
1. Dependency - Bağımlılık
UML'de Class Diagram Connector ile belirtilir.
İki sınıftan birisi diğerini member variable olarak
değil, local variable veya parametre olarak kullanıyorsa aralarında bağımlılık vardır
denilir. Tüm UML ilişkileri arasında en zayıf
olanıdır.
One class depends on another if the independent class is a parameter variable or local variable of a method of the dependent class.
class a {
void foo(){
b object= new b();
object.baar();
}
}
class b {
void baar(){
}
}
Kesikli düz çizgi ile gösterilir.
Dependency'lere stereotype verilebilir. <<call>>, <<create>>,<<instantiate>>,<<send>> kullanılabilecek bazı standart stereotype
örnekleri. Eğer istersek kendi stereotype'larımızı da yaratabiliriz.
Örnekte <<throws>> gösteriliyor.
2. Association - Bağıntı
UML'de Class Diagram Connector ile belirtilir.
İki sınıf birbirini sınıf değişkeni (member variable) olarak kullanıyorsa aralarında association (bağıntı) var
denilir. Düz çizgi ile gösterilir. Bağıntının adı ve çokluğu (multiplicity) olabilir.
An association almost always implies that one object has the other object as a field/property/attribute (terminology differs).
Basitten biraz daha karmaşığa giden bir kaç örneğe bakalım.
Örnek'ğe bakarak Class A nesnesini, Class B tipinden bir değişken içerdiğini söyleyebiliriz.
Bu
örnekte ise association görülebilir ayrıca multiplicity de eklenmiş.
İlşkinin sahibi varsa küçük bir yuvarlak ile
gösterilir.
3. Parça Bütün İlişkileri - Aggregation ve Composition
Yani Parent/Child ilişkileri . UML'de Class Diagram Connector ile belirtilirler. Düz çizgi ile gösterilirler. Bir ucu içi boş veya dolu elmas şeklindedir. Çizgiye bir isim (name) verilebilir. Kaynak ve Hedef sınıf arasında nicelik (multiplicity) tanımlanabilir.
3.1 Aggregation - Shared Association
Aggregation içerme olarak çevrilir. İçerme olduğu için parçalar birbirlerinden ayrılabilirler. Açıklaması şöyle.
An aggregation describes a relationship in which one object belongs to another object, but they are still potentially independent. The first object does not control the lifecycle of the second.
İçi boş elmas ile
gösterilir. Class B'nin başka sınıflar ile paylaşılabileceği (shared) ima edilir.
3.2 Composition - Not-Shared Association
Realization
UML'de Class Diagram Connector ile belirtilir.
Bir arayüzün gerçekleştirilmesi. Kesikli çizgi ve ok ile gösterilir.
Örnek:
Generalization - Genelleme
UML'de Class Diagram Connector ile belirtilir.
Sınıflar arası kalıtım. Düz çizgi ve ok ile gösterilir.
Örnek: