/** * MÃ¥lbar-interfacet */ public interface Maalbar { double maal(); } /** * Leilighet-klassen */ public class Leilighet implements Maalbar { private double areal; public Leilighet(double areal) { this.areal = areal; } public double maal() { return areal; } } /** * Bankkonto-klassen */ public class Bankkonto implements Maalbar, Comparable { private double saldo; public Bankkonto(double saldo) { this.saldo = saldo; } public double maal() { return saldo; } @Override public boolean equals(Object obj) { if (obj instanceof Bankkonto) { Bankkonto konto = (Bankkonto) obj; return saldo == konto.saldo; } else { throw new IllegalArgumentException("En bankkonto kan kun sammenlignes med en annen bankkonto"); } } public int compareTo(Bankkonto konto) { if (saldo < konto.saldo) { return -1; } else if (saldo == konto.saldo) { return 0; } else // (saldo > konto.saldo) { return 1; } } } /** * Hovedprogrammet */ public class Hoved { public static double snitt(Maalbar[] objekter) { double total = 0; for (Maalbar objekt : objekter) { total = total + objekt.maal(); } return total / objekter.length; } public static void main(String[] args) { Bankkonto konto = new Bankkonto(500.50); Bankkonto annenKonto = new Bankkonto(1200.75); Maalbar[] kontoer = { konto, annenKonto }; System.out.printf("\nSnittsaldo for kontoer er %.2f kr\n", snitt(kontoer)); Maalbar[] leiligheter = { new Leilighet(45.0), new Leilighet(83.5) }; System.out.printf("\nSnittareal for leiligheter er %.2f kvadratmeter\n", snitt(leiligheter)); } }