josh bloch charlie garrod - carnegie mellon school of...
TRANSCRIPT
![Page 1: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/1.jpg)
1 15-214
SchoolofComputerScience
PrinciplesofSo3wareConstruc9on: Objects,Design,andConcurrencyDesigning(sub-)systemsAformaldesignprocess,part2JoshBloch CharlieGarrod
![Page 2: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/2.jpg)
2 15-214
Administrivia
• MidtermexamThursday– ReviewsessionWednesday,September28th,7-9pm,HHB103
• Homework4– Threeparts,partAdueOct6th– Designreviewmee9ngsnextweek
• Collabora9onpolicy…
![Page 3: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/3.jpg)
3 15-214
KeyconceptsfromlastThursday…
![Page 4: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/4.jpg)
4 15-214
Sequenceandcommunica9ondiagrams
![Page 5: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/5.jpg)
5 15-214
Designprinciples
• Lowcoupling• Lowrepresenta9onalgap• Highcohesion
![Page 6: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/6.jpg)
6 15-214
Buildingadomainmodelforalibrarysystem
Apubliclibrarytypicallystoresacollec9onofbooks,movies,orotherlibraryitemsavailabletobeborrowedbypeoplelivinginacommunity.Eachlibrarymembertypicallyhasalibraryaccountandalibrarycardwiththeaccount’sIDnumber,whichshecanusetoiden9fyherselftothelibrary.Amember’slibraryaccountrecordswhichitemsthememberhasborrowedandtheduedateforeachborroweditem.Eachtypeofitemhasadefaultrentalperiod,whichdeterminestheitem’sduedatewhentheitemisborrowed.Ifamemberreturnsanitema3ertheitem’sduedate,thememberowesalatefeespecificforthatitem,anamountofmoneyrecordedinthemember’slibraryaccount.
![Page 7: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/7.jpg)
7 15-214
Onedomainmodelforthelibrarysystem
![Page 8: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/8.jpg)
8 15-214
Notesonthelibrarydomainmodel
• Allconceptsareaccessibletoanon-programmer• TheUMLissomewhatinformal
– Rela9onshipsareo3endescribedwithwords• Real-world"is-a"rela9onshipsareappropriateforadomainmodel• Real-wordabstrac9onsareappropriateforadomainmodel• Itera9onisimportant
– Thisexampleisafirstdra3.Someterms(e.g.Itemvs.LibraryItem,Accountvs.LibraryAccount)wouldlikelyberevisedinarealdesign.
• Aggregatetypesareusuallymodeledasclasses• Primi9vetypes(numbers,strings)areusuallymodeledasadributes
![Page 9: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/9.jpg)
9 15-214
BuildadomainmodelforMonopoly
![Page 10: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/10.jpg)
10 15-214
BuildadomainmodelforMonopoly
Monopolyisagameinwhicheachplayerhasapiecethatmovesaroundagameboard,withthepiece’schangeinloca9ondeterminedbyrollingapairofdice.Thegameboardconsistsofasetofproper9es(ini9allyownedbyabank)thatmaybepurchasedbytheplayers.Whenapiecelandsonapropertythatisnotowned,theplayermayusemoneytobuythepropertyfromthebankforthatproperty’sprice.Ifaplayerlandsonapropertyshealreadyowns,shemaybuildhousesandhotelsontheproperty;eachhouseandhotelcostssomepricespecificfortheproperty.Whenaplayer’spiecelandsonapropertyownedbyanotherplayer,theownercollectsmoney(rent)fromtheplayerwhosepiecelandedontheproperty;therentdependsonthenumberofhousesandhotelsbuiltontheproperty.Thegameisplayedun9lonlyoneremainingplayerhasmoneyandproperty,withalltheotherplayersbeingbankrupt.
![Page 11: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/11.jpg)
11 15-214
Ar9factsofthisdesignprocess
• Model/diagramtheproblem,defineobjects– Domainmodel(a.k.a.conceptualmodel)
• Definesystembehaviors– Systemsequencediagram– Systembehavioralcontracts
• Assignobjectresponsibili9es,defineinterac9ons– Objectinterac9ondiagrams
• Model/diagramapoten9alsolu9on– Objectmodel
Understandingtheproblem
Definingasolu9on
![Page 12: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/12.jpg)
12 15-214
Ar9factsofthisdesignprocess
• Model/diagramtheproblem,defineobjects– Domainmodel(a.k.a.conceptualmodel)
• Definesystembehaviors– Systemsequencediagram– Systembehavioralcontracts
• Assignobjectresponsibili9es,defineinterac9ons– Objectinterac9ondiagrams
• Model/diagramapoten9alsolu9on– Objectmodel
Today
![Page 13: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/13.jpg)
13 15-214
Understandingsystembehaviorwithsequencediagrams
• Asystemsequencediagramisamodelthatshows,foronescenarioofuse,thesequenceofeventsthatoccuronthesystem’sboundary
• Designgoal:Iden9fyanddefinetheinterfaceofthesystem– Twocomponents:Auserandtheoverallsystem
![Page 14: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/14.jpg)
14 15-214
Understandingsystembehaviorwithsequencediagrams
• Asystemsequencediagramisamodelthatshows,foronescenarioofuse,thesequenceofeventsthatoccuronthesystem’sboundary
• Designgoal:Iden9fyanddefinetheinterfaceofthesystem– Twocomponents:Auserandtheoverallsystem
• Input:Domaindescrip9onandoneusecase• Output:Asequencediagramofsystem-levelopera9ons
– Includeonlydomain-levelconceptsandopera9ons
![Page 15: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/15.jpg)
15 15-214
Onesequencediagramforthelibrarysystem
Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskandborrowabook.A3erconfirmingthatthememberhasnounpaidlatefees,thelibrarysystemshoulddeterminethebook’sduedatebyaddingitsloanperiodtothecurrentday,andrecordthebookanditsduedateasaborrowediteminthemember’slibraryaccount.
![Page 16: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/16.jpg)
16 15-214
Onesequencediagramforthelibrarysystem
Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskandborrowabook.A3erconfirmingthatthememberhasnounpaidlatefees,thelibrarysystemshoulddeterminethebook’sduedatebyaddingitsloanperiodtothecurrentday,andrecordthebookanditsduedateasaborrowediteminthemember’slibraryaccount.
![Page 17: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/17.jpg)
17 15-214
BuildonesystemsequencediagramforMonopoly
Usecasescenario:Whenaplayerlandsonanunownedpropertyandhasenoughmoneytobuytheproperty,sheshouldbeabletobuythepropertyfortheproperty’sprice.Thepropertyshouldnolongerbepurchasablefromthebankbyotherplayers,andmoneyshouldbemovedfromtheplayertothebank.
![Page 18: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/18.jpg)
18 15-214
Formalizesystembehaviorwithbehavioralcontracts
• Asystembehavioralcontractdescribesthepre-condi9onsandpost-condi9onsforsomeopera9oniden9fiedinthesystemsequencediagrams– System-leveltextualspecifica9ons,likeso3warespecifica9ons
![Page 19: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/19.jpg)
19 15-214
Asystembehavioralcontractforthelibrarysystem
Opera9on: borrow(item)Pre-condi9ons: Librarymemberhasalreadyloggedintothesystem.
Itemisnotcurrentlyborrowedbyanothermember.Post-condi9ons: Logged-inmember'saccountrecordsthenewly-borrowed
item,orthememberiswarnedshehasanoutstandinglatefee. Thenewly-borroweditemcontainsafutureduedate, computedastheitem'srentalperiodplusthecurrentdate.
![Page 20: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/20.jpg)
20 15-214
Dis9nguishingdomainvs.implementa9onconcepts
![Page 21: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/21.jpg)
21 15-214
Dis9nguishingdomainvs.implementa9onconcepts
• Domain-levelconcepts:– Almostanythingwithareal-worldanalogue
• Implementa9on-levelconcepts:– Implementa9on-likemethodnames– Programmingtypes– Visibilitymodifiers– Helpermethodsorclasses– Ar9factsofdesignpaderns
![Page 22: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/22.jpg)
22 15-214
Summary:Understandingtheproblemdomain
• Knowyourtoolstobuilddomain-levelrepresenta9ons– Domainmodels– Systemsequencediagrams– Systembehavioralcontracts
• Befastand(some9mes)loose– Elideobvious(?)details– Iterate,iterate,iterate,…
• Getfeedbackfromdomainexperts– Useonlydomain-levelconcepts
![Page 23: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/23.jpg)
23 15-214
Drawadomainmodelforcryptarithmsolving
![Page 24: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/24.jpg)
24 15-214
Ar9factsofourdesignprocess
• Model/diagramtheproblem,defineobjects– Domainmodel(a.k.a.conceptualmodel)
• Definesystembehaviors– Systemsequencediagram– Systembehavioralcontracts
• Assignobjectresponsibili9es,defineinterac9ons– Objectinterac9ondiagrams
• Model/diagramapoten9alsolu9on– Objectmodel
Understandingtheproblem
Definingasolu9on
![Page 25: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/25.jpg)
25 15-214
Object-orientedprogramming
• Programmingbasedonstructuresthatcontainbothdataandmethods
publicclassBicycle{privateintspeed;privatefinalWheelfrontWheel,rearWheel;privatefinalSeatseat;…publicBicycle(…){…}publicvoidaccelerate(){speed++;}publicintspeed(){returnspeed;}}
![Page 26: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/26.jpg)
26 15-214
Responsibilityinobject-orientedprogramming
• Data:– Privateorotherwiseencapsulateddata– Dataincloselyrelatedobjects
• Methods:– Privateorotherwiseencapsulatedopera9ons– Objectcrea9on,ofitselforotherobjects– Ini9a9ngac9onsinotherobjects– Coordina9ngac9vi9esamongobjects
![Page 27: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/27.jpg)
27 15-214
Usinginterac9ondiagramstoassignobjectresponsibility
• Foragivensystem-levelopera9on,createanobjectinterac9ondiagramattheimplementa6on-levelofabstrac9on– Implementa9on-levelconcepts:
• Implementa9on-likemethodnames• Programmingtypes• Helpermethodsorclasses• Ar9factsofdesignpaderns
![Page 28: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/28.jpg)
28 15-214
Exampleinterac9ondiagram#1
Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskand…
![Page 29: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/29.jpg)
29 15-214
Exampleinterac9ondiagram#2
Usecasescenario:…andborrowabook.A3erconfirmingthatthememberhasnounpaidlatefees,thelibrarysystemshoulddeterminethebook’sduedatebyaddingitsloanperiodtothecurrentday,andrecordthebookanditsduedateasaborrowediteminthemember’slibraryaccount.
![Page 30: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/30.jpg)
30 15-214
Interac9ondiagramshelpevaluatedesignalterna9ves
Createtwopossibleinterac9ondiagrams:1. Solvingacryptarithm,assumingthatthecryptarithmclasshas
responsibilityforsolvingitself2. Solvingacryptarithm,assumingthatthemainmethod(oradelegated
methodorclass)hasresponsibilityforsolvingthecryptarithm
![Page 31: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/31.jpg)
31 15-214
Heuris9csforresponsibilityassignment
• Controllerheuris9c• Informa9onexpertheuris9c• Creatorheuris9c
Goals
Heuristics Patterns
Principles
![Page 32: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/32.jpg)
32 15-214
Thecontrollerheuris9c
• Assignresponsibilityforallsystem-levelbehaviorstoasinglesystem-levelobjectthatcoordinatesanddelegatesworktootherobjects– Alsoconsiderspecificsub-controllersforcomplexuse-casescenarios
• Designprocess:Extractinterfacefromsystemsequencediagrams– Keyprinciples:Lowrepresenta9onalgapandhighcohesion
![Page 33: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/33.jpg)
33 15-214
Informa9onexpertheuris9c
• Assignresponsibilitytotheclassthathastheinforma9onneededtofulfilltheresponsibility– Ini9aliza9on,transforma9on,andviewsofprivatedata– Crea9onofcloselyrelatedorderivedobjects
![Page 34: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/34.jpg)
34 15-214
Responsibilityinobject-orientedprogramming
• Data:– Privateorotherwiseencapsulateddata– Dataincloselyrelatedobjects
• Methods:– Privateorotherwiseencapsulatedopera9ons– Objectcrea9on,ofitselforotherobjects– Ini9a9ngac9onsinotherobjects– Coordina9ngac9vi9esamongobjects
![Page 35: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/35.jpg)
35 15-214
Informa9onexpertheuris9c
• Assignresponsibilitytotheclassthathastheinforma9onneededtofulfilltheresponsibility– Ini9aliza9on,transforma9on,andviewsofprivatedata– Crea9onofcloselyrelatedorderivedobjects
• Designprocess:Assignmentfromdomainmodel– Keyprinciples:Lowrepresenta9onalgapandlowcoupling
![Page 36: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/36.jpg)
36 15-214
Usetheinforma9onexpertheuris9c
• InHomework3,whatobjectshouldhavetheresponsibilitytosolveacryptarithm?
• Whatistherelevantinforma9on?
![Page 37: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/37.jpg)
37 15-214
Usetheinforma9onexpertheuris9c
• InHomework3,whatobjectshouldhavetheresponsibilitytosolveacryptarithm?
• Whatistherelevantinforma9on?– Whoknowsthe#ofdigits(e.g.base10)inthecryptarithm?– Whoknowstheledersofthecryptarithm?– Whocanevaluatethecryptarithmexpressionstocheckforequality?
![Page 38: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/38.jpg)
38 15-214
Anotherdesignprinciple:Minimizeconceptualweight
• Labeltheconceptsforaproposedobject– Relatedtorepresenta9onalgapandcohesion
![Page 39: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/39.jpg)
39 15-214
Creatorheuris9c:WhocreatesanobjectFoo?
• Assignresponsibilityofcrea9nganobjectFootoaclassthat:– Hasthedatanecessaryforini9alizinginstancesofFoo– Contains,aggregates,orrecordsinstancesofFoo– CloselyusesormanipulatesinstancesofFoo
• Designprocess:Extractfromdomainmodel,interac9ondiagrams– Keyprinciples:Lowcouplingandlowrepresenta9onalgap
![Page 40: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/40.jpg)
40 15-214
Usethecreatorheuris9c
• InHomework3,whatobjectshouldhavetheresponsibilityforcrea9ngthepermuta9ongenerator?
![Page 41: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/41.jpg)
41 15-214
Object-levelar9factsofthisdesignprocess
• Objectinterac9ondiagramsaddmethodstoobjects– Caninferaddi9onaldataresponsibili9es– Caninferaddi9onaldatatypesandarchitecturalpaderns
• Objectmodelaggregatesimportantdesigndecisions– Isanimplementa9onguide
![Page 42: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/42.jpg)
42 15-214
Crea9nganobjectmodel
• Extractdata,methodnames,andtypesfrominterac9ondiagrams– Includeimplementa9ondetailssuchasvisibili9es
![Page 43: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/43.jpg)
43 15-214
![Page 44: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/44.jpg)
44 15-214
Createanobjectmodelforyourcryptarithmsolver
![Page 45: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday](https://reader035.vdocuments.us/reader035/viewer/2022070803/5f03244c7e708231d407bead/html5/thumbnails/45.jpg)
45 15-214
Summary:
• Object-levelinterac9ondiagramsandobjectmodelsystema9callyguidethedesignprocess– Convertdomainmodel,systemsequencediagram,andcontractsto
object-levelresponsibili9es
• Useheuris9cstoguide,butnotdefine,designdecisions• Iterate,iterate,iterate…