|
|
Class Diagrams
Class diagrams identify the class structure of a system, including the
properties and methods of each class. Also depicted are the various
relationships that can exist between classes, such as an inheritance
relationship. The Class diagram is one of the most widely used
diagrams from the UML specification. Part of the popularity of Class
diagrams stems from the fact that many CASE tools, such as Rational XDE,
will auto-generate code in a variety of languages, including Java, C++, and C#,
from these models. These tools can synchronize models and code, reducing your
workload, and can also generate Class diagrams from object-oriented code,
for those "code-then-design" maintenance projects.
Notation
The elements on a Class diagram are classes and the relationships between them
| Class |
Classes are the building blocks in object-oriented programming. A Class is
depicted using a rectangle divided into three sections. The top section is the
name of the Class. The middle section defines the properties of the Class. The
bottom section lists the methods of the class. |
 |
| Association |
An Association is a generic relationship between two classes, and is modeled by
a line connecting the two classes. This line can be qualified with the type of
relationship, and can also feature multiplicity rules (eg. one-to-one,
one-to-many, many-to-many) for the relationship.
|
 |
| Composition |
If a class cannot exist by itself, and instead must be a member of another
class, then that class has a Composition relationship with the containing
class. A Composition relationship is indicated by a line with a filled diamond. |
 |
| Dependency |
When a class uses another class, perhaps as a member variable or a parameter,
and so "depends" on that class, a Dependency relationship is formed. A
Dependency relationship is indicated by a dotted arrow. |
 |
| Aggregation |
Aggregations indicate a whole-part relationship, and are known as "has-a"
relationships. An Aggregation relationship is indicated by a line with a hollow
diamond. |
 |
| Generalization |
A Generalization relationship is the equivalent of an inheritance relationship
in object-oriented terms (an "is-a" relationship). A Generalization
relationship is indicated by an arrow with a hollow arrowhead pointing to the
base, or "parent", class. |
 |
Consider the example of a verterinary system. Animals served, such as dogs and
birds, are tracked along with their owners. The following diagram models a
potential solution. Since dogs and birds are "a kind of" animal, we use a
Generalization relationship.

To validate your model, you can apply real-world data into instances of the
classes. In fact, there is a diagram for precisely this task, the
Object Diagram.
|