Relationships depict a connection between several things, such as structural, behavioral, or grouping things in the unified modeling language. Since it is termed as a link, it demonstrates how things are interrelated to each other at the time of system execution. It constitutes four types of relationships, i.e., dependency, association, generalization, and realization.
Whenever there is a change in either the structure or the behavior of the class that affects the other class, such a relationship is termed as a dependency. Or, simply, we can say a class contained in other class is known as dependency. It is a unidirectional relationship.
Association is a structural relationship that represents how two entities are linked or connected to each other within a system. It can form several types of associations, such as one-to-one, one-to-many, many-to-one, and many-to-many. A ternary association is one that constitutes three links. It portrays the static relationship between the entities of two classes.
An association can be categorized into four types of associations, i.e., bi-directional, unidirectional, aggregation (composition aggregation), and reflexive, such that an aggregation is a special form of association and composition is a special form of aggregation. The mostly used associations are unidirectional and bi-directional.
An aggregation is a special form of association. It portrays a part-of relationship. It forms a binary relationship, which means it cannot include more than two classes. It is also known as Has-a relationship. It specifies the direction of an object contained in another object. In aggregation, a child can exist independent of the parent.
In a composition relationship, the child depends on the parent. It forms a two-way relationship. It is a special case of aggregation. It is known as Part-of relationship.
Aggregation VS Composition relationship
The generalization relationship implements the object-oriented concept called inheritance or is-a relationship. It exists between two objects (things or entities), such that one entity is a parent (superclass or base class), and the other one is a child (subclass or derived class). These are represented in terms of inheritance. Any child can access, update, or inherit the functionality, structure, and behavior of the parent.
It is a kind of relationship in which one thing specifies the behavior or a responsibility to be carried out, and the other thing carries out that behavior. It can be represented on a class diagram or component diagrams. The realization relationship is constituted between interfaces, classes, packages, and components to link a client element to the supplier element.