03/12/2001 © bennett, mcrobb and farmer 2002 1 class design based on chapter 14 of bennett, mcrobb...

36
03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design Using UML, (2 nd Edition), McGraw Hill, 2002.

Post on 19-Dec-2015

232 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

03/12/2001 © Bennett, McRobb and Farmer 2002 1

Class DesignClass Design

Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design Using UML, (2nd Edition), McGraw Hill, 2002.

Page 2: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 2

In This Lecture You Will In This Lecture You Will Learn:Learn:

How to apply criteria for good design How to design associations The impact of integrity constraints on

design How to design operations The role of normalization in object

design

Page 3: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 3

Class Specification: Class Specification: AttributesAttributes

An attribute’s data type is declared in UML using the following syntax

name ‘:’ type-expression ‘=’ initial-value ‘{’property-string‘}’

Where– name is the attribute name– type-expression is its data type– initial-value is the value the attribute is set to when the

object is first created – property-string describes a property of the attribute, such

as constant or fixed

Page 4: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 4

Class Specification: Class Specification: AttributesAttributes

BankAccount class with the attribute

data types included

BankAccount

accountNumber : Integer accountName : String {not null} balance : Money = 0 /availableBalance : Money overdraftLimit : Money

open(accountName : String) : Boolean close() : Boolean credit(amount:Money) : Boolean debit(amount:Money) : Boolean getBalance() : Money setBalance(newBalance : Money) getAccountName() : String setAccountName(newName : String)

Shows a derivable attribute

Page 5: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 5

Class Specification: Class Specification: AttributesAttributes

The attribute balance in a BankAccount class might be declared with an initial value of zero using the syntax

balance: Money = 0.00 Attributes that may not be null are

specifiedaccountName: String {not null}

Arrays are specifiedqualification[0..10]: String

Page 6: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 6

Class Specification: Class Specification: OperationsOperations

The syntax used for an operation isoperation name ‘(’parameter-list ‘)’‘:’ return-type-expression

An operation’s signature is determined by the operation’s name, the number and type of its parameters and the type of the return value if any

Page 7: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 7

Class Specification: Class Specification: OperationsOperations

BankAccount class with operation

signatures included.

BankAccount

accountNumber : Integer accountName : String {not null} balance : Money = 0 /availableBalance : Money overdraftLimit : Money

open(accountName : String) : Boolean close() : Boolean credit(amount:Money) : Boolean debit(amount:Money) : Boolean getBalance() : Money setBalance(newBalance : Money) getAccountName() : String setAccountName(newName : String)

Page 8: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 8

Which Operations?Which Operations?

Generally don’t show primary operations

Only show constructors where they have special significance

Varying levels of detail at different stages in the development cycle

Page 9: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 9

VisibilityVisibilityVisibility symbol

Visibility Meaning

+ Public The feature (an operation or an attribute) is directly accessible by an instance of any class.

- Private The feature may only be used by an instance the class that includes it.

# Protected The feature may be used either by the class that includes it or by a subclass or decendant of that class.

~ Package The feature is directly accessible only by instances of a class in the same package.

Page 10: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 10

VisibilityVisibilityBankAccount

- nextAccountNumber: Integer - accountNumber: Integer - accountName: String {not null} - balance: Money = 0 - /availableBalance: Money - overdraftLimit: Money

+ open(accountName: String): Boolean + close(): Boolean + credit(amount: Money): Boolean + debit(amount: Money): Boolean + viewBalance(): Money # getBalance(): Money - setBalance(newBalance: Money) # getAccountName(): String # setAccountName(newName: String)

BankAccount class with visibility specified

Page 11: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 11

InterfacesInterfaces UML supports two notations to show

interfaces– The small circle icon showing no detail– A stereotyped class icon with a list of the

operations supported– Normally only one of these notations is used on

any one diagram The realize relationship, represented by the

dashed line with a triangular arrowhead, indicates that the client class (e.g. Advert) supports at least the operations listed in the interface

Page 12: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 12

Interfaces Interfaces for the for the AdvertAdvert classclass

- staffNo - staffName - staffStartDate - qualif ication

CreativeStaff

+ calculateBonus() + linkToNote()

- title - type - targetDate - estimatedCost - completionDate

Advert

