• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Explain Association and other terms

 
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Can any one tell me the subtle difference between association, aggregation, and composition?
 
Marshal
Posts: 79151
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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 ]
 
Ranch Hand
Posts: 1970
1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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".
 
Sheriff
Posts: 22781
131
Eclipse IDE Spring VI Editor Chrome Java Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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...
 
I knew I would regret that burrito. But this tiny ad has never caused regrets:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com
reply
    Bookmark Topic Watch Topic
  • New Topic