This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
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 ]
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.