C# code for association, aggregation, composition

asked13 years ago
last updated4 years ago
viewed54k times
Up Vote45Down Vote

I am trying to confirm my understanding of what the code would look like for association, aggregation & composition. So here goes. : Has-a. It an existing object of another type

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

: Is composed of another object

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

: 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?