+ getCost() + setCompleted() + view()

Realize relationships

«interface» Manageable

+ getCost() + setCompleted() + view()

«interface» Viewable

+ view()

Manageable Viewable

- companyName - companyAddress - companyTelephone - companyFax - companyEmail - contactName - contactTelephone - contactEmail

Client

+ assignStaffContact() + changeStaffContact()

«use» «use»

«realize» «realize»

Page 13: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 13

Criteria for Good Design: Criteria for Good Design: CouplingCoupling

Coupling describes the degree of interconnectedness between design components

It is reflected by the number of links an object has and by the degree of interaction the object has with other objects

Page 14: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 14

Criteria for Good Design: Criteria for Good Design: CohesionCohesion

Cohesion is a measure of the degree to which an element contributes to a single purpose

The concepts of coupling and cohesion are not mutually exclusive but actually support each other

Coad and Yourdon (1991) suggested several ways in which coupling and cohesion can be applied within an object-oriented approach

Page 15: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 15

Inheritance Inheritance CCouplingouplingVehicle

decription serviceDate maximumAltitude takeOffSpeed

checkAltitude() takeOff()

LandVehicle

numberOfAxles registrationDate register()

Inheritance Coupling describes the degree to which a subclass actually needs the features it inherits from its base class

Poor inheritance coupling as unwanted

attributes and operations are

inherited

Page 16: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 16

Operation Cohesion Operation Cohesion

Lecturer

lecturerName lecturerAddress roomNumber roomLength roomWidth

calculateRoomSpace()

{return roomLenght* roomWidth;}

Good operation cohesion but poor class cohesion

Page 17: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 17

Poor Specialization Poor Specialization CohesionCohesion

Address

number street town county country postCode

Person

personName age gender

Company

companyName annualIncome annualProfit

Specialization Cohesion

addresses the semantic

cohesion of inheritance hierarchies

Page 18: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 18

Improved StructureImproved Structure

Address

number street town county country postCode

Person

personName age gender

Company

companyName annualIncome annualProfit

lives at is based at

Improved structure using Address class

Page 19: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 19

Liskov Substitution PrincipleLiskov Substitution Principle

Essentially the principle states that, in object interactions, it should be possible to treat a derived object as if it were a base object without integrity problems

If the principle is not applied then it may be possible to violate the integrity of the derived object

Page 20: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 20

Liskov Substitution PrincipleLiskov Substitution PrincipleChequeAccount

accountName balance

credit() debit()

MortgageAccount

interestRate

calculateInterest() - debit()

Account

accountName balance

credit()

ChequeAccount

debit()

MortgageAccount

interestRate

calculateInterest()

Restructuring to

satisfy LSP

Disinheritance of debit() means that the left-hand hierarchy is not Liskov compliant

Page 21: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 21

Further Design GuidelinesFurther Design Guidelines

Design Clarity Don’t Over-Design Control Inheritance Hierarchies Keep Messages and Operations Simple Design Volatility Evaluate by Scenario Design by Delegation Keep Classes Separate

Page 22: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 22

Designing AssociationsDesigning Associations

Determine direction of message passing—i.e. the navigability of the association

In general an association between two classes A and B should be considered with the questions– Do objects of class A have to send

messages to objects of class B?– Does an A object have to provide some

other object with B object identifiers? If yes then A needs Bs object identifier

Page 23: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 23

Designing AssociationsDesigning Associations

An association that has to support message passing in both directions is a two-way association

A two-way association is indicated with arrowheads at both ends

Minimizing the number of two-way associations keeps the coupling between objects as low as possible

Page 24: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 24

Designing AssociationsDesigning Associations

Owner

- name : String- address : Address- dateOfLicence : Date-numberOfConviction : Integer- ownedCar : Car

owns

1

Car

-registrationNumber : Registration- make : String- model : String- colour : String

1

carObjectId is placed in the Owner class

Arrowhead shows the direction in

which messages can be sent.

One-way one-to-one association

Page 25: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 25

Fragment of Fragment of class class

diagram for diagram for the Agate the Agate case studycase study

- staffNo - staffName - staffStartDate - qualification

CreativeStaff

+ calculateBonus() + linkToNote()

*

1

1..*

manageCampaign

workOnCampaign

owns *

