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.
When one class is associated with another. Hence both the above are examples of association.
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?
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With