UML for Java
Programmers
Object Mentor, Inc.
Or
How Uncle Bob us e s
UML.

www.objectmentor.com

fitnesse.org

www.xprogra...
The three modes of UML
Conceptual
Tied to human language.

Specification
A description of source code yet to be written.

...
Conceptual
Tied to human language:

Animal

“An Anima l ISA Dog”
Dog

3
Hmmm…

4
Tied to human language
A n im a l

Lounge
C h a ir

Led
Z e p p lin

5

« S it s I n A »

« D r in k s A »
Dog

« G ro o v...
Models of the “Real World”
Do not relate to software structure.

Now it’s time for: Uncle Bob’s rant….
Human language is n...
A Circle ISA Ellipse
User

E llip s e

C ir c le

7
Specification and Implementation
Are tied to code.
Follow the same rules.
Differ only in detail.
Sometimes.

8
Example:
public class TreeMap {
TreeMapNode topNode = null;
public void add(Comparable key, Object value) {…}
public Objec...
Here’s some UML for that.
2
TreeMap
+ add(key, value)
+ get(key)

topNode

nodes

TreeMapNode
+ add(key, value)
+ find(key...
Classes and Relationships.
Rectangles represent classes, and arrows represent relationships.

2
TreeMap
+ add(key, value)
...
Associations.
In this diagram all the relationships are associations. Associations are
simple data relationships in which ...
Relationship Names.
The name on an association maps to the name of the
variable that holds the reference.

public class Tr...
Multiplicity.
A number next to an arrowhead typically shows the number of
instances held by the relationship. If that numb...
Class Icons.
Class icons can have more than one compartment. The top compartment
always holds the name of the class. The o...
Interface.
The «interface» notation means that Comparable is an interface.

2
TreeMap
+ add(key, value)
+ get(key)

topNod...
Optional.
Most of the notations shown are optional
Uncle Bob is going to ra nt a ga in…
2
TreeMap
+ add(key, value)
+ get(...
<<Grimace>>.
But Uncle Bob, you didn’t ta lk a bout
Aggre ga tion or Compos ition.
Ra nt….
C ar

E n g in e

18

S te e r ...
Object Diagrams.
:TreeMap

topNode
:TreeMapNode
- itsKey = "Martin"

nodes[LESS]

nodes[GREATER]

:TreeMapNode

:TreeMapNo...
Freeze Frame.
It shows a set of objects and relationships at a particular moment in the
execution of the system. You can v...
Object Names are Underlined.
the rectangle icons represent objects. You can tell that they are
objects because their names...
Object : Class
The name after the colon is the name of the
class that the object belongs to.
:TreeMap

topNode
:TreeMapNod...
Values.
Note that the lower compartment of each object
shows the value of that object’s itsKey variable.
:TreeMap

topNode...
Links.
The relationships between the objects are called
links, and are derived from the associations.

:TreeMap
2
TreeMap
...
Sequence Diagrams.
public void add(Comparable key,Object value){
if (topNode == null)
topNode = new TreeMapNode(key, value...
Actor.
The stick figure (actor) represents an
unknown caller.

:TreeMap
add(key, value)

value

key

[topNode == null]

to...
Lifelines.
The dashed lines are lifelines, they
show the lifetime of the objects they
descend from.
:TreeMap
add(key, valu...
Messages.
The long arrows are messages sent
between the objects.

:TreeMap
add(key, value)

value

key

[topNode == null]
...
Guards.
The boolean expressions inside square brackets are
called guards. They show which path is taken.

:TreeMap
add(key...
Construction.
The message arrow that terminates on the
TreeMapNode icon represents construction.

:TreeMap
add(key, value)...
Data Tokens
The little arrows with circles are called data tokens.
They show any arguments or return values.

:TreeMap
add...
Activations.
The skinny rectangle below TreeMap is called
an activation. It depicts how much time the add
method executes....
Collaboration Diagrams.
1: add(key, value)
:TreeMap

[topNode != null]
1.1:add(key, value)
topNode
:TreeMapNode

33
Same data as Sequence Diagrams.
Collaboration diagrams make the
relationships between the objects clear.
1: add(key, value...
Links (again).
The objects are connected by relationships called
links. A link exists wherever one object can send a
messa...
Messages.
Traveling over those links are the messages
themselves. They are depicted as the smaller arrows.
1: add(key, val...
Message Labels.
The messages are labeled with the name of
the message, its sequence number, and any
guards that apply.
1: ...
Sequence Numbers.
The dot structure of the sequence number
shows the calling hierarchy.
1: add(key, value)
:TreeMap

[topN...
State Diagrams.
A Subway Turnstile.

coin / Unlock
pass / Alarm

Locked

pass / Lock

39

Unlocked

coin / Thankyou
States.
There are two states named
Locked and Unlocked.

coin / Unlock
pass / Alarm

Locked

pass / Lock

40

Unlocked

co...
Events.
Two events may be sent to the machine.
The coin event means that the user has dropped a
coin into the turnstile.
T...
Transitions.
The arrows are called transitions. They are labeled with
the event that triggers the transition and the actio...
Interpretation.
If we are in the Locked state and we get a coin event, then we transition to
the Unlocked state and we inv...
Sufficiency.
The diagrams shown in this chapter are enough
for most purposes.
Most programmers could live without any more...
Tools.
Now ask me what I think about tools…..

45
Documentation.

46
Where to get this presentation.

47
Upcoming SlideShare
Loading in...5
×

Uml for Java Programmers

171

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
171
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Uml for Java Programmers

  1. 1. UML for Java Programmers Object Mentor, Inc. Or How Uncle Bob us e s UML. www.objectmentor.com fitnesse.org www.xprogramming www.junit.org Copyright © 1998-2001 by Object Mentor, Inc All Rights Reserved
  2. 2. The three modes of UML Conceptual Tied to human language. Specification A description of source code yet to be written. Implementation A description of source code that already exists. 2
  3. 3. Conceptual Tied to human language: Animal “An Anima l ISA Dog” Dog 3
  4. 4. Hmmm… 4
  5. 5. Tied to human language A n im a l Lounge C h a ir Led Z e p p lin 5 « S it s I n A » « D r in k s A » Dog « G ro o ve s T o » M a r tin i «S m okesA » C ig a r {W a yL o u d }
  6. 6. Models of the “Real World” Do not relate to software structure. Now it’s time for: Uncle Bob’s rant…. Human language is not the best foundation for software structure. A Circle ISA Ellipse. 6
  7. 7. A Circle ISA Ellipse User E llip s e C ir c le 7
  8. 8. Specification and Implementation Are tied to code. Follow the same rules. Differ only in detail. Sometimes. 8
  9. 9. Example: public class TreeMap { TreeMapNode topNode = null; public void add(Comparable key, Object value) {…} public Object get(Comparable key) {…} } class TreeMapNode { private Comparable itsKey; private Object itsValue; private TreeMapNode nodes[] = new TreeMapNode[2]; public TreeMapNode(Comparable key, Object value) {…} public Object find(Comparable key) {…} public void add(Comparable key, Object value) {…} } 9
  10. 10. Here’s some UML for that. 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey «interface» Comparable itsValue Object 10
  11. 11. Classes and Relationships. Rectangles represent classes, and arrows represent relationships. 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey itsValue 11 «interface» Comparable Object
  12. 12. Associations. In this diagram all the relationships are associations. Associations are simple data relationships in which one object holds a reference to, and invokes methods upon, the other. 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey itsValue 12 «interface» Comparable Object
  13. 13. Relationship Names. The name on an association maps to the name of the variable that holds the reference. public class TreeMap { TreeMapNode topNode = null; } 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey itsValue 13 «interface» Comparable Object
  14. 14. Multiplicity. A number next to an arrowhead typically shows the number of instances held by the relationship. If that number is greater than one then some kind of container, like an array, is implied. class TreeMapNode { private TreeMapNode nodes[] = new TreeMapNode[2]; } 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey itsValue 14 «interface» Comparable Object
  15. 15. Class Icons. Class icons can have more than one compartment. The top compartment always holds the name of the class. The other compartments describe functions and variables. 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey itsValue 15 «interface» Comparable Object
  16. 16. Interface. The «interface» notation means that Comparable is an interface. 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey itsValue 16 «interface» Comparable Object
  17. 17. Optional. Most of the notations shown are optional Uncle Bob is going to ra nt a ga in… 2 TreeMap + add(key, value) + get(key) topNode nodes TreeMapNode + add(key, value) + find(key) itsKey itsValue 17 «interface» Comparable Object
  18. 18. <<Grimace>>. But Uncle Bob, you didn’t ta lk a bout Aggre ga tion or Compos ition. Ra nt…. C ar E n g in e 18 S te e r in g W heel
  19. 19. Object Diagrams. :TreeMap topNode :TreeMapNode - itsKey = "Martin" nodes[LESS] nodes[GREATER] :TreeMapNode :TreeMapNode - itsKey = "Bob" - itsKey = "Robin" nodes[LESS] nodes[LESS] :TreeMapNode :TreeMapNode :TreeMapNode :TreeMapNode - itsKey = "Alan" 19 nodes[GREATER] - itsKey = "Don" - itsKey = "Paul" - itsKey = "Sam" nodes[GREATER]
  20. 20. Freeze Frame. It shows a set of objects and relationships at a particular moment in the execution of the system. You can view it as a snapshot of memory. :TreeMap topNode :TreeMapNode - itsKey = "Martin" nodes[LESS] nodes[GREATER] :TreeMapNode :TreeMapNode - itsKey = "Bob" - itsKey = "Robin" nodes[LESS] nodes[LESS] :TreeMapNode :TreeMapNode :TreeMapNode :TreeMapNode - itsKey = "Alan" 20 nodes[GREATER] - itsKey = "Don" - itsKey = "Paul" - itsKey = "Sam" nodes[GREATER]
  21. 21. Object Names are Underlined. the rectangle icons represent objects. You can tell that they are objects because their names are underlined. :TreeMap topNode :TreeMapNode - itsKey = "Martin" nodes[LESS] nodes[GREATER] :TreeMapNode :TreeMapNode - itsKey = "Bob" - itsKey = "Robin" nodes[LESS] nodes[LESS] :TreeMapNode :TreeMapNode :TreeMapNode :TreeMapNode - itsKey = "Alan" 21 nodes[GREATER] - itsKey = "Don" - itsKey = "Paul" - itsKey = "Sam" nodes[GREATER]
  22. 22. Object : Class The name after the colon is the name of the class that the object belongs to. :TreeMap topNode :TreeMapNode - itsKey = "Martin" nodes[LESS] nodes[GREATER] :TreeMapNode :TreeMapNode - itsKey = "Bob" - itsKey = "Robin" nodes[LESS] nodes[LESS] :TreeMapNode :TreeMapNode :TreeMapNode :TreeMapNode - itsKey = "Alan" 22 nodes[GREATER] - itsKey = "Don" - itsKey = "Paul" - itsKey = "Sam" nodes[GREATER]
  23. 23. Values. Note that the lower compartment of each object shows the value of that object’s itsKey variable. :TreeMap topNode :TreeMapNode - itsKey = "Martin" nodes[LESS] nodes[GREATER] :TreeMapNode :TreeMapNode - itsKey = "Bob" - itsKey = "Robin" nodes[LESS] nodes[LESS] :TreeMapNode :TreeMapNode :TreeMapNode :TreeMapNode - itsKey = "Alan" 23 nodes[GREATER] - itsKey = "Don" - itsKey = "Paul" - itsKey = "Sam" nodes[GREATER]
  24. 24. Links. The relationships between the objects are called links, and are derived from the associations. :TreeMap 2 TreeMap + add(key, value) + get(key) topNode topNode nodes TreeMapNode :TreeMapNode + add(key, value) + find(key) - itsKey = "Martin" itsKey «interface» Comparable nodes[LESS] itsValue Object nodes[GREATER] :TreeMapNode :TreeMapNode - itsKey = "Bob" - itsKey = "Robin" nodes[LESS] nodes[LESS] :TreeMapNode 24 nodes[GREATER] :TreeMapNode :TreeMapNode :TreeMapNode - itsKey = "Alan" - itsKey = "Don" - itsKey = "Paul" - itsKey = "Sam" nodes[GREATER]
  25. 25. Sequence Diagrams. public void add(Comparable key,Object value){ if (topNode == null) topNode = new TreeMapNode(key, value); else topNode.add(key, value); } :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 25 [topNode != null]
  26. 26. Actor. The stick figure (actor) represents an unknown caller. :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 26 [topNode != null]
  27. 27. Lifelines. The dashed lines are lifelines, they show the lifetime of the objects they descend from. :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 27 [topNode != null]
  28. 28. Messages. The long arrows are messages sent between the objects. :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 28 [topNode != null]
  29. 29. Guards. The boolean expressions inside square brackets are called guards. They show which path is taken. :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 29 [topNode != null]
  30. 30. Construction. The message arrow that terminates on the TreeMapNode icon represents construction. :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 30 [topNode != null]
  31. 31. Data Tokens The little arrows with circles are called data tokens. They show any arguments or return values. :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 31 [topNode != null]
  32. 32. Activations. The skinny rectangle below TreeMap is called an activation. It depicts how much time the add method executes. :TreeMap add(key, value) value key [topNode == null] topNode: TreeMapNode add(key, value) 32 [topNode != null]
  33. 33. Collaboration Diagrams. 1: add(key, value) :TreeMap [topNode != null] 1.1:add(key, value) topNode :TreeMapNode 33
  34. 34. Same data as Sequence Diagrams. Collaboration diagrams make the relationships between the objects clear. 1: add(key, value) :TreeMap [topNode != null] 1.1:add(key, value) topNode :TreeMapNode 34
  35. 35. Links (again). The objects are connected by relationships called links. A link exists wherever one object can send a message to another. 1: add(key, value) :TreeMap [topNode != null] 1.1:add(key, value) topNode :TreeMapNode 35
  36. 36. Messages. Traveling over those links are the messages themselves. They are depicted as the smaller arrows. 1: add(key, value) :TreeMap [topNode != null] 1.1:add(key, value) topNode :TreeMapNode 36
  37. 37. Message Labels. The messages are labeled with the name of the message, its sequence number, and any guards that apply. 1: add(key, value) :TreeMap [topNode != null] 1.1:add(key, value) topNode :TreeMapNode 37
  38. 38. Sequence Numbers. The dot structure of the sequence number shows the calling hierarchy. 1: add(key, value) :TreeMap [topNode != null] 1.1:add(key, value) topNode :TreeMapNode 38
  39. 39. State Diagrams. A Subway Turnstile. coin / Unlock pass / Alarm Locked pass / Lock 39 Unlocked coin / Thankyou
  40. 40. States. There are two states named Locked and Unlocked. coin / Unlock pass / Alarm Locked pass / Lock 40 Unlocked coin / Thankyou
  41. 41. Events. Two events may be sent to the machine. The coin event means that the user has dropped a coin into the turnstile. The pass event means that the user has passed through the turnstile. coin / Unlock pass / Alarm Locked pass / Lock 41 Unlocked coin / Thankyou
  42. 42. Transitions. The arrows are called transitions. They are labeled with the event that triggers the transition and the action that the transition performs. coin / Unlock pass / Alarm Locked pass / Lock 42 Unlocked coin / Thankyou
  43. 43. Interpretation. If we are in the Locked state and we get a coin event, then we transition to the Unlocked state and we invoke the Unlock function. If we are in the Unlocked state and we get a pass event, then we transition to the Locked state and we invoke the Lock function. If we are in the Unlocked state and we get a coin event, then we stay in the Unlocked state and we call the Thankyou function. If we are in the Locked state and we get a pass event, then we stay in the Locked state and we call the Alarm function. pass / Alarm Locked coin / Unlock pass / Lock 43 Unlocked coin / Thankyou
  44. 44. Sufficiency. The diagrams shown in this chapter are enough for most purposes. Most programmers could live without any more knowledge of UML that what is shown here. 44
  45. 45. Tools. Now ask me what I think about tools….. 45
  46. 46. Documentation. 46
  47. 47. Where to get this presentation. 47
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×