Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

...