Ein geschütztes Objekt wird mittels
protected type Name is
Genauso wie Tasks besitzen geschützte Objekte auch einen Implementierungsteil. Dieser beinhaltet die Implementierung der definierten Operationen; er kann aber auch etwa zusätzliche, lokale Unterprogramme enthalten.
Ein einfaches Beispiel ist:
protected type V is
function Lies return Wert;
procedure Schreib(neuer_Wert: Wert);
private
Datum: Wert;
end V;
protected body V is
function Lies return Wert is
begin
return Datum;
end Lies;
procedure Schreib(neuer_Wert: Wert) is
begin
Datum := neuer_Wert;
end Schreib;
end V;
Bei geschützten Records ist gewährleistet, daß die definierten Operationen serialisiert werden, d.h., daß nie gleichzeitig auf die geschützten Daten zugegriffen werden kann.