Ch06 - Class Diagrams Advanced
Ch06 - Class Diagrams Advanced
Ch06 - Class Diagrams Advanced
Stereotypes
e.g. an interface class indicated with <<interface>> no clear distinction between stereotype and constraint used by many extensions to core UML can use with classes, associations, generalisations
Object Diagrams
snapshot of object at point in time called an instance diagram example configuration of objects
classification refers to relationship between an object and its type standard is single, static classification of objects standard with programming languages
too restrictive for conceptual modelling Odell suggests multiple, dynamic classification single classification object belongs to a single type multiple classification object descibed by several types
e.g object can belong to types Male, Patient, Nurse at the same time multiple classification is different to multiple inheritance
3
in multiple inheritance a type has many super types but has a single type defined for it
for legal combinations use a discriminator subtypes with same discriminator are disjoint a person may be a manager or engineer or salesman, but only one of them
use single triangle in diagram for clarity or use many arrows with same label
can force instance of supertype to be instance of subtype using a constraint e.g. {complete} person has to either male or female and only one of them
legal combinations: (Female Patient Nurse) (Male Physiotherapist) (Female Patient) (Female Doctor Surgeon)
Dynamic Classification
object can change its type e.g. overdrawn bank account not allowed with static classification dynamic classification combines notion of state and type useful for conceptual modelling transformation from multiple, dynamic specification to a single, static implementation may be too messy
aggregation means part_of relationship no definitive semantics Think of it as a modelling placebo Rumbaugh 1999 composition stronger variety of aggregation part object belongs only to one whole object parts live and die with whole can indicate same with an association with 1..1 multiplicity multiplicity cannot indicate that a point may only belong to one polygon or circle at a time
Alternative notation
can be calculated from other associations and attributes interpretation depends on perspective
specification indicates constriant between values specification makes no statement about what is calculated and stored can calculate end from start and duration or duration from start and end
implementation level indicates store for performance reasons implementation indicates what is stored and calculated conceptual level indicate that derivation exists and has been confirmed by domain experts
10
realisation relationship has similar meaning as implements in Java implementation class can realise another interface inherited, not code specification model no difference between realisation and subtyping dependency relationship means if DataInput interface changes, so must OrderReader
11
reference object identity important want only one software object, no copies e.g. Customer object to see if two reference objects are the same, just compare their identities o1 == o2; value objects can have multiple value objects representing the same object in real world e.g. Date object 1-Jan-2000
to check for equality, check their values not identities requires special equals methods or overriding == operator in C++ should be immutable e.g. changing a date from 1-Jan to 2-Jan
In UML attributes used for value objects associations for reference objects composition implies value object
12
upper multiplicity bound > 1 convents is: treat as sets Rose implements as array can attach constraints {ordered} implies a list, object may appear only once in a list use {bag} when object may appear more than once, no ordering
Frozen
UML constraint that applies to an attribute or association end indicates that value of attribute or association end may not change during lifetime of source
usually an argument in a constructor for the value and no update operation for it class all association ends and attributes of class are frozen
13
be aware of is a relationship consider shep is a collie a collie is a dog dogs are animals a collie is a breed dog is a species
14
Qualified Associations
conceptually: cannot have 2 order lines for same product within a order shows constraints
implementation: indicated map, dictionary or similar data structure class Order { private Map _lineItems;
15
Association Class
16
first diagram would rule out person having more than one employment period with same company. Need to promote Competency to full class for this
17
suggests interface like class Person { Company getEmployer(); Company getEmployer( Date); void changeEmployer( Company, Date); void leaveEmployer( Date changeDate); }
18
Parameterised Class
supported in C++, template or parameterised class useful when working with collections in strongly typed languages
19
in specification terms EmployeeSet is subtype of Set not same as subtyping from implementation point of view, cannot override allows derived typing use only if supported by programming language
20
Visibility
C++ public member accessible anywhere in program private member can only be used by class which defines it protected member only used by defining class or subclasses of that class
Smalltalk all instance variables (data members) are private all operations are public private in Smalltalk similar to protected in C++, object can access inherited instance variables
confusion! in C++ an object has access to another objects privates if in same class in C++ object can access members of other objects in same class in he same way as it can access its own members not so in Smalltalk, private means private
21
Java like C++ in terms of private and public has extra level: package where visibility is restricted to instances of other classes in same package protected members accessible in subclasses and other classes in same package protected more visible than package classes can also be public or package Final twist in C++ friends touch each others private parts
22