The class diagram in UML is used to model the
static structural elements. It captures and defines the objects,
entities and building blocks of a system. Classes are the
generalized templates from which run-time objects are created.
Components are built from classes. Classes (and interfaces) are the
design elements that correspond to the coded or developed software
work products.
A class represents a set of objects with the same
characteristics. Using classes to classify objects reduces
complexity and the number of elements necessary for
modelling.
Classes are described with names, attributes and
operations. Relationships between classes are described with a
name, roles and multiplicity.
An attribute is a property of a class. It
describes a range of values that the property may hold in objects
of the class. A class may have zero or more
attributes.
An operation is something that a class can do, or
that an actor (or another class) can do to a
class.
Interfaces are abstract classes with a behavioural
component only. They specify an operational contract that an
implementer agrees to meet. An interface cannot be instantiated at
run time - it is an abstract element. Instead, a class may be
defined, which 'implements' this interface.
Classes may be related in a variety of ways. The
following are the most common:
-
Association - Association relationships capture
the static relationships between entities. These generally relate
to one object having an instance of another as an attribute or
being related in the sense of owning (but not being composed
of).
-
Aggregation - Aggregation relationships define
whole/part relationships. This relationship is shown as a line with
a diamond towards the whole class. The stronger form of aggregation
is composition and infers that a class not only collects another
class, but also is actually composed of that collection at a point
in time.
-
Dependency - A dependency is a type of
relationship expressed between two classes in which one class
relies on the other.
-
Realization - A realisation shows that one class
realizes another.
-
Inheritance - Inheritance describes the
hierarchical relationship between classes. It describes the 'family
tree'. Classes may inherit attributes and behaviour from a parent
class (which may in turn be the child of another class). This
tree of inherited characteristics and behaviour allows the designer
the ability to collect common functionality in root classes
(ancestors) and refine and to specialize that behaviour over one or
more generations (children). Scope specifies (public, protected and
private) determine which elements may be inherited and which are
not visible.
An example
follows: