Bibliotek med bøker og lånere

Hele eksamen, alle hjelpemidler

Bibliotek med bøker og lånere

I denne oppgaven skal du lage et program for administrasjon av et bibliotek ved hjelp av to klasser: Bok og Låner. Klassene Bok og Låner skal inneholde funksjonalitet for utlån og tilbakelevering av bøker. Klassene er definert med følgende egenskaper og metoder:

Merk: Klassene under er beskrevet med navn i camelCase og norske bokstaver (æ, ø, å). Du kan bruke det som er naturlig i din løsning.

Klassen Bok:

  • tittel : string – tittelen på boken
  • forfatter : string – forfatteren av boken
  • utlånt : Låner – hvem boken er utlånt til, om den er det
  • visInfo() – viser informasjon om boken (tittel, forfatter, om den er utlånt eller ikke)

Klassen Låner:

  • lånerID : int – unik ID for låneren
  • lånteBøker : [Bok] – referanser til bøkene som er lånt av denne låneren
  • lånBok(Bok) – låner en bok og merker den som utlånt
  • leverTilbakeBok(Bok) – returnerer den lånte boken og markerer den som levert tilbake
Hjelpemiddelkrav: For hånd

Lag et klassediagram som viser klassene Bok og Låner med egenskapene og metodene som er beskrevet over. Forklar og tegn riktig relasjon mellom de to klassene. (Tips: Klassediagrammet kan lagres og leveres inn som pdf-dokument eller bildefil.)

Hjelpemiddelkrav: Krever PC

Med utgangspunkt i klassediagrammet du laget i oppgave a: Implementer klassene Bok og Låner i ditt programmeringsspråk.

Hjelpemiddelkrav: Krever PC

Implementer et testprogram for klassene Bok og Låner som gjør følgende:

oppretter noen bøker og låner dem ut til en låner

tester at boken kan lånes ut og leveres tilbake korrekt

tester at det ikke er mulig å låne ut en bok som allerede er utlånt

Hjelpemiddelkrav: Krever PC

Implementer nødvendig håndtering av feil og unntak i programmet. Hvis du allerede har skrevet programmet slik at dette er håndtert, trenger du bare å påpeke dette i kommentarer i koden.

Fasit

Klassediagram med Bok (tittel, forfatter, utlånt / visInfo) og Låner (lånerID, lånteBøker / lånBok, leverTilbakeBok). Relasjonen er en toveis assosiasjon: en låner kan ha 0..* bøker, og en bok er lånt ut til 0..1 låner. Det er ikke komposisjon, fordi bøkene finnes uavhengig av låneren.

LøsningsforslagKI-generert

Klassediagram for Bok og Låner med egenskaper, metoder og assosiasjonen utlån med multiplisitet 0..* og 0..1

Klassene. Hver klasse tegnes som en boks med tre felt: klassenavnet, egenskapene med datatype og metodene med parametertype. Egenskapene er merket - (private), slik at de bare kan endres gjennom metodene. Metodene er merket + (offentlige).

  • Bok har tittel og forfatter av typen string og utlånt, som er en referanse til den låneren som har boken, eller ingenting hvis boken er ledig. Metoden visInfo() viser tittel, forfatter og om boken er utlånt.
  • Låner har lånerID av typen int og lånteBøker, som er en liste med referanser til Bok-objekter. Metoden lånBok(Bok) legger boken i lista og setter utlånt på boken til låneren. leverTilbakeBok(Bok) fjerner boken fra lista og setter utlånt tilbake til ingenting.

Relasjonen. Klassene er knyttet sammen med en assosiasjon, tegnet som en heltrukket linje mellom boksene. Assosiasjonen går begge veier: Låner kjenner til bøkene sine gjennom lånteBøker, og Bok kjenner til låneren sin gjennom utlånt. Derfor har linjen ingen pilspiss.

Multiplisiteten står ved hver ende av linjen:

  • 0..* ved Bok: en låner kan ha lånt ingen, én eller mange bøker.
  • 0..1 ved Låner: en bok er enten ledig eller lånt ut til nøyaktig én låner.

Hvorfor ikke komposisjon eller arv? Komposisjon ville betydd at bøkene bare finnes inne i låneren og forsvinner sammen med den. Slik er det ikke. En bok finnes i biblioteket før den lånes ut og etter at den er levert tilbake, og den kan lånes av mange lånere etter hverandre. Arv passer heller ikke, fordi en bok ikke er en spesiell type låner eller omvendt. Aggregering (hul rombe ved Låner) kan forsvares, siden låneren «har» bøker som lever uavhengig av den. Men relasjonen er midlertidig og gjelder bare så lenge boken er utlånt, så en vanlig assosiasjon beskriver den best.

Sensorveiledning

Oppgaven gir til sammen 12 poeng

3 poeng

Det gis uttelling for klassene, egenskaper og metoder, riktig forklart relasjon og riktig tegnet relasjon.

3 poeng

Det gis uttelling for implementerte klasser med riktig konstruksjon/instansiering/initialisering, egenskaper og metoder.

3 poeng

Det gis uttelling for hvert av de tre punktene som skal testes.

3 poeng

Det gis uttelling for håndtering av feil og unntak i inntil tre nivåer etter sensors skjønn.

Forstå oppgaven med en KI

Du får en ferdig tekst du limer inn i den KI-chatboten du bruker. Teksten inneholder oppgaven og en instruks om at chatboten skal hjelpe deg å tenke selv — stille spørsmål, gi ett hint av gangen og la deg gjøre regningen.

Anbefalt. Chatboten får beskjed om å bruke det til å veilede deg riktig vei — ikke til å røpe svaret. Du kan slå det av hvis du vil være helt sikker på at ingenting lekker.

Hva du bør vite
  • Ingenting sendes herfra. Teksten kopieres bare til utklippstavla på enheten din. Det du limer inn i en chatbot, går til den tjenesten — og de har sine egne regler for hva de lagrer.
  • Ikke lim inn personopplysninger — navn, skole eller noe annet om deg selv eller andre. Oppgaveteksten holder.
  • KI kan ta feil, også i informasjonsteknologi. Sjekk alltid mot løsningsforslaget her på siden.
  • Er du usikker på om du har lov til å bruke KI på skolearbeidet ditt, spør læreren din først.

Tastatursnarveier

Navigasjon

⌘K / Ctrl+K
Åpne søk
G F
Gå til Fag
G E
Gå til Eksamener
G T
Gå til Temaer
G K
Gå til Kompetansemål
G H
Hjem
?
Vis snarveier

I oppgave

←/→ · J/K
Forrige / neste oppgave
0
Marker som ikke prøvd
1
Marker som prøvd
2
Marker som trenger hjelp
3
Marker som ferdig
S
Vis / skjul løsningsforslag
A
Legg til i liste
N
Skriv notat
Esc
Tilbake / avslutt