33
OO Analysis and Design CMPS 2143

OO Analysis and Design CMPS 2143. OOA/OOD Cursory explanation of OOP emphasizes ▫ Syntax classes, inheritance, message passing, virtual, static Most

Embed Size (px)

Citation preview

OO Analysis and Design

CMPS 2143

2

OOA/OOD

•Cursory explanation of OOP emphasizes▫Syntax

classes, inheritance, message passing, virtual, static

•Most important aspect:▫Design technique to create a universe of autonomous

interacting agents

▫We will focus on the OOD technique called responsibility-driven design

3

Responsibility

• Implies degree of independence and noninterference

•Client code doesn’t need to worry about representation/implementation

•Responsibility design elevates information hiding from a technique to an art.▫Vitally important for “programming in the large”

4

Begin with Behavior

•Why? ▫Usually it is understand long before any other aspect

•Do this before data structures / order of function calls•Structural elements usually only understood after

considerable amount of analysis

•Customers understand system behavior

5

OOA: Describing a system• Initial system specifications are sketchy, ambiguous•Often describe actions to be performed behavior▫Perfect for responsibility driven design

•How? With scenarios▫Act out the running of the application – example in book

•Use these to rewrite the specifications

•THEN identify components▫Component == abstract entity that can perform tasks to

fulfill responsibilities

6

Characteristics of a Component

•Must have a small, well-defined set of responsibilities

• Interacts with other components to the minimal extent possible

7

Component-Responsibility-Collaborator (CRC) Modeling•OOA classes have “responsibilities”▫Responsibilities are the attributes and operations

encapsulated by the component/class

•OOA classes collaborate with one another▫ Collaborators are other components/classes that are

required to provide a component/class with the information needed to complete a responsibility.

▫In general, a collaboration implies either a request for information or a request for some action.

8

Identifying Components•Analyze specifications (problem description) and

scenarios•Underline nouns/circle verbs (ignore system, data,

information….too vague)

•Nouns components or attributes of components classes and member data

•Verbs responsibilities of components methods

9

CRC Modeling - Use index cardsClass:

Description:

Responsibility: Collaborator:

Class:

Description:

Responsibility: Collaborator:

Class:

Description:

Responsibility: Collaborator:

Class: FloorPlan

Description:

Responsibility: Collaborator:

incorporates walls, doors and windows

shows position of video cameras

defines floor plan name/type

manages floor plan positioning

scales floor plan for display

scales floor plan for display

Wall

Camera

10

Why you should use index cards!!!

•Cheap, widely available, erasable•Encourages EXPERIMENTATION▫Try different designs, throw them away…

•Forces you to keep components PHYSICALLY separate

•Constrains complexity▫Divide components▫Move some responsibilities

•Start of documentation

11

Interactive Intelligent Kitchen Helper

•Read 3.4.1•Read Figure 3.2•Read 3.6

•Good example/walkthrough of thought process of designer

12

In class workWorking in teams of two, complete the steps below. Your team may be asked to display your work for the whole class to review. 1. Treat the problem description above as a problem narrative and do the necessary "underlining/circling". 2. Propose a class to be used in this problem. Propose a set of properties (member data) Propose a set of responsibilities (methods) for the class. Mention any collaborators. 3. Create a CRC card. Be sure to include both the behavioral and knowledge responsibilities. The “back” of the CRC card can be where you list the properties – indicate the type for each property.

13

Problem: SPU is a new over-night shipping company. They have asked you to write a program to keep track of their packages. Specifically, they want a program that will store data about individual packages including the sender’s name and address, the receiver’s name and address, the weight of the package (in pounds and ounces), the location of the package (represented with a special SPU code), the status of the package (delivered or not), and the type of shipping (1 day air, 2 day air, any-time-soon). The program should allow an operator to find out any of these pieces of information about a package and change the status and location. Operators should be able to ask for the weight in pounds/ounces or kilograms/grams.

14

Class: ???

Responsibilities Collaborators

15

Knowledgedata type

Object models

• Object models describe the system in terms of object classes and their associations.

• An object class is an abstraction over a set of objects with common attributes and the services (operations) provided by each object.

• Various object models may be produced▫ Simple object models▫ Inheritance models▫ Aggregation models▫ Interaction models

