Introduction
The class diagram is the main building block of object oriented modelling. It is used
both for general conceptual
modelling of the systematics of the application, and for detailed modelling
translating the models into programming code. Class diagrams can
also be used for data modeling. The classes in a
class diagram represent both the main objects, interactions in the application
and the classes to be programmed.
A class with
three sections.
In the diagram, classes are represented with boxes which contain three
parts:
- The top part contains the name of the class
- The middle part contains the attributes of the class
- The bottom part gives the methods or operations the class can take or undertake
In the design of a system, a number of classes are identified and grouped
together in a class diagram which helps to determine the static relations
between those objects. With detailed modelling, the classes of the conceptual
design are often split into a number of subclasses.
In order to further describe the behaviour of systems, these class diagrams
can be complemented by state diagram or UML state machine.
Members
UML provides mechanisms to represent class members, such as attributes and
methods, and additional information about them.
Visibility
To specify the visibility of a class member (i.e., any attribute or method)
these are the following notations that must be placed before the member's name
:
"+" Public
"-" Private
"#" Protected
"/" Derived (can be combined with one of the
others)
"_" Static
"~" Package
Scope
The UML specifies two types of scope for members: instance and classifier.
- Classifier members are commonly recognized as “static” in many programming languages. The scope is the class itself.
- Attribute values are equal for all instances
- Method invocation does not affect the instance’s state
- Instance members are scoped to a specific instance.
- Attribute values may vary between instances
- Method invocation may affect the instance’s state (i.e., change instance’s attributes)
To indicate a classifier scope for a member, its name must be underlined.
Otherwise, instance scope is assumed by default.
Relationships
A relationship is a general term covering the specific types of logical
connections found on class and object diagrams. UML shows the following
relationships:
Instance level relationships
Links
A Link is the basic relationship among objects.
Association
Class diagram
example of association between two classes
An association represents a family of links. Binary associations (with two ends) are
normally represented as a line. An association can be named, and the ends of an
association can be adorned with role names, ownership indicators, multiplicity,
visibility, and other properties.
There are four different types of association: bi-directional, uni-directional, Aggregation (includes Composition aggregation) and Reflexive. Bi-directional and uni-directional associations are the most common ones.
For instance, a flight class is associated with a plane class bi-directionally. Association represents the static relationship shared among the objects of two classes. Example: "department offers courses", is an association relation.
There are four different types of association: bi-directional, uni-directional, Aggregation (includes Composition aggregation) and Reflexive. Bi-directional and uni-directional associations are the most common ones.
For instance, a flight class is associated with a plane class bi-directionally. Association represents the static relationship shared among the objects of two classes. Example: "department offers courses", is an association relation.
Aggregation
Class diagram
showing Aggregation between two classes
Aggregation is a variant of the "has a" association relationship;
aggregation is more specific than association. It is an association that
represents a part-whole or part-of relationship. As a type of association, an
aggregation can be named and have the same adornments that an association can.
However, an aggregation may not involve more than two classes.
Aggregation can occur when a class is a collection or container of other classes, but
where the contained classes do not have a strong life cycle dependency
on the container—essentially, if the container is destroyed, its contents are
not.
In UML, it is graphically
represented as a hollow diamond shape on the containing
class end of the tree with a single line that connects the contained class to
the containing class. The aggregate is semantically an extended object that is
treated as a unit in many operations, although physically it is made of several
lesser objects.
Composition
Class diagram
showing Composition between two classes at top and Aggregation between two
classes at bottom
Composition is a stronger variant
of the "owns a" association relationship; composition is more
specific than aggregation.
Composition usually has a strong life cycle dependency between instances of the
container class and instances of the contained class(es): If the container is
destroyed, normally every instance that it contains is destroyed as well. (Note
that, where allowed, a part can be removed from a composite before the composite
is deleted, and thus not be deleted as part of the composite.)
The UML graphical representation of a composition relationship is a filled diamond shape on the containing class end of the tree of lines that connect contained class(es) to the containing class.
Differences between composition and aggregation
When attempting to represent real-world whole-part relationships, e.g., an
engine is a part of a car, the composition relationship is most appropriate.
However, when representing a software or database relationship, e.g., car model
engine ENG01 is part of a car model CM01, an aggregation relationship is best,
as the engine, ENG01 may be also part of a different car model. Thus the
aggregation relationship is often called "catalog" containment to distinguish
it from composition's "physical" containment.
The whole of a composition must have a multiplicity of 0..1 or 1,
indicating that a part must belong to only one whole; the part may have any
multiplicity. For example, consider University and Department classes. A
department belongs to only one university, so University has multiplicity 1 in
the relationship. A university can (and will likely) have multiple departments,
so Department has multiplicity 1..*.
Class level relationships
Generalization
Class diagram
showing generalization between one superclass and two subclasses
The Generalization relationship ("is a") indicates that one of
the two related classes (the subclass) is considered to be a specialized
form of the other (the super type) and superclass is considered as 'Generalization'
of subclass. In practice, this means that any instance of the subtype is also
an instance of the superclass. An exemplary tree of generalizations of this
form is found in binomial
nomenclature: human beings are a subclass of simian, which are a subclass of mammal, and so on. The relationship is most easily understood by the phrase 'an A
is a B' (a human is a mammal, a mammal is an animal).
The UML graphical representation of a Generalization is a hollow triangle shape on the
superclass end of the line (or tree of lines) that connects it to one or more
subtypes.
The superclass (base class) in the
generalization relationship is also known as the "parent", superclass,
base class, or base type.
The subtype in the specialization
relationship is also known as the "child", subclass, derived
class, derived type, inheriting class, or inheriting type.
Note that this relationship bears no resemblance to the biological
parent/child relationship: the use of these terms is extremely common, but can
be misleading.
- Generalization-Specialization relationship
A is a type of B
E. g. "an
oak is a type of tree", "an automobile is a type of vehicle"
Realization
In UML modelling, a realization relationship is a relationship between two
model elements, in which one model element (the client) realizes (implements or
executes) the behavior that the other model element (the supplier) specifies.
The UML graphical representation of a Realization is a hollow triangle
shape on the interface end of the dashed line (or tree of lines) that
connects it to one or more implementers. A plain arrow head is used on the
interface end of the dashed line that connects it to its users. In component
diagrams, the ball-and-socket graphic convention is used (implementors expose a
ball or lollipop, while users show a socket).
Realizations can only be shown on class or component diagrams.
A realization is a relationship between classes, interfaces, components,
and packages that connects a client element with a supplier element. A
realization relationship between classes and interfaces and between components
and interfaces shows that the class realizes the operations offered by the
interface.
General relationship
Class diagram
showing dependency between "Car" class and "Wheel" class
(An even clearer example would be "Car depends on Wheel", because Car
already aggregates (and not just uses) Wheel)
Dependency
Dependency is a weaker form of
relationship which indicates that one class depends on another because it uses
it at some point in time. One class depends on another if the independent class
is a parameter variable or local variable of a method of the dependent class.
This is different from an association, where an attribute of the dependent
class is an instance of the independent class.
Multiplicity
The association relationship indicates that (at least) one of the two
related classes makes reference to the other. In contrast with the
generalization relationship, this is most easily understood through the phrase
'A has a B' (a mother cat has kittens, kittens have a mother cat).
The UML representation of an association is a line with an optional
arrowhead indicating the role of the object(s) in the relationship, and
an optional notation at each end indicating the multiplicity of
instances of that entity (the number of objects that participate in the
association).
0..1
|
No
instances, or one instance (optional, may)
|
1
|
Exactly one
instance
|
0..* or *
|
Zero or more
instances
|
1..*
|
One or more
instances (at least one)
|
Analysis stereotypes
In the early stages of a project's technical analysis, class diagrams can
be used to produce early conceptual models of the system. Classes at this stage
often take the form of boundaries, controls and entities and rarely survive
into the design without heavy changes.
Class Diagram Blog
Tidak ada komentar:
Posting Komentar