3 Ocak 2018 Çarşamba

UML Class Diagram

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.


enter image description here

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.
Illustration

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.

enter image description here

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.
image

Bu örnekte ise association görülebilir ayrıca multiplicity de eklenmiş.
enter image description here

İ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.
image


3.2 Composition - Not-Shared Association
Composition yazısına taşıdım

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:

Hiç yorum yok:

Yorum Gönder