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 Lotteri
a) Programmer metodenpublic 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 Loddsalgvindu
a) Programmer metoden public void registrerLoddsalg().
Nedenfor ser du en skisse av klassen 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 Lotterivindu
a) Programmer metodene
public void visGevinstprognose()public void vinnerliste()Lotterilytter. Lotteriprogram som inneholder
applikasjonens main-metode.
SLUTT