Az Alphard programozási nyelv

Objektum-orientált programozás

Az Alphard NEM objektum-orientált nyelv. Rendelkezik azonban objektum elvû tulajdonságokkal:

Hiányzik azonban az öröklõdés, a dinamikus kötés, nincs osztályhierarchia.

Objektum:

Az objektum egy generált tárolási hely vagy változó, amit absztrakt adattípusok adatainak tárolására használunk.

Hivatkozás és elérés:


Egy objektum komponenseire a szokásos hivatkozás: operátor.komponenes (pl.A.x). Az Alphard nem ezt a pontozásos hivatkozást támogatja közvetlenül, hanem egy komponens(objektum) formát (pl. x(A)). Egy kiértékelés több lépésben történik: <qualname>.<identifier> --> <identifier>(<qualname>) ahol <qualname> azonosítók egy tetszõleges sorozata (beleértve a speciális azonosítókat is).
Pl:
A.y --> y(A) Q.g[s.t].f --> f(q(Q)[t(s)])

Miután minden pont eltûnt, a szögletes zárójelek eltûntetése következik: <term>[<expression list>] --> &subscript(<term>,<expression list>)
Pl:
Q.g[s.t].f --> f(q(Q)[t(s)]) --> f(&subscript(g(Q),t(s)))

Természetesen ehhez a programozónak definiálnia kell az &subscript szelektort és a típus egy elérési algoritmusát.

Osztály (forma):

Minden új típus definiálása a form konstrukció segítségével történik. Egy típushoz adattagokat és mûveleteket definiálhatunk. Egy forma magában foglalja a típusunk specifikációját és implementációját. Készítésekor támaszkodhatunk a már megkonstruált formákra, és egyéb létezõ típusokra. A forma paraméterezhetõ, akár típussal is, ezáltal sablonokat (generic) hozhatunk létre.

Egységbezárás:

Az Alphard típus fogalma az absztrakt adattípusbók indul ki, azaz egy típusnak nem csak az adattagjait, hanem a hozzá tartozó mûveleteket is a típus egy tulajdonságának tartja. A forma specifikációs részében az adattagok mellett ezeket a mûveleteket is definiálhatjuk, és ezeket az adott típusú objektum részeként hívhatjuk. Mivel a specifikációs és implementációs részt különválasztották, ezért az adatelrejtés elve is megvalósul, az implementációs rész kívulrõl nem elérhetõ, de érdekes módon az implementáció elõl is el vannak rejtve a specifikáció változói: ha használni akarjuk õket, akkor újra definiálni kell azokat.