/** * Copyright (c): Uwe Schmidt, FH Wedel * * You may study, modify and distribute this source code * FOR NON-COMMERCIAL PURPOSES ONLY. * This copyright message has to remain unchanged. * * Note that this document is provided 'as is', * WITHOUT WARRANTY of any kind either expressed or implied. */ /** * * @author Uwe Schmidt * * eine Klasse fuer natuerliche Zahlen * mit den Ordnungsoperationen ==, !=, >=, >, <=, < * * die Ordnungsoperationen sind z.B. nicht * in der Klasse Integer aus dem JDK definiert * daher koennen Objekte aus Integer z.B. nicht * in allgemeine geordnete verkette Listen oder * allgemeinen binaeren Baeumen * gespeichert werden. * */ //-------------------- public class Nat0 implements Ordering { //-------------------- // die Variable fuer die Zahl protected long n; //-------------------- // die Konstruktoren public Nat0() { n = 0; } public Nat0(long n) { assert n >= 0 : "negative argument"; this.n = n; } public Nat0(int n) { this((long)n); } //-------------------- // die Zugriffs-Funktionen public int intValue() { return (int)n; } public long longValue() { return n; } //-------------------- // eine Hilfsfunktion // zur Typueberpruefung protected void assertNat0(Object o2) { assert (o2 instanceof Nat0) : "not a Nat0 object"; } //-------------------- // die Vergleichsfunktionen // alle 6 aus der Schnittstelle // muessen implementiert werden public boolean eq(Object o2) { assertNat0(o2); return n == ((Nat0)o2).n; } public boolean ge(Object o2) { assertNat0(o2); return n >= ((Nat0)o2).n; } public boolean gr(Object o2) { assertNat0(o2); return n > ((Nat0)o2).n; } public boolean ne(Object o2) { return ! eq(o2); } public boolean le(Object o2) { return ! gr(o2); } public boolean lt(Object o2) { return ! ge(o2); } } //--------------------