You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

På denne siden vises klasse- og objekttilstandsdiagrammer for løsningen, som hjelp til å skrive selve koden.
StringGridgetRowCount()getColumnCount()getElement(int row, int column)StringGridImplIteratorStringboolean hasNext()String next()StringGridIteratorint rowint columngrid1

Dette klassediagrammet illustrerer forholdet mellom grensesnittetene StringGrid og StringGridIterator og klassen StringGridImpl.

StringGridImpl inneholder begge 0, 1 eller flere String-objekter. StringGrid deklarerer metoder som StringGridImpl må implementere, og som gir tilgang til String-objektene den inneholder.

StringGridIterator implementerer Iterator<String> og må derfor implementere hasNext() og next(). Den har en assosiasjon til en StringGrid og hasNext()- og next()-metodene brukes for å iterere over String-objektene som det assosierte StringGrid-objektet inneholder.

Internt bruker StringGridIterator-objekter row- og column-attributtene for å holde rede på hvilket String-objekt som neste kall til next() skal returnere. hasNext() må bruke row og column og StringGrid-objektet sine getRowCount()- og getColumnCount()-metoder for å si om iterasjonen er ferdig, og next() må bruke row og column og StringGrid-objektet sin getElement(int, int)-metode for å få tak i riktig String-objekt. Hvert kall til next() må dessuten øke column og evt. row (og nullstille column) slik at iterasjonen går forover 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.

StringGridImpl"en" "to" "tre""fire" "fem" "seks"StringGridIteratorrow = 0column = 0StringGridIteratorrow = 0column = 1StringGridIteratorrow = 0column = 2StringGridIteratorrow = 1column = 0StringGridIteratorrow = 1column = 1StringGridIteratorrow = 1column = 2StringGridIteratorrow = 2column = 0stringGridstringGridhasNext() => truenext() => enstringGridhasNext() => truenext() => tostringGridhasNext() => truenext() => trestringGridhasNext() => truenext() => firestringGridhasNext() => truenext() => femstringGridhasNext() => truenext() => sekshasNext() => false

Dette objekttilstandsdiagrammet viser en objektstruktur med et StringGridImpl-objekt, som inneholder to rader og tre kolonner med seks String-objekter, og hvordan en (og samme) StringGridIterator utvikler seg over tid gjennom en iterasjon over String-objektene som StringGridImpl-objektet inneholder, altså "en", "to", "tre", "fire", "fem" og "seks". Vi ser at StringGridIterator-objektet hele tiden er koblet til samme StringGridImpl-objekt og at det eneste som endrer seg er row, column-attributtene, som går gjennom alle par fra 0, 0 til og med 1, 2 og stopper på 2, 0 (siden 2 >= antall rader).

Merk at i dette eksemplet er StringGridIterator-objektet koblet til et StringGridImpl-objekt, men at det godt kunne vært en hvilken som helst instans av en klasse som implementerer StringGrid.

 

 

 

 

 

  • No labels