Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Excerpt

Oppgaven handler om en Stack StringStack-klasse, som skal lagre tilfeldige tall tekster i datastrukturen stack.

I denne oppgaven skal vi lagre tall strenger i en datastruktur som heter stack. Java har en egen implementasjon av datastukturen datastrukturen (java.util.Stack), men for å få en god forståelse av hvordan en stack fungerer, skal vi implementere den selv. Stack brukes ofte i programmering og det er gunstig å lære seg den tidlig. Mer informasjon om stack-datastrukturen: http://en.wikipedia.org/wiki/Stack_data_structure

Vi skal lage to klasser,  Stack StringStack og RandomIntGeneratorRandomStringGenerator, som skal gi oss tilfeldige tall strenger å lagre i stacken.

Tilstanden Stacki StringStack-objekter er som følger:

  • intStack stringList - en liste av datatypen ArrayList<int>. Denne skal inneholde alle tallene. Den finnes i biblioteket med strenger av typen ArrayList<String> (del av standard Java, i pakka java.util), som følger med java-installasjonenskal inneholde alle String-objektene. Informasjon om operasjonene som kan utføres på den finner du her: http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

Stack-klassen din skal ha følgende metoder:

  • void push(intString) - dytt argumentverdien legger argumentet på toppen av stacken (det vil si slutten av lista våres).
  • int String pop() - returner og fjerner verdien på toppen av stacken. Verdien skal også fjernes fra stackenReturner null dersom stacken er tom.
  • int String peek(int) - returner verdien i stacken som står på plassen gitt i argumentet, tellt telt fra toppen. Det vil si, peek(0) skal returnere veriden på toppen av stacken, peek(1) skal returnere verdien nest øverst i stacken osv. Verdien skal ikke fjernes av stacken. Returner null dersom argumentet er negativt eller for stort.
  • int getSize() - returner antallet elementer i stacken.

Alle metodene ovenfor må kunne håndtere ulovlige argumentverdier og kall, for eksempel et kall til pop() når stacken er tom.

RandomIntGenerator skal generer tilfeldige tall av datatypen intRandomStringGenerator skal generere tilfeldige String-objekter. For å få til dette skal vi bruke java.util.Random, som følger med javainstallasjonen.

Tilstanden i RandomIntGenerator-objekter er som følger:

  • randomGenerator - objektet som gir oss tilfeldige tall, av datatype Random.
  • minimum - minimum verdi vi ønsker på de tilfeldige tallene.
  • maximum - maximum verdi vi ønsker på de tilfeldige tallene.

RandomIntGenerator-klassen skal ha følgende metoder:

  • voidsetMinimum(int) - sett minimum verdi på de tilfeldige tallene til argumentverdien.
  • voidsetMaximum(int) - sett maximum verdi på de tilfeldige tallene til argumentverdien.
  • int getRandomInt() - returner et tilfeldig heltall mellom minimum- og maximumverdiene.

For å generere tilfeldige tall, se på kan du bruke Random-klassen i java.util-pakka og metodene nextInt() og nextInt(int) i Random-klassenhttp://docs.oracle.com/javase/6/docs/api/java/util/Random.html.

Tilstanden i RandomStringGenerator-objekter velger du selv, men det er naturlig å ha et felt som inneholder et Random-objekt. Du velger selv strategien for å lage tilfeldige tekster. F.eks. kan du bygge opp en String med tilfeldig lengde og tilfeldige bokstaver, du prøve å lage tilfeldige ord ved å veksle mellom vokaler og konsonanter, du kan kan sette sammen en tilfeldig sekvens av ferdiglagde ord-deler osv.

RandomStringGenerator-klassen skal ha følgende metode(r):

  • String getRandomString() - returner et tilfeldig String-objekt.

Del 1 - tilstandsdiagram

Tegn objekttilstandsdiagram for en tenkt bruk av Stack StringStack-klassen og RandomIntGenerator RandomStringGenerator-klassen. Velg selv passende start-tilstand og sekvens av kall.

Del 2 - Java-kode

Skriv Java-kode for Stack StringStack-klassen og RandomIntGenerator RandomStringGenerator-klassen med oppførsel som er beskrevet over.

Lag en passende toString()-metode for Stack StringStack-klassen og et hovedprogram, som henter får tilfeldige tall String-objekter fra et RandomIntGeneratorRandomStringGenerator-objekt. Bruk disse tallene til å teste Stackstrengene til å teste StringStack-klassen og sjekk at oppførselen stemmer med tilstandsdiagrammet.

JExercise-testkode for denne oppgaven finner du her: stateandbehavior/StringStackTest.java.

Include Page
Bunntekst for JExercise-oppgaver
Bunntekst for JExercise-oppgaver