...
Selv om et slikt enkelt spill kan implementeres med én klasse, så legger vi opp til en klassisk todeling i én hovedprogram-klasse, som håndterer kommunikasjone med brukeren, og én logikk-klasse, som håndterer spill-logikken. Dersom logikk-klassen gjøres anvendelig og generell nok, vil en senere kunne gjenbruke den i en grafisk versjon. Todelingen illustreres under med et objektdiagram:
PlantUML Macro |
---|
objectclass MemoryProgram { Kommuniserer med brukeren } note top: Hovedprogram-objektklasse objectclass Memory { Håndterer tilstanden underveis i spillet } note top: Logikk-objektklasse MemoryProgram -right-> Memory: memory |
...
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 |
---|
objectclass MemoryProgram { Kommuniserer med brukeren } objectclass Memory { tallsekvens sekvensPosisjon genererNesteTall() sjekkNesteTallFraBruker() } MemoryProgram -right-> Memory: memory |