IT SOLUTIONS
916-726-5675
-Collapse +Expand

Coder

Search Coder Group:

Advanced
-Collapse +Expand Coder Group Home
-Collapse +Expand Message Board
-Collapse +Expand Knowledge Base
-Collapse +Expand Coder Study Test
PRESTWOODCERTIFIED
-Collapse +Expand Coder Store
PRESTWOODSTORE
-Collapse +Expand Members Only
Prestwood Tip Jar
Tip Jar
Finding something useful?

Add to the
Tip Jar!

Prestwood eMagazine

Subscribe now!
Enter your email:


   Prestwood ITPrestwoodBoardsKBRole-Based Tech TalkCoding & OOObject Orientation (OO)   
Go To Random Article
  From the May 2010 Issue of Prestwood eMag
 
Coder Object Orientation (OO):
OO/UML: Aggregation versus Composition
By Mike Prestwood
10/24/2002, Last updated 5/21/2010
 
Take Away:

Explains the "is a", "has a", "uses a", and "looks like" relationships (updated May 2007). "Is a" is inheritance, "looks like" is interfaces, "has a" is aggregation, and "uses a" is composition.



I've been getting a lot of questions about the distinction between aggregation and composition lately. Both deal with part-of relationships and are extremely important concepts to understand.

Let's start with a defition of aggregation from the UML 1.4 glossary:

  • Aggregation - A special form of an association that specifies a whole-part relationship between the aggregate (whole) and a component part.

Types and Characteristics
There are various types and characteristics of aggregation relationsips (whole-part relationships) that describe the relationship between the whole and part in more detail. Lets continue with a few more definitions related to aggregation sub-types and characteristics (the Composition definition is from the UML 1.4 glossary):

  • Composition / Composition Aggregation - A form of aggregation which requires that a part instance be included in at most one composite at a time, and that the composite object is responsible for the creation and destruction of the parts.
  • Shareable Aggregation - A form of aggregation in which the part can exist on it's own and is therefore shareable among multiple owner classes.

More On Aggregations ("has a" relationship)
In an aggregation relationship, the part may be independent of the whole but the whole requires the part. An aggregation relationship is indicated in the UML with an unfilled diamond and a line as follows:

An Aggregation is an Association which denotes an "is part of" relationship. Unfortunately, the definition of this relationship is quite lax, so basically everyone is using his own interpretation. The only definitive (?) property is that in an instance graph, aggregations are not allowed to be circular - that is, an object can not be "a part of itself".

Composition (a strong type of "uses a" relationship)
A composition relationship, also known as a composite aggregation, is a stronger form of aggregation where the part is created and destroyed with the whole. A composition relationship is indicated...

Time To Sign In

You must sign in to read the rest of this document.

Not a member? Join now! Membership is instant and free!

UserID or Email:  Enter your account email, permanent UserID, or current display name.
Password: 
 
  Remember Me
Or...
 Join Today  Forgot Password?

More Info

Article:  An Introduction to Object Orientation
Definition:  Composition
Link:  DotNetCoders.com UML Home Page
Definition:  Interface
Article:  Introduction to OO for the Paradox Community
Article:  Introduction to the Unified Modeling Language
Definition:  Polymorphism
KB Post:  PSDP Phases compared to UML Workflows
KB Post:  PSDP: Step 2 Planning Overview (Gen & Design Phases)
Article Contributed By Prestwood staff member Mike Prestwood:
mprestwood
Email Approved! E CA USA

Mike Prestwood is a drummer, an author, and creator of the PrestwoodBoards online community. He is the President & CEO of Prestwood IT Solutions. Prestwood IT provides Coding, Website, and Computer Tech services. Mike has authored 6 computer books and over 1,200 articles. As a drummer, he maintains play-drums.com and has authored 3 drum books. If you have a project you wish to discuss with Mike, you can send him a private message through his PrestwoodBoards home page or call him 9AM to 4PM PST at 916-726-5675 x205.


Comments

Oldest To Newest

Add Comment
First Comment
Author...
Prestwood IT Solutions
Staff
Moderator
Mike Prestwood
Rank: Fleet Admiral

