Du skal definere et klassehierarki som kan brukes til å lagre informasjon om forskjellige typer bøker. (Den informasjon som er valgt her, ville neppe samsvare med den informasjon en ville registrere i biblioteksammenheng. Den er bare valgt for å få til en passende oppgave.) Klassene som hierarkiet skal bestå av er nevnt etter beskrivelsen av hvilken informasjon som skal lagres for de forskjellige boktyper.
For alle typer bøker skal det lagres følgende informasjon:
I tillegg skal det lagres litt forskjellig informasjon avhengig av typen bok.
For skolebøker skal det lagres
For fagbøker skal det lagres
For alle romaner skal det lagres
I tillegg skal det for romaner, avhengig av dens opphavsland lagres følgende:
For norske romaner:
For utenlandske romaner:
Definer klassene Bok, Skolebok, Fagbok, Roman, NorskRoman
og UtenlandskRoman
svarende til de boktypene som er nevnt.
Klassene Bok
og
Roman
skal være abstrakte klasser. De har bare som
formål å inneholde det som er felles for de boktyper som deres ikke-abstrakte
subklasser representerer. De andre klassene skal representere hver sin boktype
av dem som er nevnt ovenfor. De skal defineres slik at data som er felles for
flere typer i størst mulig grad blir arvet. Alle klassene skal ha en konstruktør
som gir initialverdier til datafeltene ved hjelp av parametre. Dessuten skal
alle klassene ha en toString
-metode som returnerer
en tekststreng med de data som er lagret for boka.
Alle bokobjektene som blir opprettet (instansiert) av de nevnte typene
skal kjedes sammen i én sammenhengende liste.
Bok
-klassen må derfor inneholde en peker til neste
Bok
-objekt i lista. (Med
Bok
-objekt menes her et objekt av en av de nevnte
ikke-abstrakte subklasse-typene. Husk at et subklasse-objekt regnes også som
tilhørende superklasse-typen. I denne oppgaven vil derfor objekter av typene
Skolebok, Fagbok, NorskRoman
og
UtenlandskRoman
alle sammen bli oppfattet som
Bok
-objekter, siden de nevnte klassene må være
subklasser (direkte eller indirekte) til klassen Bok
.)
Nedenfor finner du en skisse av klassen
Bokregister
som skal representere en
sammenkjedet liste av Bok
-objekter.
public class Bokregister { private Bok første; //registrerer et bokobjekt public void settInn( Bok ny ) { //Setter inn Bok-objektet ny i lista av Bok-objekter. } //utskrift av innhold i bokliste public void skrivListe( JTextArea bøker ) { //Gjennomløper lista av Bok-objekter og tilføyer i tekstområdet //bøker informasjonen som er lagret om hver enkelt bok. } }
Programmer metodene settInn
og
skrivListe
. I den første av disse kan du
selv velge hvor i lista du vil sette inn det nye objektet: forrest, bakerst
eller et annet sted.
Programmer et enkelt brukergrensesnitt som gjør det mulig å lagre og vise bokinformasjon i en bokliste av den type du har programmert i de to første oppgavene. Nedenfor er det vist et bilde av en mulig utforming av programmets brukervindu.
NB! Innlesing av data til programmet skal gjøres på en "sikker" måte, det vil si at programmet skal behandle mulige unntakssituasjoner (exceptions) som kan oppstå fordi tekstfelter ikke er fylt ut riktig av brukeren.