DEV Community

Krishna Nayak
Krishna Nayak

Posted on

Understanding UML Class Diagrams: A Beginner’s Guide

Designing systems clearly and accurately is crucial, and one of the most commonly used tools for this purpose is UML (Unified Modeling Language) diagrams.
Among various types of UML diagrams, Class Diagrams are essential for visualizing the structure of a system.
So our first question should be what is UML Class Diagram?


UML Class Diagram

A UML Class Diagram is, basically a blueprint that describes the structure of a system by showing its classes, attributes, operations (or methods), and relationships among objects.
In simpler terms, it a visual representation of how objects and classes within a system interact with each other.

Now that we have an understanding of what a UML Class Diagram is, the next step is to know about Key Elements of a Class Diagram.


Key Elements of a Class Diagram

The Key Elements of class diagram include:


Class

The Class is the most fundamental element in a class diagram. It represents a blueprint for objects. Each class has three parts:

  • Class Name: The name of the class.
  • Attributes: The data stored in the class, often variables.
  • Operations (Methods): Functions or actions that the class can perform.

Class description


Attributes

The properties or data of a class, typically shown with their visibility (public, private, etc.).

[visibility] name: type [multiplicity] = defaultValue
Enter fullscreen mode Exit fullscreen mode
  • name: The name of the attribute.
  • type: The data type of the attribute.

  • Visibility defines the access level of attributes and methods within a class.

    • Public (+): The attributes and methods accessible from outside the class.
    • Private (-): The attributes and methods accessible only within the class.
    • Protected (#): The attributes and methods accessible within the class and its subclasses.
    • Package (~): The attribute or method is accessible within the same package.
  • Multiplicity define, how many objects can participate in a relationship, such as "one-to-many" or "one-to-one."

    • 1..* means one or more objects.
    • 0..1 means zero or one object.
    • 1 Exactly one instance
    • 0..1 Zero or one instance
    • 1..* One or more instances
    • 0..*: Zero or more instances
  • default Value: (Optional) The initial value of the attribute.

Attributes description


Methods/Operations

Methods (or Operations) define the behavior of a class. They are the actions that the class can perform. In simple terms, it is the functions of the class.

[visibility] name(parameterList): returnType
Enter fullscreen mode Exit fullscreen mode
  • name: The name of the method/operation.
  • parameterList: A comma-separated list of parameters, each specified as name: type.
  • returnType: The data type returned by the method.

Relationships in UML Class Diagrams

Relationships show how classes are connected and interact with one another within a system.

There are six main types of relationships between classes:

  1. Association
  2. Aggregation
  3. Composition
  4. Inheritance
  5. Implementation
  6. Dependency.

Relationships in UML Class description

Association

Association represents a general relationship between two classes where objects of one class interact with objects of another. It’s just like saying, "these two things are connected in some way."

Aggregation

Aggregation is a special type of association that represents a "whole-part" relationship. This is used when one class (the whole) is made up of other classes (the parts) that can exist independently. In other words, the parts (other classes) can exist without the whole (that one class), so removing the whole doesn’t destroy the parts.

Composition

Composition is a stronger form of aggregation and represents a "whole-part" relationship as well. However, in composition, the parts cannot exist without the whole. This means that if the whole is deleted, the parts are also deleted because they depend on the whole for their existence.

Inheritance (Generalization)

Inheritance, also known as Generalization, like a “parent-child” relationship between two classes. In this relationship, one class (the child or subclass) inherits attributes and behaviors from another class (the parent or superclass). This helps reuse code and avoid duplication, as the child class automatically gets the characteristics of the parent class.

Implementation

Implementation is a relationship between a class and an interface. An interface defines abstract methods that a class must implement, but it doesn’t provide the actual code. When a class implements an interface, it agrees to provide specific functionality defined by that interface.

Dependency

Dependency is a relationship where one class relies on another class to function. It’s often temporary, meaning the dependency exists only when the operation is happening and doesn’t form a permanent relationship between classes.

Summary Table for Relationship in UML Class Diagrams:
Relationship Description Notation
Association General connection between classes, without ownership. Solid line
Aggregation #Whole-part relationship where parts can exist independently of the whole. Dashed line with an open diamond on the “whole” side
Composition #Whole-part relationship where parts cannot exist independently of the whole. Solid line with a filled diamond on the “whole” side
Inheritance Parent-child relationship where the child inherits properties and behaviors from parent. Solid line with an filled arrow to the parent class
Implementation Class-interface relationship, where the class agrees to fulfill the interface's actions. Dashed line with a filled arrow to the interface
Dependency Temporary relationship where one class depends on another for a specific action. Dashed line with an arrow from the dependent class

# Whole refer to one class and Part refer to the made up of other class/classes. For example, A House class contains a Room class in a composition relationship — if the House is demolished, the Room is also demolished.

UML Class Diagrams also support some special elements like Enums, Interfaces, and Abstract Classes. These are denoted as show in the image.

special elements


Combined Example [library system UML class]

library system UML class description

Element Type Relationships
User Class - Generalization: Member and Librarian are specialized versions of User.
Member Class - Implements Borrowable interface.
- Aggregation with Book (A member can borrow multiple books).
Librarian Class - Association with Library (A librarian manages one library).
Book Class - Aggregation with Genre (Each book belongs to a specific genre).
- Association with Author (Each book has one or more authors).
Author Class - Association with Book (An author writes one or more books).
Library Class - Composition with Catalog (A library contains a catalog).
- Aggregation with Book (A library contains many books).
- Aggregation with Member (A library can have multiple members).
Catalog Class - Composition with Library (The catalog is part of the library and can't exist without it).
- Aggregation with Book (The catalog manages a collection of books).
Borrowable Interface - Implemented by Member (A member can borrow books).
Genre Enumeration - Aggregation with Book (Each book has a genre).

As become more familiar with UML Class Diagrams, we can gain a toolset to design more complex systems and communicate these designs effectively with other developers. With the user UML, we can create a blueprint that is clear and organized, making it easier to adapt in the future and supporting software that can grow and be maintained over time.

Top comments (0)