Practical Object-Oriented Design with UML 2e
PRACTICAL OBJECT-ORIENTED DESIGN WITH UML 2e
Chapter 2: Modelling with Objects
The McGraw-Hill Companies, 2004
Slide 1/1
Practical Object-Oriented Design with UML 2e
The Object Model
A general view of program structure shared by UML and object-oriented programming languages like Java and C++ Computation takes place in objects that:
store data and implement behaviour are linked together in a network communicate by sending messages are described by classes
The McGraw-Hill Companies, 2004 Slide 1/2
Practical Object-Oriented Design with UML 2e
UML and Code
Because of the shared object model:
UML diagrams can easily be implemented object-oriented programs can easily be documented in UML
Reverse engineering:
creating a UML model for existing code often useful in dealing with undocumented legacy systems
The McGraw-Hill Companies, 2004
Slide 1/3
Practical Object-Oriented Design with UML 2e
Stock Control Example
Keep track of parts in a warehouse and how they are used
parts have a part number, name and cost
the system must track individual parts
parts can be used to form assemblies assemblies have a hierarchical structure
Could be used for a variety of applications
e.g. find the cost of the materials in an assembly
The McGraw-Hill Companies, 2004 Slide 1/4
Practical Object-Oriented Design with UML 2e
A Simple Part Class
public class Part { private String name ; private long number ; private double cost ; public Part(String nm, long num, double cost) { name = nm ; // etc } public String getName( ) { return name; } // etc }
The McGraw-Hill Companies, 2004 Slide 1/5
Practical Object-Oriented Design with UML 2e
The Part Class in UML
A class is represented by a single UML icon
P
p
Slide 1/6
The McGraw-Hill Companies, 2004
Practical Object-Oriented Design with UML 2e
UML Class Notation
Class icons have three compartments
the first shows the class name the second optionally shows attributes
derived from its fields (data members)
the third optionally shows operations
derived from its methods (member functions) constructors (and static methods) underlined
Class features = attributes + operations
access levels: public (+) and private (-)
The McGraw-Hill Companies, 2004 Slide 1/7
Practical Object-Oriented Design with UML 2e
Objects
Objects are created at run-time as instances of classes:
Part myScrew = new Part(screw, 28834, 0.02) ;
Individual objects can be shown in UML:
The McGraw-Hill Companies, 2004
Slide 1/8
Practical Object-Oriented Design with UML 2e
UML Object Notation
Object icons have two compartments
the first shows the object and class names
variable names can be used as object names the object name is optional the class name is preceded by a colon the names are always underlined
the second shows the actual data stored in the object, as attribute/value pairs
this compartment is usually omitted
The McGraw-Hill Companies, 2004 Slide 1/9
Practical Object-Oriented Design with UML 2e
Object Properties
Objects have:
state: the data values held in the object behaviour: the functionality it contains
identity: a distinguishing property of an object
not an attribute value could be the object's address in memory
names: useful in modelling to refer to object
Objects normally encapsulate their data
The McGraw-Hill Companies, 2004 Slide 1/10
Practical Object-Oriented Design with UML 2e
Avoid Data Replication
All parts of the same kind have the same attribute values (name, number, cost)
wasteful of resources
hard to maintain, eg if the cost changes
Better to create a new class for shared data
call this a catalogue entry describes a type of part each individual part described by one entry
The McGraw-Hill Companies, 2004 Slide 1/11
Practical Object-Oriented Design with UML 2e
Parts and Catalogue Entries
The McGraw-Hill Companies, 2004
Slide 1/12
Practical Object-Oriented Design with UML 2e
Implementation
Catalogue entry class defines shared data
Each part holds a reference to an entry
public class Part {
private CatalogueEntry entry ; public Part(CatalogueEntry e) { entry = e; }
}
When parts are created, an entry is given
CatalogueEntry screw = new CatalogueEntry(screw,28834,0.02); Part s1 = new Part(screw) ;
Part s2 = new Part(screw) ;
The McGraw-Hill Companies, 2004 Slide 1/13
Practical Object-Oriented Design with UML 2e
Links
References can be shown in UML as links
object name is name of variable field name entry used to label end of link
The McGraw-Hill Companies, 2004
Slide 1/14
Practical Object-Oriented Design with UML 2e
Associations
Data relationships between classes
Links are instances of associations
The McGraw-Hill Companies, 2004
Slide 1/15
Practical Object-Oriented Design with UML 2e
Properties of Associations
Associations can have:
a name (not shown) a rolename at each end
derived from field name in code
a multiplicity at either end
this specifies how many links there can be
an arrowhead at either end showing navigability
derived from direction of reference in code
The McGraw-Hill Companies, 2004
Slide 1/16
Practical Object-Oriented Design with UML 2e
UML Diagram Types
Object diagrams show objects and links
this describes the run-time properties of a program
Class diagrams show classes and associations
this shows the compile-time properties of a program i.e. the logical structure of its source code
The McGraw-Hill Companies, 2004
Slide 1/17
Practical Object-Oriented Design with UML 2e
Object Interaction
Objects interact by method calls
public class Part { private CatalogueEntry entry ; public double cost( ) { return entry.getCost(); } } ... Part s1 = new Part(screw) ; double s1cost = s1.cost() ;
Functionality is distributed among objects which must communicate
The McGraw-Hill Companies, 2004 Slide 1/18
Practical Object-Oriented Design with UML 2e
Messages
Object communication is shown in UML as message passing
a message corresponds to a method call
the class of the client object is not specified in this diagram
The McGraw-Hill Companies, 2004
Slide 1/19
Practical Object-Oriented Design with UML 2e
Collaboration Diagrams
Object diagrams with messages show collaborations
multiple messages can be shown on one diagram return values are shown using the := notation
The McGraw-Hill Companies, 2004
Slide 1/20
Practical Object-Oriented Design with UML 2e
Assemblies
Assemblies contain parts
Links show which assembly a part belongs to
The McGraw-Hill Companies, 2004
Slide 1/21
Practical Object-Oriented Design with UML 2e
Implementing Assemblies
Assemblies could be implemented using a data structure to hold references to parts
public class Assembly { private Vector parts = new Vector() ; public void add(Part p) { parts.addElement(p) ; }
These links are instances of a new association
The McGraw-Hill Companies, 2004 Slide 1/22
Practical Object-Oriented Design with UML 2e
The 'Contains' Association
Contains is the association name
an assembly contains parts
parts is the rolename Assemblies can contain zero or more parts
this is documented by the parts multiplicity
The McGraw-Hill Companies, 2004
Slide 1/23
Practical Object-Oriented Design with UML 2e
Subassemblies
The McGraw-Hill Companies, 2004
Slide 1/24
Practical Object-Oriented Design with UML 2e
Polymorphism
This requires assemblies to hold a mix of pointers to parts and (sub)assemblies
Inheritance is often used to implement this:
public abstract class Component { ... } public class Part extends Component { ... } public class Assembly extends Component { private Vector components = new Vector() ; public void addComponent(Component c) { components.addElement(c) ; } }
The McGraw-Hill Companies, 2004 Slide 1/25
Practical Object-Oriented Design with UML 2e
Generalization
Javas extends relationship is represented by generalization in UML
Also called specialization if viewed downwards
The McGraw-Hill Companies, 2004
Slide 1/26
Practical Object-Oriented Design with UML 2e
Properties of Generalization
Generalization is not an association:
does not give rise to links between objects usually unlabelled
never has multiplicity annotations
Explained by substitutability:
an instance of a subclass can be used wherever an instance of a superclass is expected similar to reference conversions in Java
The McGraw-Hill Companies, 2004 Slide 1/27
Practical Object-Oriented Design with UML 2e
A Polymorphic Association
Assemblies contain Components:
instances of Contains can link assemblies to instances of both Component subclasses
the Component class is abstract (no instances)
The McGraw-Hill Companies, 2004
Slide 1/28
Practical Object-Oriented Design with UML 2e
The Cost of an Assembly
Add up the cost of all the components
The McGraw-Hill Companies, 2004
Slide 1/29
Practical Object-Oriented Design with UML 2e
Dynamic Binding
Both Part and Assembly classes must implement a cost method
An assembly sends the cost message to all its components The run-time system checks the type of the message receiver and invokes the correct method
The McGraw-Hill Companies, 2004
Slide 1/30
Practical Object-Oriented Design with UML 2e
Applicability of Object Model
Some classes inspired by real-world objects
Real-world doesnt necessarily provide a good software design
e.g. data replication in the original Part class
Object-orientation better understood as an effective approach to software architecture
The McGraw-Hill Companies, 2004
Slide 1/31