UML stands for Unified Modeling Language.
Class Diagram


The top part has the class name, and extra information like "Abstract" or "Interface".

The middle part has attributes (fields and properties, for C#).

The bottom part has operations (methods/functions, for C#).

- means private
# means protected
+ means public
~ means package (internal, for C#)


Some association exists between two classes. You can add a label to an association if needed.


An "is a" relationship.


Class B is a part of class A. For example, one of the class A attributes has data type B.

Class B can exist without a related class A.


Class B is a part of class A, like an aggregation, but class B will only exist when it is attached to a class A.


Class A depends on class B in some way, meaning that a change to class B may necessitate a change to class A.


All relationships can be marked with the number of class instances that can take part in the relationship.

Each class A is related to 1 class B, and each class B is related to 1 class A.
1 to 1

1 to 0 or 1

1 to Many

1 to 0 or More