Relations among different classes might be clear for me, however, the way using unified modeling language (UML) to represent it is something new to me. A note on this topic is worth taking to make it on my dictionary. Taken from Core Java Volume I (11th edition) - Cay S. Horstmann.
Relations between classes
The most common relationships between classes are:
- Dependence (“uses-a”)
- Aggregation (“has-a”)
- Inheritance (“is-a)
The dependence, or “uses-a” relationship, is the most obvious and also the most general. For example, the Order
class uses the Account
class because Order
objects need to access Accout
objects to check for credit status. But the Item
class does not depend on the Account
class, because Item
objects never need to worry about customer accounts. Thus, a class depends on another class if its methods use or manipulate objects of that class.
The aggregation, or “has-a” relationship, is easy to understand because it is concrete; for example, an Order
object contains Item
objects. Containment means that objects of class A contain objects of class B.
The inheritance, or “is-a” relationship, expresses a relationship between a more special and a more general class. For example, a RushOrder
class inherits from an Order
class. The specialized RushOrder
class has special methods for priority handling and a different method for computing shipping charges, but its other methods, such as adding items and billing, are inherited from the Order
class. In general, if class A extends class B, class A inherits methods from class B but has more capabilities.
Unified modeling language
Many programmers use the UML (Unified Modeling Language) notation to draw class diagrams that describe the relationships between classes. An example of such diagram as below:
You draw classes as rectangles, and relationships as arrows with various adornments. Following table shows the most common UML arrow styles.
For more information on UML notation, please refer to this brief summary.