Figure 1.1:
A small piece of the UML meta-model
Figure 1.2:
Classification of UML diagram types
Figure 1.3:
An informal screen flow diagram for part of the wiki (http://c2.com/cgi/wiki)
Figure 3.1:
A simple class diagram
Figure 3.2:
Showing properties of an order as attributes
Figure 3.3:
Showing properties of an order as associations
Figure 3.4:
A bidirectional association
Figure 3.5:
Using a verb phrase to name an association
Figure 3.6:
A note is used as a comment on one or more diagram elements
Figure 3.7:
Example dependencies
Figure 4.1:
A sequence diagram for centralized control
Figure 4.2:
A sequence diagram for distributed control
Figure 4.3:
Creation and deletion of participants
Figure 4.4:
Interaction frames
Figure 4.5:
Older conventions for control logic
Figure 4.6:
A sample CRC card
Figure 5.1:
Showing responsibilities in a class diagram
Figure 5.2:
Static notation
Figure 5.3:
Aggregation
Figure 5.4:
Composition
Figure 5.5:
Derived attribute in a time period
Figure 5.6:
A Java example of interfaces and an abstract class
Figure 5.7:
Ball-and-socket notation
Figure 5.8:
Older dependencies with lollipops
Figure 5.9:
Using a lollipop to show polymorphism in a sequence diagram
Figure 5.10:
Qualified association
Figure 5.11:
Multiple classification
Figure 5.12:
Association class
Figure 5.13:
Promoting an association class to a full class
Figure 5.14:
Association class subtleties (Role should probably not be an association class)
Figure 5.15:
Using a class for a temporal relationship
Figure 5.16:
«Temporal» keyword for associations
Figure 5.17:
Template class
Figure 5.18:
Bound element (version 1)
Figure 5.19:
Bound element (version 2)
Figure 5.20:
Enumeration
Figure 5.21:
Active class
Figure 5.22:
Classes with messages
Figure 6.1:
Class diagram of Party composition structure
Figure 6.2:
Object diagram showing example instances of Party
Figure 7.1:
Ways of showing packages on diagrams
Figure 7.2:
Package diagram for an enterprise application
Figure 7.3:
Separating Figure 7.2 into two aspects
Figure 7.4:
A package implemented by other packages
Figure 7.5:
Defining a required interface in a client package
Figure 8.1:
Example deployment diagram
Figure 9.1:
Example use case text
Figure 9.2:
Use case diagram
Figure 10.1:
A simple state machine diagram
Figure 10.2:
Internal events shown with the typing state of a text field
Figure 10.3:
A state with an activity
Figure 10.4:
Superstate with nested substates
Figure 10.5:
Concurrent orthogonal states
Figure 10.6:
A C# nested switch to handle the state transition from Figure 10.1
Figure 10.7:
A State pattern implementation for Figure 10.1
Figure 11.1:
A simple activity diagram
Figure 11.2:
A subsidiary activity diagram
Figure 11.3:
The activity of Figure 11.1 modified to call Figure 11.2
Figure 11.4:
Partitions on an activity diagram
Figure 11.5:
Signals on an activity diagram
Figure 11.6:
Sending and receiving signals
Figure 11.7:
Four ways of showing an edge
Figure 11.8:
Transformation on a flow
Figure 11.9:
Expansion region
Figure 11.10:
Shorthand for a single action in an expansion region
Figure 11.11:
Flow finals in an activity
Figure 11.12:
Join specification
Figure 12.1:
Communication diagram for centralized control
Figure 12.2:
Communication diagram with nested decimal numbering
Figure 13.1:
Two ways of showing a TV viewer and its interfaces
Figure 13.2:
Internal view of a component (example suggested by Jim Rumbaugh)
Figure 13.3:
A component with multiple ports
Figure 14.1:
Notation for components
Figure 14.2:
An example component diagram
Figure 15.1:
A collaboration with its class diagram of roles
Figure 15.2:
A sequence diagram for the auction collaboration
Figure 15.3:
A collaboration occurrence
Figure 15.4:
A nonstandard way of showing pattern use in JUnit (junit.org)
Figure 16.1:
Interaction summary diagram
Figure 17.1:
Timing diagram showing states as lines
Figure 17.2:
Timing diagram showing states as areas