Joined: Oct 2000
Location: Citrus Heights, CA USA
Mike Prestwood -Collapse +Expand
Email Approved! E CA USA
Comment 1 of 6
Thursday, August 06, 2009

Thanks Soniya. It's always nice to get positive feedback.


Reader...
inghamc
Rank: Cadet 3rd Year

Joined: Apr 2005
Location: CO USA
inghamc -Collapse +Expand
Email Approved! E CO USA

Member Points: 26
Visits: 2
MB Posts: 0

KB Articles: 0
Comment 2 of 6
Monday, April 25, 2005

I don't understand the composition example - how is an engine responsible for the creation of gas?

Reader...
call_krmohan
Rank: Cadet 1st Year

Joined: Oct 2007
Location: bangalore IN
call_krmohan -Collapse +Expand
Email Approved! E IN

Member Points: 6
Visits: 2
MB Posts: 0

KB Articles: 0
Comment 3 of 6
Wednesday, October 31, 2007

fine

Reader...
mohitsi
Rank: Cadet 1st Year

Joined: Feb 2008
Location: USA
mohitsi -Collapse +Expand
Email Inactive E USA
 (Inactive)
Member Points: 6
Visits: 1
MB Posts: 0

KB Articles: 0
Comment 4 of 6
Tuesday, February 05, 2008

Hi Mike,

 Just would like add some comment on the examples given above:

-         In aggregation relationship, the ‘part’ object reference can be re-used & creation of ‘part’ object is not the responsibility of the ‘whole‘object usully. It would have been created somewhere else, and passed to the ‘whole’ object as a method argument.

-         In composition, the life cycle of the ‘part’ is controlled by the ‘whole’.

So, if I am right then your pseudo code examples would need to get swapped within each other.

ie. SparkPlug/Car example shows composition & Room/building example shows aggregation.

Waiting for your response....

Thanks in advance,

Mohit


Reader...
vletter1-1
Rank: Cadet 2nd Year

Joined: Apr 2009
vletter1-1 -Collapse +Expand
Email Approved! E Unk

Member Points: 22
Visits: 2
MB Posts: 0

KB Articles: 0
Comment 5 of 6
Saturday, April 25, 2009

Hi Mike,

with the pseudo code you provided from aggregate and composition, I totally understand what it means.

Can you also provide the pseudo code from inheritance and interface?

thanks

Andrew


Latest Comment
Reader...
soniya_ahuja
Rank: Cadet 1st Year

Joined: Aug 2009
Location: Raigad, UNK IN
soniya_ahuja -Collapse +Expand
Email Approved! E Unk

Member Points: 10
Visits: 1
MB Posts: 0

KB Articles: 0
Comment 6 of 6
Thursday, August 06, 2009

The article is indeed impressive. I tried reading on this topic at a few other places, but none were as comprehensible as this. A concise but effective way of explaining aggregation and its types.

Would you like to comment? Reply? Ask a question? Say thanks?
+Add Comment

 KB Article #100035 Counter
57291
Since 4/2/2008

Sponsored Ad
Brought to you by Prestwood IT Solutions
We hope you are enjoying our knowledge base! We welcome your participation in our open online community. As the caretakers, we pay our staff to moderate, edit, and contribute free content here in an effort to promote our software development company. Keep us in mind if you or your company needs help. Whether you need a single developer or a team, consider Prestwood. We are an American company that keeps jobs in America (no off shoring and no need for H-1B developers). Our hope is that you will put some or all of your development tasks in our hands. We specialize in hourly help (1 hour minimum), custom websites from $2k to $40k, business database applications from $5k to $60k, and enterprise application development starting from $20k. Talented Developer?
If you are a talented developer and would like to work with us, start by filling out our Register for Work form.
 
Mike Prestwood
Need service or help?
Have a question? Contact Us.
--Mike Prestwood
Follow us on: 
340 People Online Now!!  
Online Now: Sign In to see who's online now!  Not a member? Join Prestwood now. It's free!
1995-2010 Prestwood IT Solutions.   [Security & Privacy]   Made in the U.S.A..   No H1-B.   No offshoring.