import java.util.HashMap; // Skrevet av Stein Gjessing, 15. februar 2022 class BrukBibliotekEtterForelesning { public static void main(String[] args) { Bibliotek lilleBib = new Bibliotek(); lilleBib.leggTil(new Bok(123, "Ibsen"," N?r vi d?de v?gner")); lilleBib.leggTil(new Utl?nbarBok(234, "Nesb?", "Sn?mannen")); lilleBib.leggTil(new Utl?nbartAlbum(345, "Neil Young", "Harvest")); // Legg inn flere dokumenter her om du vil System.out.println("Petter l?ner Sn?mannen"); TilUtl?n l?neDok = lilleBib.l?n(234,"Petter"); if (l?neDok != null) { System.out.println("Petter leser boken"); System.out.println("Ole pr?ver ? l?ne samme bok"); TilUtl?n l?neDok2 = lilleBib.l?n(234,"Ole"); lilleBib.lever(l?neDok); System.out.println("Boken er lest og levert tilbake av Petter"); } System.out.println("Petter pr?ver ? l?ne Ibsen"); l?neDok = lilleBib.l?n(123,"Petter"); System.out.println("Petter pr?ver ? l?ne noe som ikke er i biblioteket"); l?neDok = lilleBib.l?n(456,"Petter"); // Nytt System.out.println("Ole l?ner Harvet"); l?neDok = lilleBib.l?n(345,"Ole"); if (l?neDok != null) { System.out.println("Ole spiller Harvest"); lilleBib.lever(l?neDok); System.out.println("Albumet er spilt og levert tilbake av Ole"); } // Og / eller skriv en kommandol?kke System.out.println(); System.out.println("Takk for at du brukte biblioteket"); } } class Bibliotek { private HashMap alleDok = new HashMap<>(); void leggTil(Dokument dok) { alleDok.put(String.valueOf(dok.dokNr), dok); } public TilUtl?n l?n(int nr, String navn) { Dokument dok = alleDok.get(String.valueOf(nr)); if (dok == null) System.out.println("Beklager, denne har vi ikke i biblioteket"); else if (! (dok instanceof TilUtl?n)) System.out.println("Beklager, denne l?ner vi ikke ut"); else { TilUtl?n l?n = ((TilUtl?n)dok).l?ne(navn); if (l?n == null) System.out.println("Beklager, den er allerede utl?nt"); else return l?n; } return null; } public void lever(TilUtl?n l?neDok){ l?neDok.leverTilbake(); } } class Dokument { public final int dokNr; Dokument(int dok) { dokNr = dok; } } class Bok extends Dokument { public final String forfatter; public final String tittel; Bok(int nr, String forfatter, String ttl){ super(nr); this.forfatter = forfatter; tittel = ttl; } } class Album extends Dokument { public final String artist; public final String tittel; Album(int nr, String artist, String ttl){ super(nr); this.artist = artist; tittel = ttl; } } interface TilUtl?n { public TilUtl?n l?ne(String l?ner); public void leverTilbake(); } // Vi skriver denne p? forelesningen 15. februar 2022 class Utl?nbartAlbum extends Album implements TilUtl?n { private String l?ner = null; Utl?nbartAlbum(int nr, String artist, String ttl){ super(nr,artist,ttl); } @Override public TilUtl?n l?ne(String navn) { if(l?ner != null) return null; l?ner = navn; return this; } @Override public void leverTilbake() {l?ner = null;} } class Utl?nbarBok extends Bok implements TilUtl?n { private String l?ner = null; Utl?nbarBok(int nr, String forfnavn, String tittel) { super(nr,forfnavn,tittel); } @Override public TilUtl?n l?ne(String navn) { if(l?ner != null) return null; l?ner = navn; return this; } @Override public void leverTilbake() {l?ner = null;} }