Showing posts with label sınıf diyagramlar. Show all posts
Showing posts with label sınıf diyagramlar. Show all posts
Nesne yönelimli programlamada nesnelerin bağımlılıkları olmaktadır. Bu bağımlılıklar birden fazla nedenden dolayı olabilir. Örneğin bir nesne diğer bir nesnenin bir metodunu kullanıyor olabilir. Metodunun kullanıldığı sınıfta bir değişiklik yapıldığında metodu kullanan sınıfta bu değişiklikten etkilenecektir. Bu gibi durumlarda dependency vardır denir. Bu ilişkinin olmasının nedeni değişebildiği için ilişkinin gösteriminde stereotype'lar kullanılır.
Dependency ilişkinin çiziminde iki sınıf arasına bir kesikli çizgi çekilir ve bağımlı olunan yapının olduğu tarafa bir ok çizilir. Çizginin ortasına ilişki nedenine uygun stereotype yazılır.
Nesne yönelimli programlamada kodlarda değişiklik yapılabilmesini kolaylaştıran, çoklu kalıtımı sağlayan ve bir çok faydası bulunan interface yapısı kullanılır. Interface yapısında oluşturulan interface'leri sınıflar implement ederler. Bu ilişki türüne Realization denir.
Interface ile class arasına kesikli bir çizgi çizilerek bu çizginin interface tarafına içi boş bir ok çizilir.
Nesne yönelimli programlamanın temel unsurlarından biri kalıtım(inheritance)'dır. Kalıtım yolu ile bir sınıfa ait özellikler bir başka sınıfa sadece küçük bir belirtim ile dahil edilir. Kalıtım yolu ile iki sınıf arasında kurulan ilişkiye Generalization denir.
Generalization ilişkinin çiziminde iki sınıf arasına bir düz çizgi çekilir ve kalıtım yapılan sınıfın olduğu tarafa içi boş bir ok çizilir.
Kodlama açısından Association ilişki ile aynı olan bu ilişki türü mantıksal olarak Association ilişkiden ayrılır. Bu ilişki türünde Association ilişkide olduğu gibi bir sınıf içerisinde başka bir sınıfın referansı tutulur. Ancak bu ilişkide referansı tutan sınıf ile referans edilen sınıf arasında bir parça bütün ilişkisi vardır.
Bu iki ilişki türünde parçalar bütünü oluşturur. Yani referansı tutan sınıf bir bütündür ve referansı tuttuğu sınıflar onun parçalarını oluşturur. Aggregation ilişki ile Composition ilişki arasındaki fark ise Composition ilişkide parçalar oluşturdukları bütüne özeldir. Yani parça dahil olduğu bütünden ayrılıp bir başka bütüne dahil edilemez. Aggregation ilişkide ise parçalar bütünü oluşturur ancak o bütüne özel değildir bir başka bütün ile de kullanılabilir. Bir ilişkide parça bütün ilişki varsa ve Aggregation mı yoksa Composition ilişki mi kurulacak karar verilemiyorsa aşağıdaki üç soru sorularak cevap verilir.
- Bütün nesne yok edildiğinde parça da yok ediliyorsa
- Parça bir yere taşındığında bütün de onunla taşınması gerekiyorsa
- Parça kolaylıkla başka bir bütüne dahil edilemiyorsa
bu ilişki Composition ilişkidir denir. Aksi halde Aggregation ilişkidir denir.
Aggregation ilişki çizimde bütünü oluşturan kısmın bulunduğu tarafa içi boş baklava şeklinde bir dikdörtgen çizilir.
Composition ilişki çizimde bütünü oluşturan kısmın bulunduğu tarafa içi dolu baklava şeklinde bir dikdörtgen çizilir.
Yukarıdaki örnekte Player sınıfı Organ sınıfının referansını tutar. Burada bir Composition ilişki vardır çünkü parça olmadan bütünün olması söz konusu değildir. Team sınıfı ise Player sınıfının referansını tutar. Burada bir Aggregation ilişki vardır çünkü oyuncu olmadan da bir takım var olabilir ve bir oyuncu kolaylıkla başka bir takıma dahil edilebilir.
Nesneler arasında var olabilecek en temel ilişki türüdür. Bir nesnenin içerisinde bir başka nesnenin referansını tutması ile oluşur. Örneğin;
public class Insan{
private Araba araba;
}
public Class Araba{
}
Bu örnekte Insan adındaki sınıf içerisinde Araba adındaki sınıfın referansını tutmaktadır. Bu ilişki tek taraflı olmak zorunda değildir yani Insan sınıfı Araba sınıfının referansını tutarken Araba sınıfı da Insan sınıfının bir referansını tutabilir.
Navigability
UML diyaramlarda bu ilişki iki nesne veya sınıf arasında düz bir çizgi ve referansı tutan nesneden çıkan bir ok şeklinde belirtilir. İlişki iki yönlü ise ok ile belirtim yapılmaz.
Eğer iki nesne veya sınıf arasında çoka çok ilişki varsa veritabanlarında yapıldığı gibi araya ekstra bir yapı konulur. Nesneye yönelimli programlamada bu bir sınıf olur.
Örneğin yukarıdaki örnekte müşteri birden fazla kitapçıdan alışveriş yapabilir ve bir kitapçının da birden fazla müşterisi olabilir. Bu durumda araya ekstra bir sınıf koyarak örneğin sipariş sınıfını koyarak bu ilişki tanımlanır.







