Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# code for association, aggregation, composition

I am trying to confirm my understanding of what the code would look like for association, aggregation & composition. So here goes.

Aggregation: Has-a. It has an existing object of another type

public class Aggregation {     SomeUtilityClass objSC     public void doSomething(SomeUtilityClass obj)     {       objSC = obj;     } } 

Composition: Is composed of another object

public class Composition {     SomeUtilityClass objSC = new SomeUtilityClass();     public void doSomething()     {         objSC.someMethod();     } } 

Association: I have two views on this.

  1. When one class is associated with another. Hence both the above are examples of association.

  2. Association is a weaker form of Aggregation where the class doesn't keep a reference to the object it receives.

    public class Association {     //SomeUtilityClass objSC   /*NO local reference maintained */     public void doSomething(SomeUtilityClass obj)     {        obj.DoSomething();     } } 

Is my understanding correct? I have read conflicting articles here and here and so I am really not sure which one to follow. My understanding seems to be in line with the first link. I feel the second link is wrong, or maybe perhaps I haven't understood it properly.

What do you think?

like image 987
user20358 Avatar asked Sep 26 '12 14:09

user20358


Video Answer


1 Answers

For two objects Foo and Bar we have:

Dependency:

class Foo {     ...     fooMethod(Bar bar){}     ... } 

Association:

class Foo {     private Bar bar;     ... } 

Composition: (When Foo dies so does Bar)

class Foo {     ...     private Bar bar = new Bar();     ... } 

Aggregation: (When Foo dies, Bar may live on)

class Foo  {     private List<Bar> bars; } 
like image 77
Andritchi Alexei Avatar answered Sep 29 '22 13:09

Andritchi Alexei