...
| Dette klassediagrammet illustrerer forholdet mellom grensesnittetene CardContainer og CardContainerIterator og klassene CardDeck, CardHand og Card. StringGrid og StringGridIterator og klassen StringGridImpl. StringGridImpl CardDeck og CardHand inneholder begge 0, 1 eller flere Card String-objekter. CardContainer StringGrid deklarerer metoder som CardDeck og CardHand StringGridImpl må implementere, og som gir tilgang til Card String-objektene de den inneholder. Merk at det er implisitt at metodene deklarert i grensesnittet handler om assosiasjonen(e) til Card. StringGridIterator implementerer Iterator<String> CardContainerIterator implementerer Iterator<Card> og må derfor implementere hasNext() og next(). Den har en assosiasjon til en CardContainer en StringGrid og hasNext()- og next()-metodene brukes for å iterere over Card String-objektene som det assosierte CardContainer StringGrid-objektet inneholder. Internt bruker CardContainerIterator StringGridIterator-objekter et pos-attributt row- og column-attributtene for å holde rede på hvilket Card String-objekt som neste kall til next() skal returnere. hasNext() må bruke pos row og column og CardContainer StringGrid-objektet sin getCardCountsine getRowCount()- og getColumnCount()-metode metoder for å si om iterasjonen er ferdig, og next() må bruke pos og CardContainerbruke row og column og StringGrid-objektet sin getCardgetElement(int, int)-metode for å få tak i riktig Card String-objekt. Hvert kall til next() må dessuten øke pos, column og evt. row (og nullstille column) slik at iterasjonen går forvoverforover og til neste linje. Her er det ikke tatt hensyn til rowMajor-logikken, som oppgaven etterspør, men det endrer ikke så mye, kun hvilken av column og row som økes først. |
| Dette objekttilstandsdiagrammet viser en objektstruktur med et CardDeck-objekt, som inneholder tre Card-objekter, og hvordan et (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-attributet, 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.
|
...