Unified Modeling Language (UML) for OO domain analysis CSE432

advertisement
Unified Modeling Language
(UML)
for OO domain analysis
CSE432
Prof Glenn Blank
Notation wars
Early 90’s: 6-10 different notations

Bertrand Meyer: circles and arrows
Distinguishes inheritance and client/supplier relationships

Grady Booch: clouds, lines and decorations
GardeningPlan – Association- Environmental Controller
Heater and Cooler – Generalization/Specialization-> Actuator
Environmental Controller ●-“has a”- Heater (Cooler, Light)
Actuator o– “using” – Temperature (client/supplier)
Actuator is an abstract class (‘A’ in a triangle)

Peter Coad, Ed Yourdon & Jill Nicola:
Rounded boxes and annotated lines
Line bisected by semi-circle represents generalization (inheritance)
Line bisected by triangle represents whole/part

So, what’s your reaction to all these (and more) notations?
“Can’t we all get along?” Hence three amigos create UML in mid-90’s
Closer look at Coad & Nicola
Two different boxes grouping classes:



HIC (Human Interaction Component)
PDC (Problem Domain Components)
Why is “Separation of Concerns principle” a good idea?
First person scenarios

Coad & Nicola call this the "I'm alive principle":
Objects can be better understood by thinking about them and talking
about them in the first person:
"I know my own ____ and I can ___ myself."

What goes in the blanks?
Attributes and behaviors

Why is putting these scenarios in the first person a good idea?
Promotes “object-think”: objects are autonomous, performing behaviors
Similarly, Kent Beck talks about the need for anthropomorphism in
responsibility-driven design
Class diagrams in UML
Classes are boxes, lines are associations


Add decorations to lines to refine them
But before we study the decorations….
A heuristic for class diagram design
Don't put any decorations on the associations at first
Semantics of relations tends to be vague








“Is a" relationship can mean SUBTYPE ("a square is a polygon")
or INSTANCE-OF ("George is a square")
or IDENTICAL-TO ("The morning star is the evening star")
or PROPERTY-OF ("A circle is a round object")
or ROLE-OF ("George is a President")
or MADE-OF ("My house is a brick one")
or simply EXISTS (“To be or not to be…").
In many languages, there is no verb "is" at all, or it’s rarely used.
Let the meaning of relations emerge from what they relate

Vagueness is natural: start off vague, get more specific gradually
UML supports this heuristic by starting with simple
undirected lines (associations)
Later, add detail to your relationship structures
Two basic relationships of O-O
OOA typically distinguishes two relations: is-a and has-a
Why two?
That’s what O-O programming languages implement:


Smalltalk and Java: instance variables and inheritance
C++: data members and class derivation
Meyer calls these inheritance and client/supplier
Booch: generalization/specialization and
association or aggregation or composition
Coad and Yourdon: gen/spec and whole/part
UML calls these generalization
and association or aggregation or composition
Generalizations
(inheritance)
Extract commonality among specializations
UML uses arrow
Generalizations form a hierarchy
Multiple inheritance forms a lattice
Associations
Client-supplier/association/whole-part

Typically parts or members of a class
Multiplicity: numbers at connection ends




Manager -1――* -> Employee
Denotes 1 to many (*) relationships
0 to many, 1 to 1 relationships also common
From Extended Entity-Relation models (EER)
Role names at one connection end:


Manager ―― sales rep -> Employee
Employee's role is sales rep
Five activities of OOA
Coad, Yourdon and Nicola:
1) Class-&-object: describe problem domain
in terms of classes of objects
2) Structure: describe relationships between classes
3) Subject: organize classes into clusters or packages
4) Attributes: describe data held by objects
5) Services: describe behaviors that objects can perform
Which of these five activities are analysis
and which are design?
Class & Object analysis
Another look at Coad & Nicola notation



