Versions Compared

Key

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

...

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
Element nr. 1 er 3
Gjenta element nr. 1 av 1
3
// Memory sjekker om 3 er riktig neste tall => ok og ferdig
// Memory genererer nytt tall i sekvensen => 4
Element nr. 2 er 4
Gjenta element nr. 1 av 2
3
// Memory sjekker om 3 er riktig neste tall => ok, men ikke ferdig
Gjenta element nr. 2 av 2
4
// Memory sjekker om 4 er riktig neste tall => ok og ferdig
// Memory genererer nytt tall i sekvensen => 7
...

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