07 Sequence Diagram
07 Sequence Diagram
Agenda
Interaction Diagrams A First Look at Sequence Diagrams Objects Messages Control Information Examples
Sequence Diagrams 2
Interaction Diagrams
A series of diagrams describing the dynamic behavior of an object-oriented system.
A set of messages exchanged among a set of objects within a context to accomplish a purpose.
Often used to model the way a use case is realized through a sequence of messages between objects.
Sequence Diagrams 3
Sequence Diagram
The subject of this tutorial
Sequence Diagrams
Sequence Diagrams
A Sequence Diagram
member: LibraryMember borrow(book) ok = mayBorrow() book:Book :Book Copy
Sequence Diagrams
A Sequence Diagram
X-Axis (objects)
member: LibraryMember borrow(book) ok = mayBorrow() book:Book :Book Copy
message
[ok] borrow(member)
Life Line
setTaken(member)
Object
Y-Axis (time)
Activation box
condition
Sequence Diagrams 8
Object
Object naming:
syntax: [instanceName][:className] Name classes consistently with your class diagram (same classes). Include instance names when objects are referred to in messages or when several objects of the same type exist in the diagram.
myBirthdy :Date
Messages
An interaction between two objects is performed as a message sent from one object to another (simple operation call, Signaling, RPC) If object obj1 sends a message to another object obj2 some link must exist between those two objects (dependency, same objects)
Sequence Diagrams 10
Messages (Cont.)
A message is represented by an arrow between the life lines of two objects.
Self calls are also allowed The time required by the receiver object to process the message is denoted by an activation-box.
Return Values
Optionally indicated using a dashed arrow with a label indicating the return value.
Dont model a return value when it is obvious what is being returned, e.g. getTotal() Model a return value only when you need to refer to it elsewhere, e.g. as a parameter passed in another message. Prefer modeling return values as part of a method invocation, e.g. ok = isValid()
Sequence Diagrams 12
Synchronous Messages
Nested flow of control, typically implemented as an operation call.
The routine that handles the message is completed before the caller resumes execution.
:A
doYouUnderstand()
:B
Caller Blocked
yes
Sequence Diagrams
return (optional)
13
Object Creation
An object may create another object via a <<create>> message.
Preferred
:A
<<create>>
:B
:A
<<create>>
:B
Constructor
Sequence Diagrams 14
Object Destruction
An object may destroy another object via a <<destroy>> message.
An object may destroy itself. Avoid modeling object destruction unless memory management is critical. :A :B
<<destroy>>
Sequence Diagrams
15
Control information
Condition
syntax: [ expression ] message-label The message is sent only if the condition is true [ok] borrow(member) example:
Iteration
syntax: * [ [ expression ] ] message-label The message is sent many times to possibly multiple receiver objects.
Sequence Diagrams 16
:Shape
:Driver
:Bus
Sequence Diagrams
17
Example 1
:Violations Dialog :Violations Controller :Violations DBProxy
Clerk
lookup viewButton() id=getID()
May be a pseudomethod
display(v)
getViolation(id)
<<create>>
v:Traffic Violation
Sequence Diagrams
Example 2
Active object Client
print(doc,client) enqueue(job)
Printing A Document
:Queue
:Printer Proxy
:PrintServer
Sequence Diagrams
20