...
PlantUML Macro |
---|
object MemoryProgram { Kommuniserer med brukeren } note top: Hovedprogram-objekt object Memory { Håndterer tilstanden underveis i spillet } note bottomtop: Logikk-objekt MemoryProgram -right-> Memory: memory |
...
Det som ikke kommer frem av dialogen er hvordan hovedprogram MemoryProgram-objektet samspiller med logikk Memory-objektet, dvs. hvilke kall hovedprogram-objektet utfører på logikk-objektet kall MemoryProgram utfører på Memory og hvilke verdier som flyter frem (argumentverdier) og tilbake (returverdier). Dette er den vanskeligste delen av programmering: å bestemme når og hvordan objektene samhandler, altså å fordele oppgaver mellom objektene og konkretisere oppgavene som metoder med argumenter og returverdier. En måte å komme litt videre på er å legge inn kommentarer i dialogen over, som illustrerer hvordan hovedprogram-objektet bruker logikk-objektet underveis.hvordan MemoryProgram bruker Memory underveis. (Dette kunne vært tegnet som et sekvensdiagram, men det er litt tidlig å bruke en så formell notasjon, siden vi ennå ikke har satt navn på metoder og gitt dem argument- og returtyper.)
// Memory genererer nytt tall i sekvensen => 3 |
Vi ser at Memory hovedsaklig tilbyr to tjenester: å generere nye tall i sekvensen og å ta imot et nytt tall (fra brukeren) og sjekke det mot fasiten. Det er dessuten underforstått at Memory må huske både tall-sekvensen og hvor langt brukeren har kommet i å gjenta den. Vi kan nå oppdatere diagrammet vårt med denne innsikten:
PlantUML Macro |
---|
object MemoryProgram {
Kommuniserer med brukeren
}
object Memory {
tall-sekvens
posisjon-i-sekvens
generer-neste-tall()
sjekk-neste-tall-fra-bruker()
}
MemoryProgram -right-> Memory: memory |