Why do all the classes except Count
have extra grey boxes?
An abstract class has one or more operations
that must be implemented by subclasses
UML represents an abstract class
by italicizing the class name
or adding the constraint label {abstract}
Structure (association) analysis
Lines connecting classes
In UML, simple line is an association

Decorations for multiplicity, role names, constraints
See example from Fowler

What does {ordered} constraint mean?
Aggregations and composition:



Arrow denotes navigability
e.g., Polygon and Circle refer to Point but not vice versa
A black-filled diamond denotes a composition
a part, unique to this whole

A white-empty diamond denotes an aggregation
a part, but not unique to this whole

E.g., A Point may appear in only one Polygon or Circle
but a Style could appear in both
An alternative notation for composition in boxes
Attributes and operations
A class box may have three parts

Class name, attributes and operations
Attributes in middle section


Typically attributes are built-in types
UML lets you include information about default values
and visibility (+,-,#)
E.g., - name: String
private
[1] = “Untitled” {readonly}
: type multiplicity default {property} (unmodifiable)
I recommend you hold off on these details until design
Operations in bottom section of class box


Represent services, functions or methods
Again, UML has a bit more notation,
for information about parameters, default values and visibility
E.g., + balanceOn(date:Date): Money
Again, I recommend you hold off on these details until design
Your next assignments
http://www.cse.lehigh.edu/~glennb/oose/afruit.htm
Note that there are two problems: fruit and undo
Due Sunday, February 19
Project analysis due Monday, February 27
Eclipse with plug-ins
Open Source IDE for O-O and Java





Plug-ins add more features
DrJava plug-in provides Java interpreter
Omondo plug-in adds UML class diagrams
Available on campus by running “eclips”
http://www.lehigh.edu/~sgh2/ (version 2.1)
or http://www.lehigh.edu/stem/teams/dieruff (3.0)
Dynamic behaviors
Class diagrams represent static relationships. Why?
What about modeling dynamic behavior?
Interaction diagrams model how groups of object
collaborate to perform some behavior

Typically captures the behavior of a single use case
Use Case: Order Entry
1) An Order Entry window sends a “prepare” message to an Order
2) The Order sends “prepare” to each Order Line on the Order
3) Each Order Line checks the given Stock Item
4) Remove appropriate quantity of Stock Item from stock
5) Create a deliver item
Alternative: Insufficient Stock
3a) if Stock Item falls below reorder level
then Stock Item requests reorder
Sequence diagram
Vertical line is called an object’s lifeline

Represents an object’s life during interaction
Object deletion denoted by X, ending a lifeline

Horizontal arrow is a message between two objects
Order of messages sequences top to bottom
Messages labeled with message name,
optionally arguments and control information
Control information, in brackets, may express conditions,
such as [hasStock], or iteration
Returns (dashed lines) are optional; use them to add clarity
Sequence diagrams can also represent concurrent processes:



UML 1 models asynchronous messages as horizontal lines with half arrow heads
UML 2 makes this distinction by not filling an arrowhead
Fowler prefers older notation. Why? Which do you prefer?
After setting up Transaction Coordinator,
invoke concurrent Transaction Checkers

If a check fails, kill all the Transaction Checker processes
Note use of comments in margin – When is this a good idea?
Collaboration diagrams
Objects are rectangular icons

e.g., Order Entry Window, Order, etc.
Messages are arrows between icons

e.g., prepare()
Numbers on messages indicate sequence

Also spatial layout helps show flow
Which do you prefer: sequence or collaboration diagrams?
Fowler now admits he doesn’t use collaboration diagrams

Interaction diagrams show flow clearly,
but are awkward when modeling alternatives
UML notation for control logic has changed in UML 2
but Fowler isn’t impressed
From CRC cards
to Interaction diagrams
Fowler recommends first using CRC cards
to begin modeling scenarios
Then document with UML sequence
(or collaboration) diagrams
Why might this be a good approach?
Sequence diagrams show collaborations
among many objects in a single use case


State diagrams show the behavior of a single object
across many use cases
We’ll examine state diagrams when we get to design
Download