Class diagram is a graphic representation of the static structural model. It shows classes and interfaces, along with their internal structure and relationships. The classes represent types of objects that are handled in a system. A Class diagram does not show temporal information, it describes only the classification. The instances of those types (objects) are instantiated only on the runtime and are represented by an object and the interaction diagrams.
The classes can be related to each other in a number of ways: associated (connected to each other), dependent (one class depends/uses another class), specialized (one class is a subtype of another class), or packaged (grouped together as a unit – package). A Class diagram does not express anything specific about the relationships of a given object, but it does abstractly describe the potential relationships of one object with other objects.
A system typically has a number of Class diagrams – not all classes are inserted into a single Class diagram. A class can have multiple levels of meaning and participate in several Class diagrams. A Class diagram is the logical map of an existing or future source code.