next up previous contents
Next: Iteratia ``loop'' Up: Extensii Previous: Maparea operator-string   Cuprins

Tipul ``class''

Introduce programarea pe obiecte in plint. De fapt in limbajul de baza exista notiunea de metoda si operatori, precum si de tipuri dinamice. O clasa este o variabila si un tip dinamic totodata. Tipul variabilei este ``class''; cand se creeaza o asemenea variabila, ea se seteaza a fi singleton, si toate operatiile posibile cu tipul ``class'' sunt invalidate. Practic este o variabila ``schilodita'', a carei singura menire este mentinerea unor tabele de mapari intre stringuri de operatori si nume de implementari de operatori (metode), intre nume de metode membru si nume de implementari de metode, precum si intre nume de date si o valoare implicita pentru toate ``obiectele clasei''.

Odata cu crearea variabile de tip ``class'', codul C al pluginului profita de ocazie si cunoscand numele variabilei, inregistreaza un nou tip, care este de fapt clasa obiectelor ce se vor instantia.

O clasa poate avea o clasa de baza, in care caz orice metoda membru a clasei de baza, care nu e ascunsa prin denumire unei metode omonime in clasa derivata, se poate apela prin obiectele clasei de baza, fara efort suplimentar. Practic, din perspectiva C++, toate metodele sunt virtuale. Un obiect are in timpul executiei o clasa curenta, si o clasa originala. Initial cele doua coincid; este posibil insa ca pe parcurs sa se faca ``cast'' la o clasa de baza, sau chiar din alta ierarhie. In acest moment, clasa curenta difera de cea originala; cu toate acestea orice apel de metoda se face din perspectiva clasei originale; in contrast, orice referire la date membru se face din perspectiva clasei curente. Pentru a apela nevirtual metodele clasei curente, se poate folosi data membru ``self'', care este un obiect alias ce are ca si clasa originala clasa curenta a obiectului container. La fel si operatorii, ca si metodele unei clase sunt virtuali.

Orice obiect instanta a unei clase de baza derivata are o data membru numita ``base'' care este un obiect.

Datele membru ``self'' si ``base'' sunt variabile readonly, a caror clasa curent si orginala coincid totdeauna; ele sunt obiecte alias la obiectul container.


next up previous contents
Next: Iteratia ``loop'' Up: Extensii Previous: Maparea operator-string   Cuprins
Sebastian Glita 2002-06-19