Programmering H2014 — Uke 45
Oppgaven går ut på å løse
Eksamen Høst 2009.
I oppgaven er det endel pseudokode og noen metoder som man ikke blir bedt om å programmere.
Dere skal imidlertid erstatte pseudokoden med java-instruksjoner,
programmere alle klasser og metoder, samt føye til alt som måtte være nødvendig for å få et kjørbart program.
I klassen KundeParkering
vil du trenge å legge til metodene:
public int antallTimer(Date sluttTid)
{
< Metoden skal returnere antall påbegynte timer fra starttidspunktet for
parkeringen til sluttidspunktet angitt av parameteren sluttTid. >
}
public int avgift(Date sluttTid )
{
< Metoden skal returnere det parkeringen koster i hele antall kroner. >
}
I oppgaven brukes det koder som er laget av en kodegenerator. For å få testet programmet trenger dere å
vite hvilket koder som er generert. Det er derfor nødvendig å føye til en klasse KodeGeneratorVindu
,
som kan vise alle genererte koder.
I ukeoppgavene for uke 44
ble det gitt en tilsvarende oppgave. Med enkle justeringer kan deler av denne løsningen brukes:
- I stedet for 6-sifrede koder, genererer dere 4-sifrede koder, f.o.m 1000 t.o.m.9999.
- Alt som er knyttet til "ny kode" kan droppes, og metoden visBrukteKoder
kan erstattes med
metoden visAlleKoder
.
Brukergrensesnittet kan så forenkles til:

I eksamensoppgaven er det to vindusklasser, InnkjøringsVindu
og
UtkjøringsVindu
.
For at fargen ("lyset") i disse vinduene skal skifte fra grønt til rødt igjen
etter en inn- eller utkjøring er det nødvendig å føye til litt ekstra kode.
Følgende kode må føyes til i InnkjøringsVindu
:
public void femSekunder()
{
Timer klokke = new Timer( 5000, new Lyslytter());
klokke.setRepeats(false);
klokke.start();
}
private class Lyslytter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
SwingUtilities.invokeLater(
new Tekstoppdaterer( adgangsFelt, Color.RED, 50, "STOPP") );
nrFelt.setText("");
}
}
I tillegg må metoden femSekunder()
kalles opp fra actionPerformed
-metoden
i lytteklassen som lytter på innkjøringsknappen.
Nesten tilsvarende kode må føyes til i UtkjøringsVindu
:
public void femSekunder()
{
Timer klokke = new Timer( 5000, new Lyslytter());
klokke.setRepeats(false);
klokke.start();
}
private class Lyslytter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
SwingUtilities.invokeLater(
new Tekstoppdaterer( utgangsFelt, Color.RED, 50, "STOPP") );
display.setText("");
nrFelt.setText("");
}
}
Metoden femSekunder()
må så kalles opp fra actionPerformed
-metoden
i lytteklassen som lytter på utkjøringsknappen.
Til slutt må dere føyde følgende klasse til programmet:
import javax.swing.*;
import java.awt.*;
public class Tekstoppdaterer implements Runnable
{
private JTextField felt;
private Color farge;
private int størrelse;
private String tekst;
public Tekstoppdaterer( JTextField f, Color c, int str, String t)
{
felt = f;
farge = c;
størrelse = str;
tekst = t;
}
public void run()
{
felt.setFont(new Font("Times", Font.BOLD, størrelse));
felt.setBackground( farge );
felt.setHorizontalAlignment(SwingConstants.CENTER);
felt.setText(tekst);
}
}
LYKKE TIL!
Løsningsforslag
Java-filer