8.1. Objektumok
8.2. A CLU és az objektum-orientáltság
A CLU objektum-elvű programozási nyelv - elindult azon az úton, mely a mai objektum-orientált nyelvekhez vezetett, de csak az első lépést tette meg - adatelrejtés, és objektumkezelés. De a legnagyobb lépést, az öröklődés bevezetését már nem tette meg.
(Érdekes módon a fogalom már létezett a Simula 67-ben - osztályok, öröklődés,
stb. -, melyet a szerzők ismertek, mégsem építették
be a nyelvbe, mert saját bevallásuk szerint az öröklődés nem fedte pontosan
azt a fogalmat (!), melyre szükségük lett volna. A SmallTalk is létezett
már ebben az időben - ez tekinthető talán a mai OOP ősének -, azonban azt
a szerzők nem ismerték akkor. Lehet, hogy ennek köszönhetjük a genericet.)
array[T]$newművelet például létrehoz az objektum-univerzumban egy új tömb objektumot. Elméletben az objektumok örök életűek, a valóságban azonban a CLU szemétgyűjtést végez, és felszabadítja azokat a memóriaterületeket, amelyekre nem történik hivatkozás. Egy objektum akkor elérhető, ha a program valamely változója vagy más elérhető objektum hivatkozik rá. Minden objektum különbözik a többitől és egyedi névvel rendelkezik, amellyel hivatkozni lehet rá. Egy objektum értéke nem tartalmazhat fizikailag másik objektumot, csak a másik objektumra vonatkozó referenciát (a másik objektum nevét). Ezzel lehetséges ciklikus hivatkozási láncot építeni az objektumok között, azaz egy objektum közvetve vagy közvetlenül hivatkozhat önmagára. Így pointerek explicit használata nélkül definiálhatunk rekurzív adatstruktúrákat. Több objektum hivatkozhat ugyanarra az objektumra, ekkor a többszörösen hivatkozott objektumot osztottnak nevezzük.
A CLU-ban az objektumok két nagy csoportra oszthatók: