Object diagrams model the instances of things contained in class
diagrams. An object diagram shows a set of objects and their relationships at a
point in time.
You use object diagrams to model the static design view or static
process view of a system. This involves modeling a snapshot of the system at a
moment in time and rendering a set of objects, their state, and their
relationships.
With the UML, you use class diagrams to visualize the static aspects of
your system's building blocks. You use interaction diagrams to visualize the
dynamic aspects of your system, consisting of instances of these building
blocks and messages dispatched among them. An object diagram covers a set of
instances of the things found in a class diagram. An object diagram, therefore,
expresses the static part of an interaction, consisting of the objects that
collaborate, but without any of the messages passed among them. In both cases,
an object diagram freezes a moment in time, as shown below:
Common Properties
An object diagram is a special kind of diagram and shares the same
common properties as all other diagrams, that is, a name and graphical contents
that are a projection into a model. What distinguishes an object diagram from
all other kinds of diagrams is its particular content.
Contents
Object diagrams commonly
contain:
- Objects
- Links
Like all other diagrams, object
diagrams may contain notes and constraints.
Object diagrams may also
contain packages or subsystems, both of which are used to group elements of
your model into larger chunks. Sometimes, you'll want to place classes in your
object diagrams, as well, especially when you want to visualize the classes
behind each instance.
Common Uses
You use object diagrams to
model the static design view or static process view of a system just as you do
with class diagrams, but from the perspective of real or prototypical
instances. This view primarily supports the functional requirements of a system,
that is, the services the system should provide to its end users. Object
diagrams let you model static data structures.
When you model the static
design view or static process view of a system, you typically use object
diagrams in one way:
- To model object structures
Common Modeling Techniques
Modeling Object Structures
To model an object structure,
- Identify the mechanism you'd like to model. A mechanism represents some function or behavior of the part of the system you are modeling that results from the interaction of a society of classes, interfaces, and other things.
- For each mechanism, identify the classes, interfaces, and other elements that participate in this collaboration; identify the relationships among these things, as well.
- Consider one scenario that walks through this mechanism. Freeze that scenario at a moment in time, and render each object that participates in the mechanism.
- Expose the state and attribute values of each such object, as necessary, to understand the scenario.
- Similarly, expose the links among these objects, representing instances of associations among them.
For example, below figure
shows a set of objects drawn from the implementation of an autonomous robot.
This figure focuses on some of the objects involved in the mechanism used by the
robot to calculate a model of the world in which it moves. There are many more
objects involved in a running system, but this diagram focuses on only those
abstractions that are directly involved in creating this world view.
Forward and Reverse Engineering
Forward engineering (the
creation of code from a model) an object diagram is theoretically possible but
pragmatically of limited value. In an object-oriented system, instances are
things that are created and destroyed by the application during run time.
Therefore, you can't exactly instantiate these objects from the outside.
Reverse engineering (the
creation of a model from code) an object diagram is a very different thing. In
fact, while you are debugging your system, this is something that you or your
tools will do all the time.
To reverse engineer an object
diagram,
- Chose the target you want to reverse engineer. Typically, you'll set your context inside an operation or relative to an instance of one particular class.
- Using a tool or simply walking through a scenario, stop execution at a certain moment in time.
- Identify the set of interesting objects that collaborate in that context and render them in an object diagram.
- As necessary to understand their semantics, expose these object's states.
- As necessary to understand their semantics, identify the links that exist among these objects.
No comments:
Post a Comment
Thank you for your message. We I get back to you soon...