http://www.adaconcept.com/programs/orokles/idozito.ads
with Ada.Calendar;
package Idozito is
-- Megjegyzesek:
-- Az Ada nyelv osztaly fogalmat gyakran felreertik, ezert most kulonboztessunk meg harom dolgot egymastol:
-- Ha szeretnenk, egy csomagot tekinthetunk (egyke) osztalynak is az allapotaival (valtozoival),
-- ahol a csomag torzse a konstruktor.... (megjegyzes: ha tobb egyforma csomagot szeretnenk, keszithetunk parameter nelkuli generic csomagot is...)
--
-- Azonban az osztaly fogalma az Ada nyelvhez kotodo terminologiaban teljesen mast jelent!
-- Az osztaly nem mas mint egy (jelolt) rekord tipus,
-- a rajta vegezheto specialis muveletekkel.
--
-- ez elter az 'Class fogalmatol, amely egy olyan "(tipus)halmazt" jelol, amely egy osztalyt es a belole szarmazo osszes osztalyt magaban foglalja
-- Figyeljuk meg, hogy maganak az Idozito csomagnak nincsen allapota (nincsenek inicializalo utasitasok a csomag torzseben)!
-- Ahhoz, hogy az Idozito_Tipus muveletei a kesobbiekben a szarmaztatas soran oroklodjenek,
-- a tipus delkaraciojanak egy csomag specifikaciojaban kell lennie.
type Idozito_Tipus is tagged private; -- lehetne nem jelolt tipus is a nyilvanos / publikus / reszleges nezete a tipusnak mig a teljes nezete jelolt...
procedure Inicializal(Idozito : out Idozito_Tipus);
procedure Start(Idozito : in out Idozito_Tipus; Lejarati_Idotartam : Duration);
procedure Frissit(Idozito : in out Idozito_Tipus);
function Elindult(Idozito : Idozito_Tipus) return Boolean;
function Lejart(Idozito : Idozito_Tipus) return Boolean;
private
type Idozito_Tipus is tagged record
Elindult : Boolean; --| adhatnank "egyszeru" kezdoertekeket is ("konstruktor"),
Lejart : Boolean; --| vagy szarmaztathatnank az Ada.Finalization csomag valamely tipusabol is
Lejarati_Idopont : Ada.Calendar.Time; --| az utobbival kaphatunk "konstruktort", destruktort es keszithetunk sajat ertekadast is.
--| (megjegyzes: erdemes kiprobalni, hogy melyik pontosan mikor hivodik meg mielott hibas feltetelezesekkel elnenk, kulonosen igaz ez az Adjust -ra)
end record;
end Idozito;