11 software engineering dr. k. t. tsang lecture 7 advanced class modeling kentsang/swe/swe.htm
TRANSCRIPT
11
Software EngineeringDr. K. T. Tsang
Lecture 7
Advanced class modelinghttp://www.uic.edu.hk/~kentsang/SWE/SWE.htm
2
Multiplicity • Multiplicity - a constraint on cardinality of a set
• Multiplicity also applies to attributes
• Multiplicity for an attribute specifies the number of possible values for each instantiation of an attribute
Person
name: string [1]birthday: date [1]phoneNumber: string [*]address: string [1..*]
3
Scope & visibility of features• Scope – whether a feature applies to an
object (object scope) or an entire class (static, class scope)
• Visibility – public(+), protected(#) or private(-)
4
Scope – example 1
PhoneMessage
maxDurationmaxDaysRetaineddateRecordtimeRecordedprioritymessagehasBeenReceived
PhoneMailbox
maxMsgCountphoneNumberpassWordgreeting
Person
name
owner
owner
source
*
*
*
0..1
1
1
Not a good model
{ordered}
5
Scope – example 2
PhoneMessage
dateRecordtimeRecordedprioritymessagehasBeenReceived
PhoneMailbox
phoneNumberpassWordgreeting
MailCategory
categoryNamemsgMaxDurationmsgDaysRetainedmsgMaxCount
Person
name
*
*
0..1
1owner
source
{ordered}
1
*
owner
*
1
Preferred model
6
N-ary Associations
• Binary Associations – 2 ends
• Ternary Associations – 3 ends
• N-ary Associations – n ends, avoid them
• Most N-ary Associations can be decomposed into binary associations
7
Restating an N-ary Association• Decompose non-atomic ternary into binary associations
Company
name* *Person
name
Purchase
quantitydatecost
11
stock
stock Company
name
**
Person
name
Purchase
quantitydatecost
*
8
Example - A genuine ternary associationp.65 B&R, Fig.4.6
Language
name
**
Project
name
Person
name
*programmer
An atomic n-ary association is one that cannot be subdivided into binary associations without losing information.
Class diagram
9object diagram
Java:Language
name=“Java”
P135:Project
name=“P135”
Mary:Person
name=“Mary”
C:Language
name=“C”
library:Project
name=“library”
Example - A genuine ternary association..
10
Example 2 - A ternary association
TextBook
Semester
Course
Professor
roomNumber
DeliveredCourse **
* *
*
A class associates with an association?
p.65 B&R, Fig. 4.7
11
Semester
Course
Professor
roomNumber
DeliveredCourse **
*
TextBook *
Example 2 – An n-ary association
A better way??
12
Promoting an n-ary association to classes
Semester
Course
Professor
roomNumber
DeliveredCourse
*
*
*
TextBook *
A regular class
Programming languages cannot express n-ary association, so we must promote them to class.
13
Aggregation• Aggregation is a special form of association
in which an aggregate object is made of constituent parts (is a part of).
• An aggregate object is an extended object treated as a unit in many operation.
• Properties of Aggregation – Transitive: if A is part of B and B is part of C,
then A is also part of C– Anti-symmetric: if A is part of B then B is not part
of A
14
Aggregation - example
Auto-mobile
Engine Body Wheel Seat
1 1
*
* *
*
*
*
UML symbol-Hollow diamond
15
• There are 2 forms of part-whole relationships in UML.
• The general form is Aggregation.
• The more restricted form is Composition:– a part can belong to at most to one assembly– once assigned, the part has the same lifetime as
the assembly
• Deletion of the assembly object triggers the deletion of all objects in the composition.
Aggregation & Composition
16
Composition - example
Company Division Department
Person
*
**1
1
1
UML symbol- solid diamond
17
Propagation of operations• The automatic application of an operation to
a group of objects when the operation is applied to a starting object.
• Examples – – Moving an aggregate moves its parts– Copying a document copies all its paragraphs
and all the characters in a paragraph
18
Paragraph
copy
Document
copy
Character
copy
*1 *1
Propagation of operations
Person 1
*
The copy operation propagates from document to paragraphs to characters, but not in the reverse direction.
owns
copy copy
p.68 B&R, Fig.4.11
19
Abstract & concrete classes• An abstract class has no direct instance but its
descendant classes have direct instances.• A concrete class is a class that can have direct
instances (instantiable).• Abstract class can have abstract operation,
designated by italics or the keyword {abstract}.• An abstract operation defines the signature of an
operation for which each concrete subclass may provide its own implementation.
• A concrete class may not contain any abstract operation.
20
Abstract operation - example
Employee
yearTodateEarnings
computePay
FullTimeEmployee
weeklyRate
computePay
PartTimeEmployee
hourlyRate
computePay
Note: Avoid concrete super-class
21
Multiple inheritance
• Allows a class to have more than one superclass, and inherit features from all parents.
• Some OOP languages does not support multiple inheritance, e.g. Java.
• Multiple inheritance may create ambiguities. Be careful with its usage.
22
Multiple inheritance - example
Employee
yearTodateEarnings
computePay
FullTimeEmployee
weeklyRate
computePay
PartTimeEmployee
hourlyRate
computePay
Partner
ownership
computePay
FullTimeEmployeePartner
23
• An object is an instance of all ancestors of its class.
Multiple classification
24
Multiple classification - example
UniversityMemberPerson
Faculty StudentStaff
*1
Instructor
{overlapping}
Overlapping means a person may belong to more than one kind of UniversityMember
25
Delegation using composition of parts
Worker Management
Employee
Manager DirectorFullTime PartTime
1
1 1
1
employmentStatus managerialStatus
p.74 B&R, Fig. 4.19
Workaround for Multiple inheritance: recast a super-class with multiple inheritance as a composition in which each part replaces a subclass (generalization).
26
Workaround 2 – nested generalization
Employee
FullTime PartTime
FullTimeManager FullTimeWorker PartTimeManager PartTimeWorker
27
Metadata• Metadata is data that describes other data.• Example: A class definition is metadata.• Class is meta-object. Class that describes other
class is meta-class.
CarModel
modelNameyearbasePrice
PhysicalCar
serialNumbercoloroptions
Company Person
*
1
*
1manufacturer owner
*1describes
28
Reification
• Reification is the promotion of something that is not an object to an object.
Substance
substanceName
Reification:
Promote attribute to a class
Substance SubstanceName
substanceName* 1..*
alias
29
Constraints on objects
Employee
salary
boss0..1
*(salary<boss.salary)
Window
lengthwidth
(0.8<length/width<1.5)
Job
priority
(priority never increases)
30
Constraint on generalization set (subclasses)
• Disjoint – subclasses are mutually exclusive
• Overlapping – an object can belong to more than one subclass
• Complete – the generalization lists all possible subclasses
• Incomplete – the generalization may miss some subclasses
31
• Multiplicity for an association restricts the number of objects related to a given object.
• An ordinary association has no presumed order on the objects of the “many” end. The constraint {ordered} indicates that objects of the “many” end have an order that must be preserved.
Constraint on links
32
Subset constraint between associations
Person Committee
Member of
Chair of
(subset)* *
*1
The chair of a committee must be a member of the committee.
33
Derived data• Classes, attributes and associations may be
derived from others.• The notation for a derived element is a slash (/)
in front of the element name.• The constraint that determines the derivation
should also be shown.
Person
birthdate/ age
{age=currentDate – birthdate}
CurrentDate
Derived attribute
34
Derived object & association
Machine Assembly Part*1*1
offset offset
/ Offset
1
1
offset = MachineAssembly.offset XPartAssembly.offset
/ NetOffset
Derived data can complicate implementation. Use them only if they are truly necessary.
35
Package• A package is a group of elements (classes,
associations, generalizations and packages of smaller sizes) with a common theme or purpose.
• Packages partition a model, making it easier to understand or manage.
• Large applications may have several tiers of packages.
PackageName
Notation of a package
36
Reading for this lecture
• Chapter 4 Blaha & Rumbaugh
3737
Software EngineeringDr. K. T. Tsang
Lecture 8
State modelinghttp://www.uic.edu.hk/~kentsang/SWE/SWE.htm
38
Reading for this lecture
• Chapter 5 Blaha & Rumbaugh