Versions Compared

Key

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

...

PlantUML Macro
object "CardDeck" as cardDeck {
}
object "#card0 : Card" as card1 {
	suit = 'S'
	face = 1
}
object "#card1 : Card" as card2 {
	suit = 'S'
	face = 2
}
object "#card2 : Card" as card3 {
	suit = 'H'
	face = 1
}
cardDeck *--> card1: cards
cardDeck *--> card2: cards
cardDeck *--> card3: cards

object "CardContainerIterator" as iterator0 {
	pos = 0
}
iterator0 --> cardDeck: cardContainer


object "CardContainerIterator" as iterator1 {
	pos = 1
}
iterator1 --> cardDeck: cardContainer

iterator0 ..> iterator0: hasNext() => true
iterator0 ..> iterator1: next() => #card0


object "CardContainerIterator" as iterator2 {
	pos = 2
}
iterator2 --> cardDeck: cardContainer

iterator1 ..> iterator1: hasNext() => true
iterator1 ..> iterator2: next() => #card1


object "CardContainerIterator" as iterator3 {
	pos = 3
}
iterator3 --> cardDeck: cardContainer

iterator2 ..> iterator2: hasNext() => true
iterator2 ..> iterator3: next() => #card2
iterator3 ..> iterator3: hasNext() => false



Dette objekttilstandsdiagrammet viser en objektstruktur med et CardDeck-objekt, som inneholder tre Card-objekter, og hvordan et en (og samme) CardContainerIterator utvikler seg over tid gjennom en iterasjon over Card-objektene som CardDeck-objektet inneholder, altså #card1, #card2 og #card3. Vi ser at CardContainerIterator-objektet hele tiden er koblet til samme CardDeck-objekt og at det eneste som endrer seg er pos-attributetattributtet, som går gjennom rekka 0, 1, 2 og stopper på 3 (siden 3 >= antall kort).

Merk at i dette eksemplet er CardContainerIterator-objektet koblet til et CardDeck-objekt, men at det godt kunne vært et CardHand-objekt eller hvilken som helst instans av en klasse som implementerer CardContainer.

 

...