Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.
Lodd
representerer ett enkelt lodd, mens klassen Gevinst
representerer en gevinst. I klassen
Lotteri
er det to arrayer, den ene inneholder Lodd
-objektene og den andre inneholder
Gevinst
-objektene. Klassen Loddsalgvindu
utgjør brukergrensesnittet for loddsalget,
mens klassen Lotterivindu
utgjør brukergrensensnittet
for å vise gevinstprognoser og foreta trekningen. Lodd
-objekter og Gevinst
-objekter
vil i teksten bli omtalt som lodd og gevinster. Nærmere detaljer om de nevnte klassene
er forklart i de enkelte deloppgavene.
Lodd
skal ha datafelt for følgende opplysninger:
Gevinst
skal ha datafelt for følgende opplysninger:
Gevinst
.Lotteri
inneholder to arrayer, loddbok
og gevinster
.
Loddboka er i utgangspunktet tom, men etterhvert som loddene selges, opprettes det Lodd
-objekter som så settes
inn i arrayen. Arrayen gevinster
er også tom i utgangspunktet og her blir Gevinst
-objektene først satt inn når
størrelsen på gevistene er beregnet, dvs. før trekningen i lotteriet.
Nedenfor ser du en skisse av klassen Lotteri
:
< import-setninger > public class Lotteri { private int loddpris; private double rødekors; //0.1 tilsvarer 10% til Røde Kors private int antallSolgte; //Antall solgte lodd private int sumLoddsalg; //Summen det er solgt lodd for i hele kroner private Lodd[] loddbok; private Gevinst[] gevinster; private boolean trekningForetatt = false; < Konstruktør som mottar parametre for rødekorsandelen og loddprisen, samt to parametre lengdene for arrayene. > < get-metoder for antallSolgte og loddpris > public String loddsalg( String navn, String adr, String mobil, int antall ) { < Metoden skal registrere salg av det antall lodd som loddkjøperen ønsker å kjøpe, under forutsetning av at det er nok usolgte lodd igjen (dvs. nok ledig plass i arrayen). Paramtrene gir opplysninger om loddkjøperens navn, adresse og mobilnummer, samt hvor mange lodd vedkommende skal ha. Datafeltene antallSolgte og sumLoddsalg skal oppdateres, slik at det til enhver tid holdes rede på hvor mange lodd som er solgt og hvor mye det er solgt lodd for. Metoden skal returnene en tekst med informasjon om loddene som kjøpes, samt opplysninger om hvor mye loddkjøperen skal betale. Hvis salget ikke lar seg gjennomføre (fordi det ikke er nok lodd igjen) skal metoden returnere informasjon om det. > }
public int rødekorsAndel() { < Metoden returnerer den andelen av loddsalget skal skal gå til Røde Kors. Beløpet skal returneres i hele kroner. > } public void beregnGevinster() { < Metoden skal opprette gevinster (antallet gevinster er lik lengden på gevinst-arrayen) og beregne størrelsen på dem etter følgende regler: Etter at Røde Kors-andelen er trukket fra inntektene av loddsalget, skal 50% gå til 1.gevinsten, mens resten av beløpet skal fordeles de resterende gevinstene. (Hver gevinst skal representeres som et Gevinst- objekt i arrayen gevinster.) > } public String gevinstprognoser() { < Metoden skal returnere informasjon om hvor mye det er solgt lodd for og hvor stor andel som skal gå til Røde Kors, samt gi en oversikt over hva de forskjellige gevinstene lyder på. Det er en forutsetning at det er solgt flere lodd enn det er gevinster. Hvis ikke, skal metoden returnere informasjon om at det er solgt for få lodd til at gevinstprognoser kan beregnes. > } public void trekning() { < Metoden skal beregne gevinster og foreta en trekning. Følgende instruksjon returnerer indeksen til et av loddene i loddboka: int indeks = (int) ( Math.random() * antSolgte ); Det skal trekkes like mange lodd som det er gevinster, men alle loddene som trekkes må være forskjellige. Vinnerloddene må oppdateres, slik at de merkes som vinnerlodd, og gevinstene må oppdateres, slik at det registreres hvem vinnerne er. Det må også registreres i lotteriet at trekningen er foretatt. > } public String vinnerliste() { < Denne metoden skal foreta trekningen ved at metoden over blir kalt, under forutsetning av at det er solgt flere lodd enn det er gevinster og at trekningen ikke allerede er foretatt. Metoden skal så returnere en liste over hvilke lodd som har vunnet hvilke gevinster, og hvem de heldige vinnerne er. Hvis det ikke er solgt nok lodd, skal metoden returnere informasjon om at det er solgt for få lodd til å foreta trekningen. > } }// end of class Lotteria) Programmer metoden
public String loddsalg( String navn, String adr, String mobil, int antall)
b) Programmer metodene
public int rødekorsAndel()
public void beregnGevinster()
public String gevinstprognoser()
.
d) Programmer metoden public void trekning()
.
e) Programmer metoden public String vinnerliste()
.
Loddsalgvindu
.
< import-setninger > public class Loddsalgvindu extends JFrame { private Lotteri lotteriet; private JTextField navnefelt, mailfelt, mobilfelt, antallfelt; private JTextArea utskrift; private JButton regknapp; private Loddsalglytter lytter; public Loddvindu(Lotteri l) { < Setter opp brukergrensesnittet og knytter regknapp til lytteobjektet. > } public void registrerLoddsalg() { < Metoden skal registrere salg av et antall nye lodd, forutsatt at det er nok usolgte lodd igjen. Utfallet av registreringen skal skrives i utskriftsområdet, herunder utskrift av alle loddene som er kjøpt. > } < Privat lytteklasse > } // end of class Loddsalgvindua) Programmer metoden
public void registrerLoddsalg()
.
Lotterivindu
:
< import-setninger > public class Lotterivindu extends JFrame { private Lotteri lotteriet; private Loddvindu loddvindu; private JButton prognoseknapp, trekningsknapp; private JTextArea utskrift; private Lotterilytter lytter;
public Lotterivindu(Lotteri l, Loddvindu lv) { < Setter opp brukergrensesnittet og knytter knappene til lytteobjektet. > } public void visGevinstprognose() { < Metoden skal vise gevinstprognosene i utskriftsområdet. > } public void vinnerliste() { < Metoden skal vise resultatet av trekningen i utskriftsområdet. > } < Den private lytteklassen Lotterilytter > }// end of class Lotterivindua) Programmer metodene
public void visGevinstprognose()
public void vinnerliste()
Lotterilytter
. Lotteriprogram
som inneholder
applikasjonens main-metode.
SLUTT