1

- title - campaignStartDate - campaignFinishDate - estimatedCost - completionDate - datePaid - actualCost

Campaign

+ assignManager() + assignStaff() + checkBudget() + checkStaff() + completed() + getDuration() + getTeamMembers() + linkToNote() + listAdverts() + recordPayment()

- title - type - targetDate - estimatedCost - completionDate

Advert

+ getCost() + setCompleted() + view()

*

One-way association

Two-way association

Page 26: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 26

One-to-many association One-to-many association using a collection class.using a collection class.

has

1

*

1

- title: String - campaignStartDate: Date - campaignFinishDate: Date - estimatedCost: Money - completionDate: Date - datePaid: Date - actualCost: Money - ownedAdvertCollection: AdvertCollection

Campaign

+ assignManager() + assignStaff() + checkBudget() + checkStaff() + completed() + getDuration() + getTeamMembers() + linkToNote() + listAdverts() + recordPayment() - title: String

- type: String - targetDate: Date - estimatedCost: Money - completionDate: Date

Advert

+ getCost() + setCompleted() + view()

owns

- ownedAdvert: Advert [*]

AdvertCollection

+ findFirst() + getNext() + addAdvert + removeAdvert()

1

Page 27: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 27

Collection ClassesCollection Classes

Collection classes are used to hold the object identifiers when message passing is required from one to many along an association

OO languages provide support for these requirements. Frequently the collection class may be implemented as part of the sending class (e.g. Campaign) as some form of list

Page 28: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 28

Sequence diagram for Sequence diagram for listAdverts()listAdverts()

:Campaign :AdvertCollection :Advert

listAdverts()

advert = *getNext()

advertTitle = getTitle()

advert = f indFirst()

[until no more adverts] loop

end loop

advertTitle = getTitle()

This sequence diagram shows the interaction when using a collection class

Page 29: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 29

Two-way Many-to-many Two-way Many-to-many AssociationsAssociations

CreativeStaff

- staffCampaigns: CampaignCollection

+ listCampaigns()

workOn

*1

CampaignCollection

- staffCampaign: Campaign [*]+ findFirst()

+ getNext()

+ addCampaign()

+ removeCampaign()

+ findCampaign()

StaffCollection

- campaignStaff: Staff [*]+ findFirst()+ getNext()+ addStaff()+ removeStaff()+ findStaff()

Campaign

- staffCollection: StaffCollection

+ listStaff()

workOn

has

has

1

1

1

1

1

*

This is the design for the works On Campaign association

Page 30: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 30

Integrity ConstraintsIntegrity Constraints

Referential Integrity that ensures that an object identifier in an object is actually referring to an object that exists

Dependency Constraints that ensures that attribute dependencies, where one attribute may be calculated from other attributes, are maintained consistently

Domain Integrity that ensures that attributes only hold permissible values

Page 31: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 31

Constraints Between Constraints Between AssociationsAssociations

*

isAMemberOf

Employee

isChairOf

{subset}

0..1

*

*

*

Committee

memberCollection[*] committeeChair

assignChair()

Page 32: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 32

Designing OperationsDesigning Operations

Various factors constrain algorithm design:– the cost of implementation– performance constraints– requirements for accuracy– the capabilities of the implementation

platform

Page 33: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 33

Designing OperationsDesigning Operations

Factors that should be considered when choosing among alternative algorithm designs– Computational complexity– Ease of implementation and

understandability– Flexibility– Fine-tuning the object model

Page 34: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 34

NormalisationNormalisation

Normalization may be useful in OO approaches– when using a relational database

management – as a guide to decomposing a large,

complex (and probably not very cohesive) objects

Objects need not be normalised but it is important to remove redundancy

Page 35: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 35

SummarySummary

In this lecture you have learned about: how to apply criteria for good design how to design associations the impact of integrity constraints on

design how to design operations the role of normalization in object

design

Page 36: 03/12/2001 © Bennett, McRobb and Farmer 2002 1 Class Design Based on Chapter 14 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design

© Bennett, McRobb and Farmer 2002 36

ReferencesReferences

Rumbaugh et al (1991) Coad & Yourdon (1991) Yourdon (1994). Howe (2001) (For full bibliographic details, see

Bennett, McRobb and Farmer)