oo analysis and design
DESCRIPTION
OO Analysis and Design. CMPS 2143. 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 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/1.jpg)
OO Analysis and Design
CMPS 2143
![Page 2: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/2.jpg)
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
![Page 3: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/3.jpg)
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”
![Page 4: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/4.jpg)
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
![Page 5: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/5.jpg)
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
![Page 6: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/6.jpg)
6
Characteristics of a Component
•Must have a small, well-defined set of responsibilities
• Interacts with other components to the minimal extent possible
![Page 7: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/7.jpg)
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.
![Page 8: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/8.jpg)
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
![Page 9: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/9.jpg)
9
CRC Modeling - Use index cardsClass:Description:
Responsibility: Collaborator:
Class:Description:
Responsibility: Collaborator:
Class:Description:
Responsibility: Collaborator:
Class: FloorPlanDescription:
Responsibility: Collaborator:
incorporates walls, doors and windowsshows position of video cameras
defines floor plan name/typemanages floor plan positioningscales floor plan for displayscales floor plan for display
WallCamera
![Page 10: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/10.jpg)
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
![Page 11: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/11.jpg)
11
Example-Vending MachineLet us take an example application and examine the
process of identifying the objects/classes and describe their responsibilities using CRC cards.
The example application is a Vending Machine that allows users to buy snack items. In addition, a user can find out the caloric content of her choice.
![Page 12: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/12.jpg)
12
Example-Vending MachineSpecification :A Vending machine holds a number of snack items and
displays the list of snack items and their prices through an user interface with a display screen and buttons for making selections. In addition, the vending machine has a receptacle for money and an item dispenser.
A user can make a selection and query for the number of calories of a snack item. The calories are displayed on pressing a button. A user can place the money in the receptacle and select an item.
![Page 13: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/13.jpg)
13
Example-Vending MachineStep 1: Let us seelct the nouns and the verbs in the
specification.Nouns are in blue and the verbs are in green.A Vending machine holds a number of snack items
and displays the list of snack items and their prices through an user interface with a display screen and buttons for making selections. In addition, the vending machine has a receptacle for money and an item dispenser.
A user can make a selection and query for the number of calories of a snack item. The calories are displayed on pressing a button. A user can place the money in the receptacle and select an item.
![Page 14: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/14.jpg)
14
Example-Vending MachineMost of the nouns are objects/classes.Some nouns are attributes of these classes.The verbs are actions that can be attached to these
objects.In order to focus on the problem-domain objects, let
us separate the object/classes into presentation-specific (user-interface related) and problem-specific classes.
We will then select two problem specific classes and write the CRC cards for them.
![Page 15: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/15.jpg)
15
Example-Vending MachineProblem-specific classes:•Vending Machine•Snack item•Price•Calories•Selection•User
Presentation-specific classes:•Display screen•Selection Buttons• Item Dispenser•Money receptacle
![Page 16: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/16.jpg)
16
A CRC card for class SnackItem
Class name: SnackItem
Responsibility CollaboratorKnows its priceKnow its calories
![Page 17: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/17.jpg)
17
A CRC card for the Vending Machine
Class name: VendingMachine
Responsibility Collaborator
Maintains a collection of SnackItems.Allows addition of SnackItemAllows removal of SnackItem
SnackItem
![Page 18: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/18.jpg)
18
Showing the Collaboration of a VendingMachine and SnackItem
![Page 19: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/19.jpg)
19
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 next as a problem narrative and do the necessary "underlining/circling". 2. Propose a class to be used in this problem. 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. I recommend using the “back” of the CRC card to list the properties (and indicate the type for each property).
![Page 20: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/20.jpg)
20
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.
![Page 21: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/21.jpg)
21
Class: ________________
Responsibilities Collaborators
![Page 22: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/22.jpg)
22
Knowledgedata type
![Page 23: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/23.jpg)
Chapter 10: 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…
![Page 24: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/24.jpg)
24
Object Model: Class Diagram
System
program() display() reset() query() modify() call()
systemID verificationPhoneNumber systemStatus delayTime telephoneNumber masterPassword temporaryPassword numberTries
Class name
attributes
operations
![Page 25: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/25.jpg)
25
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
![Page 26: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/26.jpg)
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.
![Page 27: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/27.jpg)
LibraryItemClass HierarchyDiagram
Catalogue numberAcquisition dateCostTypeStatusNumber of copies
Library item
Acquire ()Catalogue ()Dispose ()Issue ()Return ()
AuthorEditionPublication dateISBN
Book
YearIssue
MagazineDirectorDate of releaseDistributor
Film
VersionPlatform
Computerprogram
TitlePublisher
Published itemTitleMedium
Recorded item
![Page 28: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/28.jpg)
LibraryUser Class HierarchyDiagram
NameAddressPhoneRegistration #
Library user
Register ()De-register ()
AffiliationReader
Items on loanMax. loans
Borrower
DepartmentDepartment phone
StaffMajor subjectHome address
Student
![Page 29: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/29.jpg)
Multiple inheritance
# Tapes
Talking book
AuthorEditionPublication dateISBN
Book
SpeakerDurationRecording date
Voice recording
![Page 30: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/30.jpg)
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.
![Page 31: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/31.jpg)
Object Aggregation UML Notation
Videotape
Tape ids.
Lecturenotes
Text
OHP slides
SlidesAssignment
Credits
SolutionsTextDiagrams
Exercises#ProblemsDescription
Course titleNumberYearInstructor
Study pack
![Page 32: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/32.jpg)
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
![Page 33: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/33.jpg)
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.
![Page 34: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/34.jpg)
Sequence Diagram of ATM Withdrawal
ATM Database
CardCard number
Card OKPIN request
PINOption menu
<<exception>>invalid card
Withdraw request
Amount request
Amount
Balance request
Balance
<<exception>>insufficient cash
Debit (amount)
Debit response
Card
Card removed
Cash
Cash removedReceipt
Validate card
Handle request
Completetransaction
TIM
E
Messages
![Page 35: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/35.jpg)
UML Modeling
![Page 36: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/36.jpg)
UML Modeling Serial View
![Page 37: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/37.jpg)
37
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
![Page 38: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/38.jpg)
38
Other concepts•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
![Page 39: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/39.jpg)
39
![Page 40: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/40.jpg)
40
Interface represented in UML• Interface ▫Discussed already
![Page 41: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/41.jpg)
41
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
![Page 42: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/42.jpg)
42
Testing
•Unit test individual components▫Need drivers (for example: MyQueueTest.java)
• Integration test▫Start combining components▫If a component isn’t finished – stub it out
![Page 43: OO Analysis and Design](https://reader036.vdocuments.mx/reader036/viewer/2022070420/56815e97550346895dcd26a2/html5/thumbnails/43.jpg)
43
References•References on CRC cards:• A Laboratory For Teaching Object-Oriented Thinking Kent Beck, Apple
Computer,Inc http://c2.com/doc/oopsla89/paper.html• Introduction to CRC cards by David Rubin
http://www.softstar-inc.com/Methodology/CRCIntro.htm• Designing Object-Oriented Software by Rebecca Wirfs-Brock, Brian
Wilkerson and Lauren Wiener
•References on UML• Basic UML Class Diagram Notation,
http://www.umich.edu/~eecs381/handouts/UMLNotationSummary.pdf• UML Class Diagrams Reference, Similar Web
http://www.uml-diagrams.org/class-reference.html