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

Compare with Current View Page History

Version 1 Next »

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:

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.

  • No labels