Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Explain Association and other terms

 
Ra Sank
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Can any one tell me the subtle difference between association, aggregation, and composition?
 
Campbell Ritchie
Sheriff
Posts: 48407
56
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Welcome to JavaRanch

I think Rob will probably want to move this thread to "beginners.2

I think you will have to look in Google . . .

But I found Aggregation and Object composition on Wikipedia. I think those two links eventually lead to the same page!

Both aggregation and composition can be described by a HAS-A relationship. Aggregation: a car HAS-A driver, but if you take the driver from the car the car is still a working car.
Composition: a car HAS-AN engine, but if you take the engine from the car the car is no longer a car in the fullest sense of the word; neither the car nor the engine will "work."

You mean "inheritance" not "association." That is described with an IS-A relation, and should also fulfil Barbara Liskov's substitution principle, which I haven't got time to describe. I couldn't find "inheritance" in wikipedia. You should find details in any object-oriented programming book, but composition is usually much easier to handle than inheritance.

"Association" is a compiler term; there is a bit about it in Wikipedia under the name Operator associativity.
[ June 02, 2008: Message edited by: Campbell Ritchie ]
 
Peter Chase
Ranch Hand
Posts: 1970
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Campbell Ritchie:
"Association" is a compiler term


It has another connotation more appropriate to the original poster's question.

Association might be used as a word to describe "having a reference to an object, but not necessarily owning it". If a particular Java object has a reference to another Java object, but the first Java object is not responsible for managing the second, that might be described as "association".

I don't think there would be a formal definition anywhere for such a use of "association".
 
Rob Spoor
Sheriff
Pie
Posts: 20495
54
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Campbell Ritchie:
I think Rob will probably want to move this thread to "beginners.2

Well, if you insist...
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic