Java ve İlişkiler
Association (Birliktelik): İki sınıf arasındaki yapısal ilişkiye verilen isim. Herhangi bir dereceye sahip olacak şekilde aralarında ilişki bulunan sınıflar bu birlikteliğe sahip olurlar. UML gösteriminde düz bir çizgi ile temsil edilmektedir. Bu ilişki bize o iki sınıf arasında mesaj alışverişini sağlayan bir kanalın olduğunu anlatır. Burada Java'da mesaj alışverişinin metot çağrımlarıyla gerçekleştiğini hatırlatmak gerekir. Birliktelikler genellikle referanslar ile gerçekleştirilir.
Aggregation (Münasebet): "Sahip olma" ("possession") ilişkisini temsil eden özel bir birlikteliktir. Dairesel olmama koşulu vardır. Bunun anlamı nesne kendisiyle münasebet kuramaz. Bu yüzden münasebet çizge değil, ağaç yapısı oluşturur. Aggregation "has-a" ilişkisidir. Her iki nesne de kendi bağımsız varoluşlarına sahiptir.
Aggregation-Composition arasındaki farklar
- Aggregation "has-a" (var) ilişkisidir, Composition "contains-a" (içerir) veya "bütün-parça" ilişkisi
- Aggregation'da iki nesne de kendi bağımsız varoluşlarına devam ederler, Composition'da parça'nın ömrü bütün nesnesiyle temsil edilir.
- Composition'ın daha güçlü ilişki olmasına karşın Aggregation daha gevşek bir ilişkidir.
- UML'de Aggregation işi boş köşegen ve düz çizgi, composition dolu köşegen ve düz çizgi ile gösterilir.
- Composition ilişkisindeki "parça"nın sadece bir "bütün"ü olabilir. Aggregation kapsanan tarafta 0..* derecesine sahip olabilir.
Bir örnek Arabadır. Araba Parçalarından oluşur. Bu parçalara sahiptir. Eğer bir Parça yoksa araba bozuktur. Araba Parçalarıyla Composition oluşturur.Kaynaklar:
Ayrıca Arabanın Yolcuları vardır. Yolcular Arabanın Parçası değildir. Eğer bir Yolcu yoksa Araba bozuk değildir. Araba Yolcularına sahip değildir. Araba'da değillerse başka bir yerdedirler. İlişki geçicidir. Yolcular gelir ve gider. Araba ve Yolcular arasında Aggregation ilişkisi vardır.
Her iki ilişki aslında compositiondır. Arabanın hem Parçaları hem de Yolcuları vardır. Farklılık süresindedir. Parçalarla olan ilişki daimidir, Yolcularla olan ilişki geçicidir.
http://faq.javaranch.com/view?AssociationVsAggregationVsComposition
http://ootips.org/uml-hasa.html
http://www.javaworld.com/javaworld/jw-06-2001/jw-0608-java101.html
http://geekexplains.blogspot.com/2008/07/composition-vs-aggregation-whats.html
http://www.bilgisayarkavramlari.com/2008/12/20/birliktelik-munasebet-ve-olusum-association-aggregation-and-composition/
http://stackoverflow.com/questions/1384426/distinguishing-between-delegation-composition-and-aggregation-java-oo-design
http://www.coderanch.com/t/468736/Java-General/java/Aggregation-Java

