( mrev | 2008. 12. 25., cs – 22:01 )

Példa:


class proba(object)

function main()
local o:=probaNew()
local clid:=getclassid(o)

    o:liststruct //régi struktúrta

    classAttrib(clid,"hoho")
    o:liststruct //új struktúrta (hoho-val bővítve)

    //az itteni o még a régi struktúrájú,
    //az attribútumokat tartalmazó tömbben nincs hely a hoho-nak    
    //o:hoho:="próba szerencse" //-> size error
    
    o:=probaNew()
    o:hoho:="próba szerencse" //új objektum, új struktúrával, Ok

Nem lehetne az Object abstract-ba felvenni egy addAttrib és addMethod metódust?

Nem. Látod a példából, hogy az attribútum hozzáadás/létrehozás az osztályművelet. A classAttrib az osztálydefinícióhoz hozzáad egy attribútumot, a korábban létrehozott objektumokat ez visszamenőleg nem érinti, az újak viszont a módosított struktrúrával keletkeznek.

Menet közben változtatgatni az osztályok struktúráit nem egy szokásos dolog, bár elképzelhető, hogy néha van értelme. De inkább csak úgy, hogy a program runtime definiál egy osztályt, és amikor kész, akkor többet már nem módosítja, csak használja.

Vannak nyelvek, amikben az objektumokat lehet egyedileg bővíteni ezzel-azzal. A CCC-ben nem lehet.

--
CCC3