UML stands for Unified Modeling Language.
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