my kingdom for a smile :-): UML Class Diagram Relationships, Aggregation, Composition
There are five key relationships between classes in a UML class diagram . 6/29/ - here's a good article on class diagrams and answers. Download scientific diagram | Class diagram of the relationship between and Genomics Studies | In this article we describe the design and implementation of a to support research involving many different relationships among persons. Most of the time it's because of the inability to understand the different relationships in class diagrams. This article explains how to correctly.
In the following sections, I will address more important aspects of the class diagram that you can put to good use. These include interfaces, the three remaining types of associations, visibility, and other additions in the UML 2 specification.
The class diagram
Interfaces Earlier in this article, I suggested that you think of classifiers simply as classes. In fact, a classifier is a more general concept, which includes data types and interfaces. A complete discussion of when and how to use data types and interfaces effectively in a system's structure diagrams is beyond the scope of this article.
So why do I mention data types and interfaces here? There are times when you might want to model these classifier types on a structure diagram, and it is important to use the proper notation in doing so, or at least be aware of these classifier types. Drawing these classifiers incorrectly will likely confuse readers of your structure diagram, and the ensuing system will probably not meet requirements.
A class and an interface differ: A class can have an actual instance of its type, whereas an interface must have at least one class to implement it. In UML 2, an interface is considered to be a specialization of a class modeling element.
Example of a class diagram in which the Professor and Student classes implement the Person interface View image at full size In the diagram shown in Figure 10, both the Professor and Student classes implement the Person interface and do not inherit from it.
We know this for two reasons: As shown in Figure 10, a dotted line with a closed, unfilled arrow means realization or implementation ; as we saw in Figure 4, a solid arrow line with a closed, unfilled arrow means inheritance. More associations Above, I discussed bi-directional and uni-directional associations. Now I will address the three remaining types of associations. Association class In modeling an association, there are times when you need to include another class because it includes valuable information about the relationship.
For this you would use an association class that you tie to the primary association. An association class is represented like a normal class. The difference is that the association line between the primary classes intersects a dotted line connected to the association class. Figure 11 shows an association class for our airline industry example. Adding the association class MileageCredit View image at full size In the class diagram shown in Figure 11, the association between the Flight class and the FrequentFlyer class results in an association class called MileageCredit.
This means that when an instance of a Flight class is associated with an instance of a FrequentFlyer class, there will also be an instance of a MileageCredit class. Aggregation Aggregation is a special type of association used to model a "whole to its parts" relationship. In basic aggregation relationships, the lifecycle of a part class is independent from the whole class's lifecycle.
For example, we can think of Car as a whole entity and Car Wheel as part of the overall Car.
- Class diagram
The wheel can be created weeks ahead of time, and it can sit in a warehouse before being placed on a car during assembly.
In this example, the Wheel class's instance clearly lives independently of the Car class's instance.
UML 2 Class Diagrams: An Agile Introduction
However, there are times when the part class's lifecycle is not independent from that of the whole class — this is called composition aggregation. This association is uni-directional. Association[ edit ] Class diagram example of association between two classes An association represents a family of links.
A binary association with two ends is normally represented as a line. An association can link any number of classes. An association with three links is called a ternary association. An association can be named, and the ends of an association can be adorned with role names, ownership indicators, multiplicity, visibility, and other properties.
There are four different types of association: Bi-directional and uni-directional associations are the most common ones.
For instance, a flight class is associated with a plane class bi-directionally. Association represents the static relationship shared among the objects of two classes. Aggregation[ edit ] Class diagram showing Aggregation between two classes. Here, a Professor 'has a' class to teach. Aggregation is a variant of the "has a" association relationship; aggregation is more specific than association. It is an association that represents a part-whole or part-of relationship. As shown in the image, a Professor 'has a' class to teach.
As a type of association, an aggregation can be named and have the same adornments that an association can. However, an aggregation may not involve more than two classes; it must be a binary association. Furthermore, there is hardly a difference between aggregations and associations during implementation, and the diagram may skip aggregation relations altogether. The contents of the container still exist when the container is destroyed. In UMLit is graphically represented as a hollow diamond shape on the containing class with a single line that connects it to the contained class.
The aggregate is semantically an extended object that is treated as a unit in many operations, although physically it is made of several lesser objects. Here the student can exist without library, the relation between student and library is aggregation.
Composition[ edit ] Two class diagrams. The diagram on top shows Composition between two classes: A Car has exactly one Carburetor, and a Carburetor has at most one Car Carburetors may exist as separate parts, detached from a specific car.
The diagram on bottom shows Aggregation between two classes: A Pond has zero or more Ducks, and a Duck has at most one Pond at a time.
The UML representation of a composition relationship shows composition as a filled diamond shape on the containing class end of the lines that connect contained class es to the containing class.
Differences between Composition and Aggregation[ edit ] Composition relationship 1. When attempting to represent real-world whole-part relationships, e. When the container is destroyed, the contents are also destroyed, e. When representing a software or database relationship, e.