...
Vi har valget mellom tre strategier: 1) skrive MemoryProgram og dermed avdekke mer presist hvilke metoder Memory må tilby, 2) skrive Memory først og tilpasse MemoryProgram deretter, eller 3) en hybrid strategi hvor vi jobber parallelt med begge to. Dette er ofte en smaksak, men jeg foretrekker ofte å jobbe topp-ned på skissestadiet, som vi er på nå, og bunn-opp med selve kodingen. Imidlertid kan en godt jobbe litt mer på papir, for å klargjøre i litt mer detalj hva hver metode er ment å gjøre, og da kan et objekttilstandsdiagram være nyttige, siden det illustrerer effekten av metodekall på den interne tilstanden, ikke bare sekvensen av kall. Her er et slikt diagram basert på eksemplet over:
PlantUML Macro |
---|
stateobject Memory1 { expectedItems = acceptedCount = 0 } stateobject Memory2 { expectedItems = [3] acceptedCount = 0 } Memory1 -> Memory2: nextItem() => 3 stateobject Memory3 { expectedItems = 3 acceptedCount = 1 } Memory2 -> Memory3: acceptItem() => ok og ferdig stateobject Memory4 { expectedItems = 3, 4 acceptedCount = 0 } Memory3 -> Memory4: nextItem() => 4 stateobject Memory5 { expectedItems = 3, 4 acceptedCount = 1 } Memory4 -> Memory5: acceptItem() => ok, men ikke ferdig stateobject Memory6 { expectedItems = 3, 4 acceptedCount = 2 } Memory5 -> Memory6: acceptItem() => ok og ferdig stateobject Memory7 { expectedItems = 3, 4, 7 acceptedCount = 0 } Memory6 -> Memory7: nextItem() => 7 |
...