Composition is not "Composition"

Viewed 379

Composition: A class can have references to objects of other classes as members. This is called composition and is sometimes referred to as a has-a relationship.

By Deitel P.J., Deitel H.M. - Java How to Program 9th Edition.

This viewpoint is discussed in this topic: Prefer composition over inheritance?

Composition: Composite aggregation (composition) is a "strong" form of aggregation with the following characteristics:

*it is binary association,

*it is a whole/part relationship,

*a part could be included in at most one composite (whole) at a time, and

*if a composite (whole) is deleted, all of its composite parts are "normally" deleted with it.

Found on http://www.uml-diagrams.org/composition.html (actually, Deitel presents UML examples following this idea, in the same book, but did not bother to explain the difference).

This viewpoint is discussed in this topic:

What is the difference between association, aggregation and composition?

Fine, BOTH ARE CORRECT. And this introduces the problem of homonym concepts. For instance: don't draw a UML model with composition arrows to exemplify the first definition: In UML, any association is a composition by Deitels' the first definition. Here are some aspects of my question that may help in the correct answer:

How I can say (and know) which composition are we talking about?

Where we draw the line between the two definitions (in contextual terms)?

Can I say that the first is object oriented programming and the second is software engineering/modeling?

Is the UML composition a model-only concept/jargon?

Is the UML composition an UML exclusive thing? or is also applied in the programming field?

How to avoid miscommunication of "what composition are we talking about" in a team?

Please, answer with references, evidences, it is not a philosophical/opinion problem, it is a "scope" problem that I´m trying to address.

And it is not "what is composition" question.

Edit: I´m thinking if the distinction is verb x adjective: "to compose" a class (first def.) and "a composite relation" (second def.).

2 Answers
Related