...
Det som ikke kommer frem av dialogen er hvordan MemoryProgram-objektet samspiller med Memory-objektet, dvs. hvilke 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 å tegne et sekvensdiagram, som illustrerer hvordan MemoryProgram bruker Memory underveis, trigget av interaksjon med brukeren.
PlantUML Macro |
---|
| class MemoryProgram {
}
class Memory {
expectedItems // list of numbers 1-9
acceptedCount // position in list
nextItem() // adds item to list
acceptItem() // accepts (or rejects) item
}
MemoryProgram -right-> Memory: memory |
PlantUML Macro |
---|
| actor bruker
class MemoryProgram
class Memory {
expectedItems // list of numbers 1-9
acceptedCount // position in list
nextItem() // adds item to list
acceptItem() // accepts (or rejects) item
}actor bruker
MemoryProgram -> Memory: nextItem()
Memory --> MemoryProgram: 3
MemoryProgram -> bruker: "Element nr. 1 er 3"
MemoryProgram -> bruker: "Gjenta element nr. 1 av 1"
bruker --> MemoryProgram: 3
MemoryProgram -> Memory: acceptItem()
Memory --> MemoryProgram: ok og ferdig
MemoryProgram -> Memory: nextItem()
Memory --> MemoryProgram: 4
MemoryProgram -> bruker: "Element nr. 2 er 4"
MemoryProgram -> bruker: "Gjenta element nr. 1 av 2"
bruker --> MemoryProgram: 3
MemoryProgram -> Memory: acceptItem()
Memory --> MemoryProgram: ok, men ikke ferdig
MemoryProgram -> bruker: "Gjenta element nr. 2 av 2"
bruker --> MemoryProgram: 4
MemoryProgram -> Memory: acceptItem()
Memory --> MemoryProgram: ok og ferdig
MemoryProgram -> Memory: nextItem()
Memory 2 av 2"
bruker --> MemoryProgram: 4 | PlantUML Macro |
---|
| class MemoryProgram {
}
class Memory {
expectedItems // list of numbers 1-9
acceptedCount // position in list
nextItem() // adds item to list
acceptItem() // accepts (or rejects) item
}
MemoryProgram -right-> Memory: memory
MemoryProgram -> Memory: acceptItem()
Memory --> MemoryProgram: ok og ferdig
MemoryProgram -> Memory: nextItem()
Memory --> MemoryProgram: 4 |
| PlantUML Macro |
---|
| object Memory1 {
expectedItems = []
acceptedCount = 0
}
object Memory2 {
expectedItems = [3]
acceptedCount = 0
}
Memory1 -down-> Memory2: nextItem() => 3
object Memory3 {
expectedItems = [3]
acceptedCount = 1
}
Memory2 -down-> Memory3: acceptItem() => ok og ferdig
object Memory4 {
expectedItems = [3, 4]
acceptedCount = 0
}
Memory3 -down-> Memory4: nextItem() => 4
object Memory5 {
expectedItems = [3, 4]
acceptedCount = 1
}
Memory4 -down-> Memory5: acceptItem() => ok, men ikke ferdig
object Memory6 {
expectedItems = [3, 4]
acceptedCount = 2
}
Memory5 -down-> Memory6: acceptItem() => ok og ferdig
object Memory7 {
expectedItems = [3, 4, 7]
acceptedCount = 0
}
Memory6 -down-> Memory7: nextItem() => 7
|
|
...