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); }