abstrakter Datentyp: Operationen mit Zusicherungen
interface Map<K,V> {
void put (K key, V value);
V get (K key);
}
class TreeMap<K,V> implements Map<K,V> { ... }
class HashMap<K,V> implements Map<K,V> { ... }
...ist aus der Mathematik längst bekannt:
interface Halbgruppe<M> { M mal (M x, M y); }
interface Monoid<M> extends Halbgruppe<M>
{ M eins (); }
interface Gruppe<M> extends Monoid<M>
{ M inverse (M x); }