Skip to main content

Command Palette

Search for a command to run...

πŸ”₯ Low-Level Design: Class-Level Diagrams

A Beginner Friendly approach to understand Class-Level Diagrams

Published
β€’3 min read
πŸ”₯ Low-Level Design: Class-Level Diagrams
L

Backend Engineer @CRED | Open Source | IIT Gandhinagar | Computer Science

πŸ™‚ Well this is the Second blog of our Series on Low-Level Design. Here, we will look into how to draw class-level diagrams. Whenever we design an application, we must draw a class-level diagram before implementation. While designing we do follow SOLID Principles too.

🀜Today we'll see the different components of a class diagram followed by some projects on LLD.

What Are The Best Software Engineering Principles? - Blog | luminousmen

πŸ“ Class-Level diagram Representation

πŸ‘‰ Above diagram represents a class that includes Class Name, Attributes, and Methods with Access Modifiers like public, protected, private, etc.

  • Due to this diagram we can directly code the class and can define the methods easily

Now, we'll see different links representing the relationship between different classes.

πŸ“ Association (Has-a Relation)

πŸ™‚ We have two types of Associations, Bidirectional and Unidirectional (The first two in the above Diagram). Bidirectional means both classes can call each other (A----B) while directed or unidirectional association means, One class has access to the other but vice versa is not true. Forex. A--->B, A can access B but B couldn't. In Association We have Aggregation and Composition.

Note:- Aggregation and Composition are both types of Association. Both differ only due to the lifecycle dependency.

UML Association vs Aggregation vs Composition - Javatpoint

Aggregation

Bank has an instance of a Customer and It is mostly called as a loose association because the life cycle of both classes is independent or when Bank dies customer may live on. Aggregation is a has-a relationship. It is represented by a hollow diamond arrow.

Composition

Here, Kindly note the difference. Whenever we are initializing a Car Instance Engine will also be initialized which means the Engine can't exist without Car and both are highly dependent on each other. It is represented by a filled diamond arrow.

πŸ“ Generalization(Is-a Relation)

πŸ”₯ Here, you can see that we have two is-a relations (Inheritance and Realization) But it is quite clear from the diagram that the Left side is inheritance and the right side is an interface inheritance.

πŸ“ Dependency

Here, we can see that the Player state is dependent on the state of Die i.e. Die roll can change the Player state. Which means the Player has a dependency on the Die.

πŸ‘‰ Multiplicity

It tells us how many instances of a class participating in a relationship.

The above example is a one-to-many relationship, meaning One State can have many Cities.

Similarly, we have:-

  • One-One

  • One-Many & Many-One

  • Many-Many

πŸ™‚ Below is the summary of our Class-level diagram and its components:-


πŸ™‚ Follow for more, We'll have some Projects too involving Low-Level Design.

S

Nice, great explanation

N

Keep up the Good work!!!

T
Taha Syed3y ago

Amazing

C

Great. Very helpful. Thanks for sharing.

L

Thanks buddy. Dropped a follow to you too πŸ˜€

C

Lovepreet Singh not seen it yet though. Am following you already.

2
S

Great πŸ’‘

πŸ”₯ Low Level Design:- Think before you code

Part 2 of 2

πŸ‘‰ In this Series, you'll see the bits and bytes of Software Design including some great Projects. This will help you in understanding the large code bases and have good coding practices.

Start from the beginning

πŸ“ Low Level Design Series: Introduction, UML Diagrams

πŸ‘‰ Beginner Friendly approach to Low-level design bits like Behavioural UML Diagrams