Programmering— Oppgave til kapittel 3

Oppgave 1

Modifiser klassen Kursbok4 i Introduksjon til programmering, kapittel 3, eksempel 4 på følgende måte:

  1. Tilføy (deklarer) tre ekstra datafelt, et for kursets kurskode, et for antall studiepoeng og et for navnet på kursets faglærer.
  2. Skriv en konstruktør som gir startverdier til ALLE datafeltene i klassen. Konstruktøren skal ha fire parametre, (en for kursnavnet, en for kurskoden, en for antall studiepoeng og en for navnet på faglærer)
  3. Tilføy set- og get-metoder for de nye datafeltene.
  4. Modifiser visTittel-metoden slik at også kurskoden, antall studiepoeng og navnet på fagelærer for kurset skrives ut i dialogvinduet. Fordel utskriften over flere linjer.

Lag et testprogram som bruker den nye klassen din og den nye funksjonaliteten den har.
Programmet skal opprette et Kursbok4-objekt, som ved opprettelsen (via konstruktørens parametre) gir datafeltene i Kursbok4-objektet startverdier.
Skriv så disse dataene ut på skjermen ved hjelp av visTittel-metoden.
Tenk det nå at kurset du har lagret vedier for skal skifte navn, kurskode, antall studiepoeng og lærer, og at det derfor må foretas ny innlesing av disse verdiene. Bruk set-metodene til å sørge for at de nye verdiene blir lagret i Kursbok4-objektets datafelt.
Til slutt skal programmet vise på skjermen hva som nå er blitt registrert i Kursbok4-objektet.

Oppgave 2

Nedenfor ser du en skisse i pseudokode av klassen Konto. Din oppgave er å erstatte pseudokoden med java-instruksjoner. NB! De to siste metodene er frivillige å ta med.


<  nødvendige import-setning(er)  >

public class Konto
{
    <  Datafeltene for kontoinnehavers navn, kontornummer og saldo. >

    <  Kontruktør som skal gi startverdier til ALLE datafeltene  >

    <  set-metode for kontoinnehaverens navn >

    <  get-metode for kontoinnehaverens navn, kontonummer og saldo  >

    <  Kontoutskrifts-metode, som skriver ut kontoinnehaverens
       navn, kontonummer og saldo i et dialogvindu. >

    <  Metode som setter inn et beløp på kontoen.
       Beløpets størrelse skal tas imot via en parameter til metoden.
       Metoden skal returnere en tekst som inneholder informasjon om
       den nye saldoen.  >

    <  Metode som tar ut et beløp fra kontoen, under forutsetning av
       at det er dekning for beløpet.
       Uttaks-beløpets størrelse skal tas imot via en parameter til metoden.
       Hvis det er dekning på kontoen, skal metoden returnere en tekst
       med informasjon om den nye saldoen. Hvis  det ikke er dekning,
       skal den returnerte teksten inneholde informasjon om det. >

} // end of class Konto

Nedenfor ser du en skisse hovedprogrammet som du skal bruke til å teste ut klassen Konto. Din oppgave er også her å erstatte pseudokoden med java-instruksjoner.

<  nødvendige import-setning(er)  >

public class Kontotest
{
  public static void main(String[] args)
  {
    <  Opprett to Konto-objekter, som ved opprettelsen blir tilført
       hvert sitt navn, hvert sitt kontonummer og hver sin saldo. >

    <  Test ut ALLE metodene du har laget i Konto-klassen på
       Konto-objektene. Skriv resultatene ut på skjermen.
       Bruk dialogvinduer til både innlesing og utskrift. >

  }
} // end of class Kontotest

NB! Klassene må skrives på hver sin fil. Opprett en mappe som heter Konto, og legg begge filene i den.

Oppgave 3: Veksleautomat

Skriv et program som finner ut hva som skal gis tilbake av vekslepenger når det betales med en hundrelapp for et beløp som er mindre enn 100 kroner. Beløpet som skal betales skal programmet lese inn. Du kan forutsette at beløpet er avrundet til nærmeste krone. Vekslepenger skal angis i form av en utskrift. De skal være i størst mulige myntenheter. Myntenheter som ikke er med i tilbakebetalingen skal ikke tas med i utskriften. (Utskriften skal f.eks. ikke inneholde noe slikt som "0 5-kroner".) Lag også utskriften slik at den skiller mellom entall og flertall på den måten at det skrives f.eks. "1 1-krone", men "2 1-kroner". Dersom f.eks. beløpet som skal betales er kr. 27.00, skal utskriften være omtrent som følger:

Tilbake:
1 50-lapp
1 20-krone
2 1-kroner

(Hint: Leser du inn beløpet som et desimaltall, vil du da få bruk for å typekonvertere til heltall ved å skrive (int) foran det som skal konverteres. Bruk operatorene / og % for suksessivt å finne ut hvor mange det blir av 50-lapper, 20-kroner etc.)

Ekstra utfordring: Modifiser programmet slik at korrekt avrunding til nærmeste krone blir foretatt på tilbakebetalingsbeløpet. (En kan da skrive inn vilkårlige beløp opp til 100.) Utvid programmet slik at det ikke er begrenset til beløp under 100 kr. Da må innbetalt beløp leses inn i tillegg til beløpet som skal betales. Dessuten må du i tillegg til 50-lapp ta med de andre seddeltypene.

Løsningsforslag

Kursbok4.java
Kursboktest4.java
Konto.java
Kontotest.java
Veksleautomat.java
VeksleautomatX.java