3.1.3. Implementace abstraktních datových typů

V prostředí objektově orientovaných programovacích jazyků jsou pro definici abstraktních datových typů k dispozici třídy a v některých jazycích máme dokonce přímo konstrukce, umožňující definovat abstraktní rozhraní.

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:

public class Time { 
   public Time(int hours, int minutes) { 
      this.hours = hours; this.minutes = minutes; 
   } 
 
   public int getHours() { return hours; } 
 
   public int getMinutes() { return minutes; } 
 
   public void increment(int delta) { 
      int newMins = minutes + delta; 
      minutes = newMins % 60; 
      hours  += newMins / 60; 
   }
   private int hours; 
   private int minutes; 
}

Povšimněte si, že třída Time obsahuje ve svých veřejných členech pouze metody getHours(), getMinutes() a increment(). Konstruktor createTime() je nahrazen skutečným konstruktorem a samotná hodnota je vnitřně reprezentovaná dvojicí proměnných hours a minutes pro počet hodin a minut. Rozdíl ve vnitřní reprezentaci proti předchozí ukázce se navenek nijak viditelně neprojeví, neboť uživatel pracuje pouze s veřejnými metodami objektu.