Principles of Software Construction: Objects, Design, and...
Transcript of Principles of Software Construction: Objects, Design, and...
1 17-214
PrinciplesofSoftwareConstruction: Objects,Design,andConcurrencyPart2:Designing(sub-)systemsAformaldesignprocess:ResponsibilityassignmentCharlieGarrodChrisTimperley
2 17-214
Administrivia
• Requiredreadingduetoday– UMLandPatternsChapters14,15,and16
• MidtermexamThursday– Examreviewsession:Wednesday7-9pm,MMA14
• Homework4– Threeparts,partAduenextThursday,October3rd– Designreviewmeetingsnextweek
https://commons.wikimedia.org/wiki/File:1_carcassonne_aerial_2016.jpg
5 17-214
Anobject-orienteddesignprocess
• Model/diagramtheproblem,defineobjects– Domainmodel(a.k.a.conceptualmodel)
• Definesystembehaviors– Systemsequencediagram– Systembehavioralcontracts
• Assignobjectresponsibilities,defineinteractions– Objectinteractiondiagrams
• Model/diagramapotentialsolution– Objectmodel
LastThursday:Understandingtheproblem
Today:Definingasolution
6 17-214
Object-orientedprogramming
• Programmingbasedonstructuresthatcontainbothdataandmethods
publicclassBicycle{privateintspeed;privatefinalWheelfrontWheel,rearWheel;privatefinalSeatseat;…publicBicycle(…){…}publicvoidaccelerate(){speed++;}publicintspeed(){returnspeed;}}
7 17-214
Responsibilityinobject-orientedprogramming
• Data:– Privateorotherwiseencapsulateddata– Dataincloselyrelatedobjects
• Methods:– Privateorotherwiseencapsulatedoperations– Objectcreation,ofitselforotherobjects– Initiatingactionsinotherobjects– Coordinatingactivitiesamongobjects
8 17-214
Usinginteractiondiagramstoassignobjectresponsibility
• Foragivensystem-leveloperation,createanobjectinteractiondiagramattheimplementation-levelofabstraction– Implementation-levelconcepts:
• Implementation-likemethodnames• Programmingtypes• Helpermethodsorclasses• Artifactsofdesignpatterns
9 17-214
Exampleinteractiondiagram#1
Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskand…
10 17-214
Exampleinteractiondiagram#2
Usecasescenario:…andborrowabook.Afterconfirmingthatthememberhasnounpaidlatefees,thelibrarysystemshoulddeterminethebook’sduedatebyaddingitsloanperiodtothecurrentday,andrecordthebookanditsduedateasaborrowediteminthemember’slibraryaccount.
11 17-214
Interactiondiagramshelpevaluatedesignalternatives
• Explicitlyconsiderdesignalternatives• Foreach,sketchtheinteractionsimpliedbythedesignchoice
– Interactionscorrespondtothecomponents'APIs
12 17-214
Interactiondiagramshelpevaluatedesignalternatives
• Explicitlyconsiderdesignalternatives• Foreach,sketchtheinteractionsimpliedbythedesignchoice
– Interactionscorrespondtothecomponents'APIs
• Supposewerequirepuzzlesolvers(notjustsolutionverifiers)inHomework3.Whichobjectshouldhavetheresponsibilitytosolveasudokupuzzle?– Theclassrepresentingthesudokupuzzle?– Anotherclass?
Sketchaninteractiondiagramforeachalternative,forsolvingasudokupuzzleinstance.
13 17-214
Heuristicsforresponsibilityassignment
• Controllerheuristic• Informationexpertheuristic• Creatorheuristic
Goals
Heuristics Patterns
Principles
14 17-214
Thecontrollerheuristic
• Assignresponsibilityforallsystem-levelbehaviorstoasinglesystem-levelobjectthatcoordinatesanddelegatesworktootherobjects– Alsoconsiderspecificsub-controllersforcomplexuse-casescenarios
• Designprocess:Extractinterfacefromsystemsequencediagrams– Keyprinciples:Lowrepresentationalgapandhighcohesion
15 17-214
Informationexpertheuristic
• Assignresponsibilitytotheclassthathastheinformationneededtofulfilltheresponsibility– Initialization,transformation,andviewsofprivatedata– Creationofcloselyrelatedorderivedobjects
16 17-214
Responsibilityinobject-orientedprogramming
• Data:– Privateorotherwiseencapsulateddata– Dataincloselyrelatedobjects
• Methods:– Privateorotherwiseencapsulatedoperations– Objectcreation,ofitselforotherobjects– Initiatingactionsinotherobjects– Coordinatingactivitiesamongobjects
17 17-214
Informationexpertheuristic
• Assignresponsibilitytotheclassthathastheinformationneededtofulfilltheresponsibility– Initialization,transformation,andviewsofprivatedata– Creationofcloselyrelatedorderivedobjects
• Designprocess:Assignmentfromdomainmodel– Keyprinciples:Lowrepresentationalgapandlowcoupling
18 17-214
Creatorheuristic:WhocreatesanobjectFoo?
• AssignresponsibilityofcreatinganobjectFootoaclassthat:– HasthedatanecessaryforinitializinginstancesofFoo– Contains,aggregates,orrecordsinstancesofFoo– CloselyusesormanipulatesinstancesofFoo
• Designprocess:Extractfromdomainmodel,interactiondiagrams– Keyprinciples:Lowcouplingandlowrepresentationalgap
19 17-214
Usethecreatorheuristic
• InHomework3,whatobjectshouldhavetheresponsibilityforcreatingasudokuboard,parsingfromafile?
20 17-214
Thereexistmanyheuristics
• Minimizemutability• Minimizeconceptualweight• Favorcomposition/delegationoverinheritance• Useindirectiontoreducecoupling• …
21 17-214
Object-levelartifactsofthisdesignprocess
• Objectinteractiondiagramsaddmethodstoobjects– Caninferadditionaldataresponsibilities– Caninferadditionaldatatypesandarchitecturalpatterns
• Objectmodelaggregatesimportantdesigndecisions– Isanimplementationguide
22 17-214
Creatinganobjectmodel
• Extractdata,methodnames,andtypesfrominteractiondiagrams– Includeimplementationdetailssuchasvisibilities