Versions Compared

Key

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

...

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
border1
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
border1
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
border1
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
border1
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

 

 

...