Her følger en løsning: Her er endvidere et link til det rene Java program .interface Comparable {
boolean lessThan(Comparable other);
boolean lessThanOrEqual(Comparable other);
boolean greaterThan(Comparable other);
boolean greaterThanOrEqual(Comparable other);
}
class Konto {
protected double RenteSats = 0.02; // en static erklæring er mere naturlig
protected String navn;
protected double saldo;
public Konto(String ejer) {
navn = ejer;
saldo = 0;
}
public void hæv ( double beløb ) {
saldo = saldo - beløb;
}
public void indsæt ( double beløb) {
saldo = saldo + beløb;
}
public void overførFra(double beløb, Konto fra) {
fra.hæv(beløb);
indsæt(beløb);
}
public void tilskrivRente() {
saldo = saldo + saldo * RenteSats;
}
public String toString() {
return navn + "'s konto indeholder "
+ saldo + " kroner";
}
} // Konto
class CompKonto extends Konto implements Comparable {
public CompKonto(String nytNavn) {
super(nytNavn);
}
// redefinition af equals fra klassen Object
public boolean equals(CompKonto other){
return (this.saldo == other.saldo);
}
public boolean lessThan(Comparable other){
return (this.saldo < ((CompKonto)other).saldo);
}
public boolean lessThanOrEqual(Comparable other){
return (this.lessThan(other) || this.equals((CompKonto)other));
// NB: hvis vi ikke caster til CompKonto i equals bliver equals i Object aktiveret
// Konsekvens af overloadning. Covarians får aldrig en chance
}
public boolean greaterThan(Comparable other){
return (! this.lessThanOrEqual(other));
}
public boolean greaterThanOrEqual(Comparable other){
return (! this.lessThan(other));
}
}
public class KontoComparison {
public static void main( String[] args ) {
CompKonto konto1 = new CompKonto("Jens");
CompKonto konto2 = new CompKonto("Peter");
konto1.indsæt(600);
konto2.indsæt(500);
if (konto1.equals(konto2) )
System.out.println("konto1 er lig med konto2");
else
System.out.println("konto1 IKKE lig med konto2");
if (konto1.lessThan(konto2) )
System.out.println("konto1 mindre end konto2");
else
System.out.println("konto1 IKKE mindre end konto2");
if (konto1.lessThanOrEqual(konto2) )
System.out.println("konto1 mindre end eller lig med konto2");
else
System.out.println("konto1 IKKE mindre end eller lig med konto2");
if (konto1.greaterThan(konto2) )
System.out.println("konto1 større end konto2");
else
System.out.println("konto1 IKKE større end konto2");
if (konto1.greaterThanOrEqual(konto2) )
System.out.println("konto1 større end eller lig med konto2");
else
System.out.println("konto1 IKKE større end eller lig med konto2");
}
}