• UML notations exist for these…

17

Object Model: Class Diagram

System

program() display() reset() query() modify() call()

systemID verificationPhoneNumber systemStatus delayTime telephoneNumber masterPassword temporaryPassword numberTries

Class name

attributes

operations

18

Class (Relationship) Diagram

FloorPlan

determineType () positionFloorplan scale() change color()

type name outsideDimensions

Camera

determineType () translateLocation () displayID() displayView() displayZoom()

type ID location fieldView panAngle ZoomSetting

WallSegment

type startCoordinates stopCoordinates nextWallSement

determineType () draw()

Window

type startCoordinates stopCoordinates nextWindow

determineType () draw()

is placed within

Wall

type wallDimensions

determineType () computeDimensions ()

Door

type startCoordinates stopCoordinates nextDoor

determineType () draw()

is part of

is used to buildis used to build

is used to build

Inheritance models

•Organize the domain object classes into a hierarchy.

•Classes at the top of the hierarchy reflect the common features of all classes.

•Object classes inherit their attributes and services from one or more super-classes. These may then be specialised as necessary.

LibraryItemClass HierarchyDiagram

Catalogue numberAcquisition dateCostTypeStatusNumber of copies

Library item

Acquire ()Catalogue ()Dispose ()Issue ()Return ()

AuthorEditionPublication dateISBN

Book

YearIssue

Magazine

DirectorDate of releaseDistributor

Film

VersionPlatform

Computerprogram

TitlePublisher

Published item

TitleMedium

Recorded item

LibraryUser Class HierarchyDiagram

NameAddressPhoneRegistration #

Library user

Register ()De-register ()

Affiliation

Reader

Items on loanMax. loans

Borrower

DepartmentDepartment phone

Staff

Major subjectHome address

Student

Multiple inheritance

# Tapes

Talking book

AuthorEditionPublication dateISBN

Book

SpeakerDurationRecording date

Voice recording

Object Aggregation

•An aggregation model shows how classes that are collections are composed of other classes.

•Aggregation models are similar to the part-of relationship in semantic data models.

Object Aggregation UML Notation

Videotape

Tape ids.

Lecturenotes

Text

OHP slides

Slides

Assignment

Credits

Solutions

TextDiagrams

Exercises

#ProblemsDescription

Course titleNumberYearInstructor

Study pack

Object behaviour modelling

•Diagrams so far illustrate static relationships between components

•Dynamic interactions also need to be described

•A behavioural model ▫shows the interactions between objects ▫to produce a behaviour that was specified as a use-case

•Collaboration diagrams in UML are used to model interaction between objects ▫Example: Sequence diagrams

Interaction | Sequence diagrams

•These show the sequence of events that take place during some user interaction with a system.

•You read them from top to bottom to see the order of the actions that take place.

Sequence Diagram of ATM Withdrawal

ATM Database

CardCard number

Card OKPIN request

PIN

Option menu

<<exception>>invalid card

Withdraw request

Amount request

Amount

Balance request

Balance

<<exception>>insufficient cash

Debit (amount)

Debit response

Card

Card removed

Cash

Cash removed

Receipt

Validate card

Handle request

Completetransaction

TIM

E

Messages

28

State•Components are NOT just characterized by behavior, but

also by the information they contain

•State – all the information (data values) within a component at any given moment in time

•Class refers to a set of objects with similar behavior•Object/Instance refers to an individual representative of

a class

29

Other concepts in chapter 3

•Cohesion▫Degree to which the responsibilities of a single

component form a meaningful unit▫Aim for high cohesion / associate related tasks w/i same

component•Coupling▫Degree that software components are related▫Aim for low coupling / reduce the amount that one

component must access the data values – the state- of another component

30

Other concepts in chapter 3

• Interface ▫Discussed already▫Just goes into more detail

•Naming

31

Implementation•Choose your language• Implement the representation choose your data

structures▫Choose a classic data structure ▫Make up your own

• Implement components’ desired behavior▫Choose your algorithms

32

Test

•Unit test individual components▫Need drivers (for example: MyQueueTest.java)

• Integration test▫Start combining components▫If a component isn’t finished – stub it out

33

References