Referencia de la Clase classNode

Nodo clase. Más...

#include <classNode.h>

Diagrama de herencias de classNode
runNode

Métodos públicos

 classNode (classNode *node)
 
 classNode (runNode *id, runNode *body, runNode *extends=NULL)
 
void run ()
 
runNodenewcall (runNode *params)
 
sTableinsideTable () const
 
classNodegetExtendClass ()
 
runNodegetID ()
 
string name ()
 
runNodegetMethod (runNode *key)
 
refNodegetMethodRef (runNode *key)
 
void setMethod (runNode *key, runNode *func)
 
runNodegetFromStatic (runNode *key)
 
void setFromStatic (runNode *key, runNode *val)
 
runNodetoObject ()
 
- Métodos públicos heredados desde runNode
 runNode (string str)
 
 runNode ()
 
virtual void addRef ()
 
virtual void rmRef ()
 
virtual bool is_print () const
 
virtual bool is_runlist () const
 
virtual bool is_string () const
 
string getPtrString ()
 

Otros miembros heredados

- Métodos públicos estáticos heredados desde runNode
static bool compare (runNode *node1, runNode *node2, int op=0)
 

Descripción detallada

Nodo clase.

Un nodo clase representa la definición de una clase. Una clase es una estructura funcional utilizada en la programación orientada a objetos.

Un nodo clase sirve como interfaz para definir y manipular las clases en ejecución.

Todo nodo clase tiene un contexto de tablas de símbolos donde se referencia a los atributos y métodos de la misma.

Para inicializar un nodo clase se precisa del identificador de la misma y un cuerpo.

El cuerpo de la clase consiste en una serie de sentencias, que por limitaciones de gramática sólo pueden ser declaraciones de funciones o variables.

La ejecución de un nodo clase se corresponde con la declaración de la misma. Primero crea una referencia a si misma en la tabla de clases activa. Luego crea un nuevo contexto de tablas de símbolos, que usará de forma interna. Para finalizar cambia el contexto activo al interno y se lleva a cabo la ejecución del cuerpo.

Los nodos funciones declarados en el cuerpo de la clase serán referenciados desde la tabla de funciones de la clase y son considerados los métodos de la misma. De igual forma las variables son referenciadas mediante la tabla de variables y son consideradas como los atributos.

Una determinada clase puede extender a otra, lo que significa que heredará sus métodos y atributos.

Los nodos clase presentan un mecanismo para crear nuevas instancias de los mismos denominadas objetos. Este mecanismo es utilizado por nodos como el nodo "nueva instancia" (

Ver también
newNode). Cuando se crear una nueva instancia se genera una copia de la tabla de símbolos de variables en un nodo de tipo objeto Este objeto además referencia a la clase para acceder a los métodos. El objeto se puede asignar a un nodo id como si fuera un tipo de dato, guardándose asi una referencia en la tabla de variables activa.

Las clases disponen de un contexto interno con tablas para funciones y variables que será aplicables a los objetos como atributos y métodos. Además disponen de un contexto estático que guarda los métodos y atributos aplicables a la propia clase.

Documentación del constructor y destructor

classNode::classNode ( classNode node)

Constructor copia. Crea un nodo clase a partir de otro. Para ello referencia al cuerpo y al identificador del nodo clase dado, y copia la tabla de símbolos interna.

classNode::classNode ( runNode id,
runNode body,
runNode extends = NULL 
)

Constructor que inicializa un nodo clase a partir de un nodo identificador y un nodo cuerpo.

Parámetros
idIdentificador de la clase.
bodyCuerpo de la clase.
extendsClase de la que extiende si es el caso.

Documentación de las funciones miembro

classNode* classNode::getExtendClass ( )
inline

Obtiene la clase padre con la que fue inicializada.

Devuelve
Clase padre.
runNode * classNode::getFromStatic ( runNode key)

Obtiene un método estático de la clase a partir de una clave.

Parámetros
keyNombre del método.
Devuelve
Método estático correspondiente a la clave.
runNode* classNode::getID ( )
inline

Obtiene el identificador con el que fue inicializada.

Devuelve
ID de la clase.
runNode * classNode::getMethod ( runNode key)

A partir de una clave obtiene el método cuyo identificador se corresponde con la misma. Si no existe se devuelve NULL.

Parámetros
keyNombre del método.
Devuelve
Método correspondiente a la clave.
refNode * classNode::getMethodRef ( runNode key)

A partir de una clave obtiene la referencia al método cuyo identificador se corresponde con la misma. Si no existe se devuelve NULL.

Parámetros
keyNombre del método.
Devuelve
Referencia al método correspondietne a la clave.
sTable* classNode::insideTable ( ) const
inline

Devuelve el contexto interno del nodo clase.

Devuelve
Contexto interno.
string classNode::name ( )
inline

Obtiene el identificador de la clase como una cadena de caracteres.

Devuelve
ID de la clase como cadena de caracteres.
runNode * classNode::newcall ( runNode params)

Crea y devuelve una instancia de la clase. Para ello copia la tabla de variables del contexto de la clase en un nodo objeto, y busca una función en la tabla de funciones correspondiente al nombre de la clase. Esta función, considerada constructor, será ejecutada con los parámetros indicados.

void classNode::run ( )
virtual

Lleva a cabo la ejecución del nodo clase correspondiente a la declaración de la misma. Para ello crea una referencia en la tabla de clases activa a si misma, genera el contexto interno, y luego, tras cambiar el contexto en uso, ejecuta el cuerpo.

Implementa runNode.

void classNode::setFromStatic ( runNode key,
runNode val 
)

Asocia una función como método estático de la clase con el identificador dado.

Parámetros
keyClave que se utilizará como identificador.
funcFunción que se asociará como método estático.
void classNode::setMethod ( runNode key,
runNode func 
)

Asocia una función como método de la clase con el identificador dado.

Parámetros
keyClave que se utilizará como identificador.
funcFunción que se asociará como método.
runNode * classNode::toObject ( )

Devuelve un objeto con una tabla de símbolos correspondiente a la tabla de variables de la clase. Además asocia la clase al objeto.

Devuelve
Objeto instancia de la clase.

La documentación para esta clase fue generada a partir de los siguientes ficheros:
  • trunk/src/run/table/classNode.h
  • trunk/src/run/table/classNode.cpp