Class Diagram

Class diagram example

What is a Class Diagram?

A class diagram models the static structure of a system. It shows relationships between classes, objects, attributes, and operations.

Basic Class Diagram Symbols and Notations


Classes represent an abstraction of entities with common characteristics. Associations represent the relationships between classes.

Illustrate classes with rectangles divided into compartments. Place the name of the class in the first partition (centered, bolded, and capitalized), list the attributes in the second partition (left-aligned, not bolded, and lowercase), and write operations into the third.

Class diagram classes

Active Classes

Active classes initiate and control the flow of activity, while passive classes store data and serve other classes. Illustrate active classes with a thicker border.

Active class


Use visibility markers to signify who can access the information contained within a class. Private visibility, denoted with a - sign, hides information from anything outside the class partition. Public visibility, denoted with a + sign, allows all other classes to view the marked information. Protected visibility, denoted with a # sign, allows child classes to access information they inherited from a parent class.

Class diagram visibility


Associations represent static relationships between classes. Place association names above, on, or below the association line. Use a filled arrow to indicate the direction of the relationship. Place roles near the end of an association. Roles represent the way the two classes see each other.

Class diagram associations

Multiplicity (Cardinality)

Place multiplicity notations near the ends of an association. These symbols indicate the number of instances of one class linked to one instance of the other class. For example, one company will have one or more employees, but each employee works for just one company.

Class diagram multiplicity Class diagram notes


Place constraints inside curly braces {}.

Class diagram contraints

Composition and Aggregation

Composition is a special type of aggregation that denotes a strong ownership between Class A, the whole, and Class B, its part. Illustrate composition with a filled diamond. Use a hollow diamond to represent a simple aggregation relationship, in which the "whole" class plays a more important role than the "part" class, but the two classes are not dependent on each other. The diamond ends in both composition and aggregation relationships point toward the "whole" class (i.e., the aggregation).

Class diagram composition aggregation


Generalization is another name for inheritance or an "is a" relationship. It refers to a relationship between two classes where one class is a specialized version of another. For example, Honda is a type of car. So the class Honda would have a generalization relationship with the class car.

Class diagram generalization

In real life coding examples, the difference between inheritance and aggregation can be confusing. If you have an aggregation relationship, the aggregate (the whole) can access only the PUBLIC functions of the part class. On the other hand, inheritance allows the inheriting class to access both the PUBLIC and PROTECTED functions of the superclass.

Generate a Class Diagram Automatically from Data

You can generate a class diagram automatically using a GitHub repo or a local repository. You don't need to draw anything at all.

Class diagram example

Simply launch the SmartDraw Class Diagram extension and point it to Github or a local directory, choose which classes you want to include and click Build Diagram to have a class diagram built for you, automatically.

The class diagram extension will work with C#, C, Java, JavaScript, Ruby and Python.

Launch extension

Learn more about how to build a class diagram without drawing at all using SmartDraw's Class Diagram Extension.

How to Draw a Class Diagram Manually

Class diagrams are pretty simple to construct manually too if you don't have source code to point to yet and want to think about designing a new project. All you need to do is connect shapes that represent classes in your system with lines. SmartDraw's class diagram libraries have all the appropriate class notations you can drag and drop and connect easily. Read SmartDraw's complete UML diagram tutorial.

By continuing to use the website, you consent to the use of cookies.   Read More