| Emne: PROGRAMMERING |
Emnekode: LO 127 A |
Faglig veileder: Eva Vihovde | |
| Grupper: 1AA, 1AB, 1AC, 1IA |
Dato: 16.12.2005 |
Eksamenstid: 09.00 - 14.00 | |
| Eksamensoppgaven består av: | Antall sider (inkl. forsiden): 8 | Antall oppgaver: 6 | Antall vedlegg: 0 |
| Tillatte hjelpemidler: | Alle trykte og håndskrevne | ||
| Kandidaten må selv kontrollere at oppgavesettet er fullstendig. Ved eventuelle uklarheter i oppgaveteksten skal du redegjøre for de forutsetninger du legger til grunn for løsningen. | |||
Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.
| Utarbeidet av (faglærer): | Kontrollert av (en av disse): | Studieleders/ Fagkoordinators underskrift: | ||
| Annen lærer | Sensor | Studieleder/ Fagkoordinator | ||
| | ||||
Reparasjon definerer reparasjonsoppdragene som verkstedet
kan utføre. Den skal ha datafelt for følgende:
get-metode for oppdragsnummer.set-metode som kan brukes til å registrere at reparasjonen
er ferdig utført.toString-metode. Teksten som den returnerer skal inneholde
all registrert informasjon om reparasjonen. Teksten skal være satt opp
på en lesbar og forståelig måte.Reparasjon med datafelter og metoder i samsvar med beskrivelsen
ovenfor.
Bil. Den representerer
en enkelt bil som verkstedet har mottatt et oppdrag for. De to første
datafeltene skal initialiseres via konstruktørparametre.
public class Bil
{
private String kjennetegn;
private int registreringsår;
private Reparasjon[] reparasjoner;
private int antReparasjoner = 0; // antall registrerte reparasjoner
< Konstruktør med nødvendige parametre, se ovenfor. >
{
< Foretar nødvendig initialisering. Dersom registreringsåret er
tidligere enn 1990, skal det reserveres plass for 25 reparasjoner, er
det mellom 1989 og 2000, skal det reserveres plass for 15 reparasjoner,
ellers for 10 reparasjoner. >
}
public ... getKjennetegn()
{
< get-metode for kjennetegn >
}
public boolean regReparasjon( Reparasjon rep )
{
< Registrerer et nytt oppdrag for reparasjon, forutsatt at det er
plass for dette. Returverdien indikerer utfallet. >
// Du kan anta at objektene ligger kontinuerlig etter hverandre og at
// ingen objekter blir slettet fra arrayen.
}
public Reparasjon finnReparasjon( int nummer )
{
< Leter etter og returnerer reparasjon som inneholder oppdragsnummer lik
parameterens verdi. Returnerer null i tilfelle denne ikke finnes. >
}
public boolean erEUgodkjent()
{
< Sjekker om bilen er EU-godkjent. Det er tilfelle dersom alle
registrerte reparasjoner som er EU-krav er ferdig utført. >
}
public String toString()
{
< Skal returnere informasjon om kjennetegn, registreringsår, all
registrert informasjon om eventuelle reparasjoner, samt informasjon om
bilen er EU-godkjent eller ikke. >
}
}
a) Programmer klassens konstruktør, samt metodene
getKjennetegn og regReparasjon.
b) Programmer metodene finnReparasjon og
erEUgodkjent.
c) Programmer toString-metoden.
Bilverksted.
public class Bilverksted
{
private Bil[] bilregister;
private int antBiler = 0; // antall registrerte biler
public Bilverksted( int kapasitet )
{
< Foretar nødvendig initialisering. Parameteren angir hvor mange
biler verkstedet skal ha kapasitet til å registrere for reparasjoner.
Kapasiteten skal imidlertid ikke settes til mindre enn 10. >
}
// Denne metoden skal du ikke programmere.
private Bil finnBil( String kjennetegn )
{
< Returnerer bil med kjennetegn lik parameterens verdi dersom
denne finnes i registeret, returner null ellers. >
}
// Denne metoden skal du ikke programmere.
public String registrerBil( Bil ny )
{
< Registrerer en ny bil i registeret, i tilfelle det er plass og
det ikke allerede er registrert en bil med samme kjennetegn.
Returverdien indikerer utfallet av registreringen. >
// Du kan anta at objektene ligger kontinuerlig etter hverandre og at
// ingen objekter blir slettet fra arrayen.
}
public String bilinfo( String kjennetegn )
{
< Returnerer informasjon om bil med kjennetegn lik parameterens verdi
dersom denne finnes i registeret, returnerer ellers informasjon
om at den ikke finnes. >
}
public String nyReparasjon( String kjennetegn, String dato,
String beskrivelse, boolean erEUkrav )
{
< Finner bil med mottatt kjennetegn og registrerer oppdrag på en ny
reparasjon på denne. Returnerer passende tilbakemelding, også for det
tilfellet at bilen ikke finnes i registeret, eller det ikke er
kapasitet for å legge inn flere reparasjoner på den. >
}
private Reparasjon finnReparasjon( int nummer )
{
< Finner og returnerer reparasjonen med det oppdragsnummer som
parameteren angir. Returnerer null i tilfelle den ikke finnes. >
}
public String visReparasjon( int nummer )
{
< Returnerer alle registrerte opplysninger om reparasjonen med det
oppdragsnummer som parameteren angir. Returnerer null dersom den ikke
finnes. >
}
public String sjekkEUgodkjenning( String kjennetegn )
{
< Sjekker om bilen med mottatt kjennetegn er EU-godkjent eller ikke
og returnerer opplysninger om dette. >
}
// Denne metoden skal du ikke programmere.
public boolean settReparasjonUtført( int nummer )
{
< Registrerer at den reparasjon det mottas oppdragsnummer for er ferdig
utført. Returverdien indikerer om reparasjonen ble funnet i registeret. >
}
}
a) Programmer klassens konstruktør, samt metoden
bilinfo.
b) Programmer metoden nyReparasjon.
c) Programmer metoden finnReparasjon.
d) Programmer metodene visReparasjon og
sjekkEUgodkjenning.
Nedenfor følger en skisse av klassen som definerer vinduet. (Nødvendige
import-instruksjoner er ikke tatt med.)
public class Mottaksvindu extends JFrame implements ActionListener
{
private Bilverksted verkstedet;
private JTextField kjennetegnsfelt, årsfelt, datofelt, kravfelt;
private JTextArea info;
private JButton registreringsknapp, infoknapp, reparasjonsknapp,
kontrollknapp;
public Mottaksvindu( Bilverksted v )
{
super( "Mottak av verkstedoppdrag" );
verkstedet = v;
kjennetegnsfelt = new JTextField( 15 );
årsfelt = new JTextField( 5 );
datofelt = new JTextField( 6 );
info = new JTextArea( 7, 40 );
kravfelt = new JTextField( 2 );
registreringsknapp = new JButton( "Registrer bil i verkstedregisteret" );
registreringsknapp.addActionListener( this );
infoknapp = new JButton( "Vis info om bil" );
infoknapp.addActionListener( this );
reparasjonsknapp = new JButton( "Bestill reparasjon" );
reparasjonsknapp.addActionListener( this );
kontrollknapp = new JButton( "Sjekk om bilen er EU-godkjent" );
kontrollknapp.addActionListener( this );
lagLayout();
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setSize( 500, 350 );
setVisible( true );
}
// Denne metoden skal du ikke programmere.
public void lagLayout()
{
< Legger ut komponenter for å gi det vinduet som vises på bildet. >
}
// Kan brukes til å gi passende tilbakemeldinger til brukeren.
private void visMelding( String melding )
{
JOptionPane.showMessageDialog( this, melding );
}
public void registrerBil()
{
< Leser inn data for en ny bil og foretar registrering av den.
Brukeren skal få passende tilbakemelding. >
}
public void visBilinfo()
{
< Skriver ut i utskriftsområdet all registrert informasjon for den bil
det leses inn kjennetegn for. >
}
public void bestillReparasjon()
{
< Leser inn data for registrering av et nytt oppdrag på en reparasjon av
en bil og foretar registreringen. >
}
public void sjekkEUgodkjenning()
{
< Leser inn kjennetegn for en bil og skriver ut i utskriftsområdet
informasjon om den er EU-godkjent eller ikke. >
}
// Denne metoden skal du ikke programmere.
public void actionPerformed( ActionEvent e )
{
< Foretar kall på riktig metode, avhengig av hvilken knapp det
er klikket på. >
}
}
a) Programmer de to metodene visBilinfo og
sjekkEUgodkjenning.
b) Programmer metoden registrerBil. Metoden skal gi
passende tilbakemelding til brukeren.
c) Programmer metoden bestillReparasjon. Metoden skal gi
passende tilbakemelding til brukeren.
Nedenfor følger en skisse av klassen som definerer vinduet. (Nødvendige
import-instruksjoner er ikke tatt med.)
public class Verkstedvindu extends JFrame implements ActionListener
{
private Bilverksted verkstedet;
private JTextField oppdragsfelt;
private JTextArea info;
private JButton infoknapp, ferdigknapp;
public Verkstedvindu( Bilverksted v )
{
super( "Verkstedvindu" );
verkstedet = v;
oppdragsfelt = new JTextField( 6 );
infoknapp = new JButton( "Vis oppdrag" );
infoknapp.addActionListener( this );
ferdigknapp = new JButton( "Registrer at reparasjon er utført" );
ferdigknapp.addActionListener( this );
info = new JTextArea( 7, 35 );
info.setEditable( false );
lagLayout();
setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );
setSize( 450, 250 );
setLocation( 600, 0 );
setVisible( true );
}
// Denne metoden skal du ikke programmere.
public void lagLayout()
{
< Legger ut komponenter for å gi det vinduet som vises på bildet. >
}
// Kan brukes til å gi passende tilbakemeldinger til brukeren.
private void visMelding( String melding )
{
JOptionPane.showMessageDialog( this, melding );
}
// Denne metoden skal du ikke programmere.
public void visReparasjon()
{
< Leser inn oppdragsnummer for en reparasjon og skriver ut alle
opplysninger som er registrert for den, i tilfelle den finnes. >
}
public void ferdigstill()
{
< Leser inn oppdragsnummer for en reparasjon og registrerer at den
nå er utført. Skriver ut de opplysninger som er registrert på den
etter at dette er registrert. >
}
// Denne metoden skal du ikke programmere.
public void actionPerformed( ActionEvent e )
{
< Foretar kall på riktig metode, avhengig av hvilken knapp det
er klikket på. >
}
}
a) Programmer metoden ferdigstill.