Excerpt |
---|
Oppgaven handler om en Stack-klasse, som skal lagre tilfeldige tall i datastrukturen stack. |
I denne oppgaven skal vi lagre tall i en datastruktur som heter stack. Java har en egen implementasjon av datastukturen (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 datastrukturen: http://en.wikipedia.org/wiki/Stack_data_structure
Vi skal lage to klasser, Stack og RandomIntGenerator, som skal gi oss tilfeldige tall å lagre i stacken.
Tilstanden i Stack-objekter er som følger:
- intStack - en liste av datatypen ArrayList<int>. Denne skal inneholde alle tallene. Den finnes i biblioteket java.util, som følger med java-installasjonen. 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 skal ha følgende metoder:
- void push(int) - dytt argumentverdien på toppen av stacken (det vil si slutten av lista våres).
- int pop() - returner verdien på toppen av stacken. Verdien skal også fjernes fra stacken.
- int peek(int) - returner verdien i stacken som står på plassen gitt i argumentet, tellt 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.
- 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 int. 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å metodene nextInt() og nextInt(int) i Random-klassen: http://docs.oracle.com/javase/6/docs/api/java/util/Random.html.
Del 1 - tilstandsdiagram
Tegn objekttilstandsdiagram for en tenkt bruk av Stack-klassen og RandomIntGenerator-klassen. Velg selv passende start-tilstand sekvens av kall.
Del 2 - Java-kode
Skriv Java-kode for Stack-klassen og RandomIntGenerator-klassen med oppførsel som er beskrevet over.
Lag en passende toString()-metode for Stack-klassen og et hovedprogram, som henter tilfeldige tall fra et RandomIntGenerator-objekt. Bruk disse tallene til å teste Stack-klassen og sjekk at oppførselen stemmer med tilstandsdiagrammet.