Excerpt |
---|
På denne siden vises klasse- og objekttilstandsdiagrammer for løsningen, som hjelp til å skrive selve koden. |
| Dette klassediagrammet illustrerer forholdet mellom grensesnittet grensesnittetene CardContainer og CardContainerIterator og klassene CardDeck, CardHand og Card. CardContainer deklarere metoder som CardDeck og CardHand må implementere. CardDeck og CardHand inneholder begge 0, 1 eller flere Card-objekter.. CardContainer deklarerer metoder som CardDeck og CardHand må implementere, og som gir tilgang til Card-objektene de inneholder. Merk at det er implisitt at metodene deklarert i grensesnittet handler om assosiasjonen(e) til Card. CardContainerIterator implementerer Iterator<Card> og må derfor implementere hasNext() og next(). Den har en assosiasjon til en CardContainer og hasNext()- og next()-metodene brukes for å iterere over Card-objektene som det assosierte CardContainer-objektet inneholder. Internt bruker CardContainerIterator-objekter et pos-attributt for å holde rede på hvilket Card-objekt som neste kall til next() skal returnere. hasNext() må bruke pos og CardContainer-objektet sin getCardCount()-metode for å si om iterasjonen er ferdig, og next() må bruke pos og CardContainer-objektet sin getCard(int)-metode for å få tak i riktig Card-objekt. Hvert kall til next() må dessuten øke pos, slik at iterasjonen går forover. |
| Dette objekttilstandsdiagrammet viser en objektstruktur med et CardDeck-objekt, som inneholder tre Card-objekter, og hvordan 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-attributtet, 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.
|
HTML Comment | ||
---|---|---|
| ||
|