Plantillas Base

Superior  Previo  Próximo

El CTF consiste en una gran cantidad de plantillas base. Cada plantilla base transforma los aspectos particulares del UML a las partes correspondientes de los lenguajes orientados a objetos.

 

La siguiente tabla lista y describe brevemente las plantillas base que se usan en el CTF. 

 

Plantilla

Descripción

Attribute

Plantilla de alto nivel para generar variables miembros desde los atributos UML  

Attribute Declaration

Usada por la plantilla Attribute para generar la declaración de las variables miembro 

Attribute Notes

Usada por la plantilla Attribute para generar notas de variables miembro 

Class

Plantilla de alto nivel para generar clases desde las clases UML 

Class Base

Usada por la plantilla Class para generar un nombre de clase base en la lista de herencia de una clase derivada 

Class Body

Usada por la plantilla Class para generar el cuerpo de una clase 

Class Declaration

Usada por la plantilla Class para generar la declaración de una clase 

Class Interface

Usada por la plantilla Class para generar un nombre de interfaz en la lista de herencia de una clase derivada 

Class Notes

Usada por la plantilla Class para generar las notas de las clases 

File

Plantilla de alto nivel para generar el archivo fuente. Para lenguajes tales como C++ corresponde al archivo de cabecera.  

Import Section

Usado en la plantilla File para generar dependencias externas  

Linked Attribute

Plantilla de alto nivel para generar los atributos derivados desde las asociaciones UML.  

Linked Attribute Notes

Usado por la plantilla Linked Attribute para generar las notas de los atributos 

Linked Attribute Declaration

Usada por la plantilla Linked Attribute para generar la declaración de los atributos 

Linked Class Base

Usada por una plantilla de Clase para generar un nombre de clase base en la lista de herencia de una clase derivada para un elemento de clase en el modelo que es un padre de la clase actual.

Linked Class Interface

Usada por una plantilla de Clase para generar un nombre de interfaz en la lista de herencia de una clase derivada para un elemento de interfaz en el modelo que es un padre de la clase actual. 

Namespace

Plantilla de alto nivel para generar Espacios de Nombres para los paquetes UML (aunque no todos los lenguajes tienen espacios de nombres, esta plantilla se puede usar para generar una construcción equivalente, tal como los packages en Java.)  

Namespace Body

Usada por la plantilla  Namespace para generar el cuerpo de un espacio de nombres 

Namespace Declaration

Usada por la plantilla  Namespace para generar la declaración de un espacio de nombres 

Operation

Plantilla de alto nivel para generar las operaciones desde las operaciones de las clases UML 

Operation Body

Usada por la plantilla  Operation para generar el cuerpo de las operaciones UML 

Operation Declaration

Usada por la plantilla  Operation para generar la declaración de las operaciones 

Operation Notes

Usada por la plantilla  Operation para generar la documentación para una operación 

Parameter

Usada por la plantilla  Operation Declaration para generar los parámetros

 

La segunda tabla lista las plantillas que se usan para la generación de código para los lenguajes que tienen secciones separadas de interfaz y de implementación. 

 

Plantilla

Descripción

Class Impl

Plantilla de alto nivel para generar la implementación de una clase 

Class Body Impl

Usada por la plantilla  Class Impl para generarla implementación de los miembros de las clases.  

File Impl

Plantilla de alto nivel para generar el archivo de implementación.  

File Notes Impl

Usada por la plantilla  the File Impl para generar notas en el archivo fuente 

Import Section Impl

Usada por la plantilla  the File Impl para generar las dependencias externas 

Operation Impl

Plantilla de alto nivel para generar las operaciones desde las operaciones de las clases UML 

Operation Body Impl

Usada por la plantilla  Operation para generar el cuerpo de las operaciones UML 

Operation Declaration Impl

Usada por la plantilla  Operation para generar la declaración de operaciones 

Operation Notes Impl

Usada por la plantilla  Operation para generar la documentación para una operación 

 

 

Las plantillas base forman una jerarquía, que varía levemente a través de los diferentes lenguajes de programación. Abajo se muestra una jerarquía de típica plantilla relevante a un lenguaje como C# o Java (que no tiene archivos de cabecera). En esta figura modelamos las plantillas como clases (en realidad ellas sólo son texto plano). Esta jerarquía sería levemente más complicada para lenguajes como C++ y Delphi, que tienen plantillas de implementación separadas.  

 

Cada una de estas plantillas base necesita ser especializada para usarse en ingeniería de código. En particular, cada plantilla se especializa para el lenguaje que soporta (o para los "productos"). Por ejemplo, hay una plantilla ClassBody definida para C++, y otra para C#, y otra aun para  Java y así sucesivamente. Al especializar las plantillas, podemos personalizar el código que se genera para la entidad UML correspondiente.  

 

Una vez que se especializaron las plantillas base para un lenguaje dado, se pueden especializar un poco más en base a:  

El estereotipo de una clase 
El estereotipo de una característica (donde la característica puede ser una operación o un atributo)  

 

Este tipo de especialización permite a una operación C#, por ejemplo, que está estereotipada como «property» tener una plantilla OperationBody diferente que la de una operación ordinaria. La plantilla OperationBody se puede especializar aun más, basada en el estereotipo de la clase.  

 

 

templatehierarchy

 

Tenga en cuenta: El modelo de clases anterior muestra la jerarquía de las plantillas de Generación de Código para un lenguaje tal como C# o Java. Los vínculos de agregación denotan referencias entre plantillas.