Class Diagram

A class diagram is at the heart of UML. It represents the core purposes of UML because it separates the design elements from the coding of the system. UML was set up as a standardized model to describe an object-oriented programming approach. Since classes are the building block of objects, class diagrams are the building blocks of UML. The diagramming components in a class diagram can represent the classes that will actually be programmed, the main objects, or the interaction between class and object. The UML shape library in Lucidchart can help you create nearly any custom class diagram.

Use convenient drag-and-drop technology to make any UML diagram. Start with a free template today!

Try it now
Sign up free

Basics of Class Diagrams

Class - Diagram Anatomy

The class diagram is composed of three parts:

  • Upper section - Name of the class - This section is always required whether you are talking about the classifier or an object.
  • Middle Section - Attributes of the class - The attributes describe the variables that describe the qualities of the class. This is only required when describing a specific instance of a class.
  • Bottom section - Class operations (methods) - Displayed in list format, each operation takes up its own line. The operations describe how a class can interact with data.

Member Access Modifier

All classes have different access levels depending on the access modifier (visiblity). Here are the following access levels with their corresponding symbols:

  • Public (+)
  • Private (-)
  • Protected (#)
  • Package (~)
  • Derived (/)
  • Static (underlined)

Member Scope

There are two scopes for members: classifiers and instances. Classifiers are static members while instances are the specific instances of the class. If you are familiar with basic OO theory, this isn't anything groundbreaking.

Object / Class Interactions in Class Diagrams

Interactions between objects and classes are an integral part of class diagrams.


Inheritance is when a child object assumes all the characteristics of its parent object. For example, if we had the object vehicle, a child class Car would inherit all the attributes (speed, numbers of passengers, fuel) and methods (go(), stop(), changeDirection()) of the parent class in addition to the specific attributes(modelType, # of doors, autoMaker) and methods of its own class (Radio(), windshieldWiper(), ac/heat()). Inheritance is shown in a class diagram by using a solid line with a closed, hollow arrow.

Bidirectional Associations

Bidirectional associations are the default associations between two classes and are represented by a straight line between two classes. Both classes are aware of each other and of their relationship with each other. In the example above, the Car class and RoadTrip class are interrelated. At one end of the line the Car takes on the association of "assignedCar" with the multiplicity value of 0..1 which means that when the instance of RoadTrip exists, it can either have one instance of Car associated with it or no Cars associated with it. In this case, a separate Caravan class with a multiplicity value of 0..* is needed to demonstrate that a RoadTrip could have multiple instances of Cars associated with it. Since one Car instance could have multiple "getRoadTrip" associations-- in other words, one car could go on multiple road trips--the multiplicity value is set to 0..*

Unidirectional Association

A unidirectional association is drawn as a unbroken line with an open arrowhead pointing from the knowing class to the known class. In this case, on your road trip through Arizona you might run across a speed trap where a speed cam records your driving activity, but you won't know about it until you get notification in the mail. It isn't drawn in the image but in this case the multiplicity value would be 0..* depending on how many times you drive by the speed cam.

UML Class Diagram Examples

Beyond the class diagram examples noted above, there are many other commonly used diagram examples, such as:

Start your Lucidchart trial here. No downloads or plugins required.