import java.util.ArrayList; import java.util.Collections; /******************* Oppgave 1a ********************/ class Bok implements Media{ private String tittel; Bok(String tittel){ this.tittel = tittel; } public String hentTittel(){ return tittel; } } class Plate{ private String tittel; Plate(String tittel){ this.tittel = tittel; } public String hentTittel(){ return tittel; } } /******************* Oppgave 1b ********************/ class BokHylle{ Bok b; public void settInn(Bok b){ if(b == null){ // sjekker om det er noe i beholderen fra f?r av this.b = b; } } public Bok taUt(){ Bok b2 = b; b = null; // t?mmer beholderen return b2; } } class PlateSamling{ Plate p; public void settInn(Plate p){ if(p == null){ // sjekker om det er noe i beholderen fra f?r av this.p = p; } } public Plate taUt(){ Plate p2 = p; p = null; // t?mmer beholderen return p2; } } /******************* Oppgave 1c ********************/ class GeneriskBeholder { T objekt; public void settInn(T objekt){ if(objekt == null){ // sjekker om det er noe i beholderen fra f?r av this.objekt = objekt; } } public T taUt(){ T t = objekt; objekt = null; return t; } } /******************* Oppgave 1d ********************/ class GeneriskBeholder2 { ArrayList objekter = new ArrayList(10); public void settInn(T objekt){ if(objekter.size() != 10){ // sjekker om det er plass i beholderen objekter.add(objekt); } } public T taUt(){ if(objekter.size() != 0){ // sjekker om beholderen er tom return objekter.remove(0); } return null; } } /******************* Oppgave 2a ********************/ interface Media{ public String hentTittel(); } /******************* Oppgave 2b ********************/ class Bok2 implements Media{ private String tittel; Bok2(String tittel){ this.tittel = tittel; } public String hentTittel(){ return tittel; } } class Plate2 implements Media{ private String tittel; Plate2(String tittel){ this.tittel = tittel; } public String hentTittel(){ return tittel; } } /******************* Oppgave 2c ********************/ class GeneriskBeholder3 { ArrayList objekter = new ArrayList(10); public void settInn(T objekt){ if(objekter.size() != 10){ // sjekker om det er plass i beholderen objekter.add(objekt); } } public T taUt(){ if(objekter.size() != 0){ // sjekker om beholderen er tom return objekter.remove(0); } return null; } public void skrivUtAlle(){ for(T objekt: objekter){ System.out.println(objekt.hentTittel()); } } } /******************* Oppgave 3a ********************/ interface Media2 extends Comparable{ public String hentTittel(); } /******************* Oppgave 3b ********************/ class Bok3 implements Media2{ private String tittel; Bok3(String tittel){ this.tittel = tittel; } public String hentTittel(){ return tittel; } public int compareTo(Media2 m){ return this.hentTittel().compareTo(m.hentTittel()); } } class Plate3 implements Media2{ private String tittel; Plate3(String tittel){ this.tittel = tittel; } public String hentTittel(){ return tittel; } public int compareTo(Media2 m){ return this.hentTittel().compareTo(m.hentTittel()); } } /******************* Oppgave 3c ********************/ class GeneriskBeholder4 { ArrayList objekter = new ArrayList(10); public void settInn(T objekt){ if(objekter.size() != 10){ // sjekker om det er plass i beholderen objekter.add(objekt); Collections.sort(objekter); } } public T taUt(){ if(objekter.size() != 0){ // sjekker om beholderen er tom return objekter.remove(0); } return null; } public void skrivUtAlle(){ for(T objekt: objekter){ System.out.println(objekt.hentTittel()); } } }