Victor
Victor

Reputation: 81

Does a relation (aggregation, composition) replace an attribute?

I'm pretty new at UML modelling so bear with me.

Say I have a class with an attribute students that is a list of Student instances. I have set an aggregation relation to the Student class which is also in the diagram. Does this relation replace an attribute entry such as #students : Student[] in the container class, or can the attribute and relation co-exist?

Thanks in advance for any answers!

Upvotes: 8

Views: 4039

Answers (3)

Novalis
Novalis

Reputation: 2325

Short answer: Can the attribute and relationship both exist? No...

But if your classes are software classes you may have many choices for showing them:

enter image description here

But if your classes are not sofware classes and you model the domain you should be more carefully to show an entity as an attribute or class. Generally if the entity is complex type, it is shown as seperate class. But that is not a rule: depends on context.

enter image description here

Upvotes: 15

Patrick87
Patrick87

Reputation: 28292

You generally do not have attributes of a user-defined (or any complex) class. You certainly don't show an attribute AND an association for the same thing in UML. If I understand your situation, you're in need of an association (or aggregation/composition)... And play with the multiplicities to get it right.

Upvotes: 1

Suroot
Suroot

Reputation: 4423

An attribute helps to identify the structure of the object. Aggregation gives a high level overview that the object will contain one (or more) of another type. Neither replaces, but instead shows the relationship between the object types.

Upvotes: 2

Related Questions