Can any one tell me the subtle difference between association, aggregation, and composition?
Learning Java.
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32712
4
posted
0
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
Joined: Oct 30, 2001
Posts: 1970
posted
0
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".
Betty Rubble? Well, I would go with Betty... but I'd be thinking of Wilma.<br /> <br />#:^P