Composition ile Aggregation Arasındaki Fark

Uygulama geliştirirken OOP prensiplerine yaklaştıkça nesneler arasındaki ilişkilerin önemi de gitgide artıyor.  Ben de tasarım desenlerine verdiğim kısa arada çok karıştırılan iki kavramdan bahsetmek istiyorum. Nesneler arasındaki iki ilişki türü : Aggregation, Association

Aggregation : Bu tür ilişki de nesnelerin yaşam döngüleri birbirlerinden ayrıdır. Bir nesne diğerinden bağımsız olarak da yaşamını sürdürebilir. Yani aralarında bir sahiplik ilişkisi (has-a ) vardır. Örneğin Dizüstü Bilgisayarınız ile onun çantası arasında böyle bir ilişki vardır. Çantayı ayrı olarak ya da laptop’u ayrı olarak düşünebiliriz. Yaşam döngüleri ortak değildir. UML diagramında gösterimi ve koda dökülmüş bir örneği aşağıdaki gibidir.

public class Canta
{

}
public class Laptop {
private Canta _canta;
public Laptop(Canta canta)
{
_canta = canta;
}
}

Composition : Bu tür ilişki de nesnelerin yaşam döngüleri birbirleriyle bağlantılıdır. Bir nesne diğerinden bağımsız olarak kullanılamaz. Aralarındaki ilişki parçası olma(is-a-part-of ) ilişkisidir. Az önceki örneğimizden gidersek dizüstü bilgisayarımız ile ekranı arasında bu tarz bir ilişki vardır. UML diagramında gösterimi ve koda dökülmüş bir örneği aşağıdaki gibidir.

public class Ekran
{

}
public class Laptop
{

Ekran _ekran = new Ekran();
}

4 responses to “Composition ile Aggregation Arasındaki Fark”

  1. Muhammet says:

    Örnek olarak verdiğiniz uml resimlerinde Ekran ve çanta classlarına ok koymuşsunuz bu doğru bi gösterimmidir genel olarak ok koymadan yapılıyor galiba

    • Mehmet KORDACI says:

      Merhaba,

      Bahsettiğiniz ve gösterdiğim iki ayrı gösterim şeklidir. İlişkinin iki yönlü ya da tek yönlü olup olmamasına göre değişir. Benim paylaştığım tek yönlüdür, sizin bahsettiğiniz ise iki yönlü. İki yönlüde iki uçtaki nesne de ilişkiden haberdar iken, verdiğim örnekte sadece sol taraftaki nesne ilişkiden haberdardır. Umarım açıklayabilmişimdir.

  2. çankaya says:

    Örnek olarak verdiğiniz uml resimlerinde Ekran ve çanta classlarına ok koymuşsunuz bu doğru bi gösterimmidir genel olarak ok koymadan yapılıyor galiba

    • Mehmet KORDACI says:

      Merhaba,

      Bahsettiğiniz ve gösterdiğim iki ayrı gösterim şeklidir. İlişkinin iki yönlü ya da tek yönlü olup olmamasına göre değişir. Benim paylaştığım tek yönlüdür, sizin bahsettiğiniz ise iki yönlü. İki yönlüde iki uçtaki nesne de ilişkiden haberdar iken, verdiğim örnekte sadece sol taraftaki nesne ilişkiden haberdardır. Umarım açıklayabilmişimdir.

Leave a Reply to Muhammet Cancel reply

Your email address will not be published. Required fields are marked *