Variables

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Generador de código > SPL: el lenguaje de programación Spy >

Variables

Los archivos SPL importantes exigen el uso de variables. Algunas variables vienen predefinidas por el generador de código y también se pueden crear variables nuevas con solo asignarles valores.

 

El carácter $ se usa cuando se declara o usa una variable y un nombre de variable siempre tiene el prefijo $.

Los nombres de variable distinguen entre mayúsculas y minúsculas.

 

Tipos de variables:

entero, que también se usa como binario, siendo 0 equivalente a false y cualquier otro valor equivale a true
cadena de texto
objeto, que viene dado por UModel
iterador, ver instrucción foreach

 

 

El tipo de variable se declara en la primera asignación de valor:

 

[$x = 0]

ahora x es un entero.

 

[$x = "cadenaDePrueba"]

ahora x es una cadena de texto.

 

Cadenas

Las constantes de cadena siempre aparecen entre comillas dobles, como en el ejemplo anterior. \n y \t dentro de comillas dobles equivalen a una línea nueva y a una tabulación, respectivamente. \" es una comilla doble literal y \\ es una barra diagonal inversa. Las constantes de cadena también pueden ocupar más de una línea.

 

Para la concatenación de cadenas se usa el carácter &:

 

[$BasePath = $outputpath & "/" & $JavaPackageDir]

 

Objetos

Los objetos representan la información que contiene el proyecto de UModel. Los objetos tienen propiedades, a las que puede acceder con el operador . . En SPL no puede crear objetos nuevos (vienen predefinidos por el generador de código y se derivan del código de entrada, pero se pueden asignar objetos a variables.

 

Ejemplo:

 

class [=$class.Name]

 

Este ejemplo reproduce la palabra "class" seguida de un espacio y el valor de la propiedad Name del objeto $class.

 

La tabla que aparece a continuación muestra la correspondencia entre elementos UML y propiedades SPL.

 

Variables predefinidas

 

Elemento UML

Propiedad SPL

Multi-

plicidad

UML

UModel

Descripción

 

 

 

Attribute /
Association

Attribute /

Association

 

CaracterísticaDeComportamiento

isAbstract

 

isAbstract:Boolean

 

 

CaracterísticaDeComportamiento

raisedException

*

raisedException:Type

 

 

CaracterísticaDeComportamiento

ownedParameter

*

ownedParameter:Parameter

 

 

ClasificadorConComportamiento

interfaceRealization

*

interfaceRealization:InterfaceRealization

 

 

Clase

ownedOperation

*

ownedOperation:Operation

 

 

Clase

nestedClassifier

*

nestedClassifier:Clasificador

 

 

Clasificador

namespace

*

 

namespace:Package

packages with code language <<namespace>> set

Clasificador

rootNamespace

*

 

project root namespace:String

VB only - root namespace

Clasificador

generalization

*

generalization:Generalization

 

 

Clasificador

isAbstract

 

isAbstract:Boolean

 

 

ParámetroDePlantillaDeClasificador

constrainingClassifier

*

constrainingClassifier

 

 

Comentario

body

 

body:String

 

 

Tipo de datos

ownedAttribute

*

ownedAttribute:Property

 

 

Tipo de datos

ownedOperation

*

ownedOperation:Operation

 

 

Elemento

kind

 

 

kind:String

 

Elemento

owner

0..1

owner:Element

 

 

Elemento

appliedStereotype

*

 

appliedStereotype:StereotypeApplication

applied stereotypes

Elemento

ownedComment

*

ownedComment:Comment

 

 

ImportaciónDeElemento

importedElement

1

importedElement:PackageableElement

 

 

Enumeración

ownedLiteral

*

ownedLiteral:LiteralDeEnumeración

 

 

Enumeración

nestedClassifier

*

 

nestedClassifier::Clasificador

 

Enumeración

interfaceRealization

*

 

interfaceRealization:Interface

 

LiteralDeEnumeración

ownedAttribute

*

 

ownedAttribute:Property

 

LiteralDeEnumeración

ownedOperation

*

 

ownedOperation:Operation

 

LiteralDeEnumeración

nestedClassifier

*

 

nestedClassifier:Clasificador

 

Característica

isStatic

 

isStatic:Boolean

 

 

Generalización

general

1

general:Clasificador

 

 

Interfaz

ownedAttribute

*

ownedAttribute:Property

 

 

Interfaz

ownedOperation

*

ownedOperation:Operation

 

 

Interfaz

nestedClassifier

*

nestedClassifier:Clasificador

 

 

RealizaciónDeInterfaz

contract

1

contract:Interface

 

 

ElementoMultiplicidad

lowerValue

0..1

lowerValue:ValueSpecification

 

 

ElementoMultiplicidad

upperValue

0..1

upperValue:ValueSpecification

 

 

ElementoConNombre

name

 

name:String

 

 

ElementoConNombre

visibility

 

visibility:VisibilityKind

 

 

ElementoConNombre

isPublic

 

 

isPublic:Boolean

visibility <public>

ElementoConNombre

isProtected

 

 

isProtected:Boolean

visibility <protected>

ElementoConNombre

isPrivate

 

 

isPrivate:Boolean

visibility <private>

ElementoConNombre

isPackage

 

 

isPackage:Boolean

visibility <package>

ElementoConNombre

namespacePrefix

 

 

namespacePrefix:String

XSD only - namespace prefix when exists

ElementoConNombre

parseableName

 

 

parseableName:String

CSharp, VB only - name with escaped keywords (@)

EspacioDeNombres

elementImport

*

elementImport:ImportaciónDeElemento

 

 

Operación

ownedReturnParameter

0..1

 

ownedReturnParameter:Parameter

parameter with direction return set

Operación

type

0..1

 

type

type of parameter with direction return set

Operación

ownedOperationParameter

*

 

ownedOperationParameter:Parameter

all parameters excluding parameter with direction return set

Operación

implementedInterface

1

 

implementedInterface:Interface

CSharp only - the implemented interface

Operación

ownedOperationImplementations

*

 

implementedOperation:OperationImplementation

VB only - the implemented interfaces/operations

ImplementaciónDeOperación

implementedOperationOwner

1

 

implementedOperationOwner:Interface

interface implemented by the operation

ImplementaciónDeOperación

implementedOperationName

 

 

name:String

name of the implemented operation

ImplementaciónDeOperación

implementedOperationParseableName

 

 

parseableName:String

name of the implemented operation with esacped keywords

Paquete

namespace

*

 

namespace:Package

packages with code language <<namespace>> set

ElementoEmpaquetable

owningPackage

0..1

 

owningPackage

set if owner is a package

ElementoEmpaquetable

owningNamespacePackage

0..1

 

owningNamespacePackage:Package

owning package with code language <<namespace>> set

Parámetro

direction

 

direction:ParameterDirectionKind

 

 

Parámetro

isIn

 

 

isIn:Boolean

direction <in>

Parámetro

isInOut

 

 

isInOut:Boolean

direction <inout>

Parámetro

isOut

 

 

isOut:Boolean

direction <out>

Parámetro

isReturn

 

 

isReturn:Boolean

direction <return>

Parámetro

isVarArgList

 

 

isVarArgList:Boolean

true if parameter is a variable argument list

Parámetro

defaultValue

0..1

defaultValue:ValueSpecification

 

 

Propiedad

defaultValue

0..1

defaultValue:ValueSpecification

 

 

ElementoRedefinible

isLeaf

 

isLeaf:Boolean

 

 

Slot

name

 

 

name:String

name of the defining feature

Slot

values

*

value:ValueSpecification

 

 

Slot

value

 

 

value:String

value of the first value specification

AplicaciónEstereotipo

name

 

 

name:String

name of applied stereotype

AplicaciónEstereotipo

taggedValue

*

 

taggedValue:Slot

first slot of the instance specification

CaracterísticaEstructural

isReadOnly

 

isReadOnly

 

 

Clasificador estructurado

ownedAttribute

*

ownedAttribute:Property

 

 

EnlaceDePlantilla

signature

1

signature:TemplateSignature

 

 

EnlaceDePlantilla

parameterSubstitution

*

parameterSubstitution:SustituciónDeParámetroDePlantilla

 

 

ParámetroDePlantilla

paramDefault

 

 

paramDefault:String

template parameter default value

ParámetroDePlantilla

ownedParameteredElement

1

ownedParameteredElement:ParameterableElement

 

 

SustituciónDeParámetroDePlantilla

parameterSubstitution

 

 

parameterSubstitution:String

Java only - code wildcard handling

SustituciónDeParámetroDePlantilla

parameterDimensionCount

 

 

parameterDimensionCount:Integer

code dimension count of the actual parameter

SustituciónDeParámetroDePlantilla

actual

1

OwnedActual:ParameterableElement

 

 

SustituciónDeParámetroDePlantilla

formal

1

formal:TemplateParameter

 

 

FirmaDePlantilla

template

1

template:TemplateableElement

 

 

FirmaDePlantilla

ownedParameter

*

ownedParameter:TemplateParameter

 

 

ElementoQueSePuedeConvertirEnPlantillas

isTemplate

 

 

isTemplate:Boolean

true if template signature set

ElementoQueSePuedeConvertirEnPlantillas

ownedTemplateSignature

0..1

ownedTemplateSignature:FirmaDePlantilla

 

 

ElementoQueSePuedeConvertirEnPlantillas

templateBinding

*

templateBinding:TemplateBinding

 

 

Tipo

typeName

*

 

typeName:PackageableElement

qualified code type names

ElementoConTipo

type

0..1

type:Type

 

 

ElementoConTipo

postTypeModifier

 

 

postTypeModifier:String

postfix code modifiers

EspecificaciónDeValor

value

 

 

value:String

string value of the value specification

 

Agregar un prefijo a los atributos de una clase durante la generación de código

Quizás sea necesario añadir el prefijo "m_" a todos los atributos nuevos del proyecto.

 

Todos los elementos de código nuevos se escriben usando las plantillas SPL. En el archivo Attribute.spl de la carpeta UModelSPL\C#[Java]\Default puede cambiar cómo se escriben los nombres con una simple operación de búsqueda y reemplazo.

 

Por ejemplo, busque $Property.name y reemplácela con "m_" & $Property.name

 

Además, recomendamos actualizar inmediatamente el modelo con el código tras la generación de código. Esto garantiza que el código y el modelo estén sincronizados.

 

Nota: antes de modificarlas, recuerde copiar las plantillas SPL en un directorio de nivel superior (es decir, justo encima del directorio predeterminado UModelSPL\C#). Esto evita que las plantillas se sobrescriban cuando se instale una versión nueva de UModel. Compruebe que está marcada la casilla Las definidas por el usuario reemplazan las predeterminadas de la pestaña Sincronizar el código con el modelo del cuadro de diálogo "Configurar sincronización".

 

Plantillas SPL

Por cada proyecto de UModel se pueden especificar plantillas SPL distintas, haciendo clic en la opción de menú Proyecto | Configuración del proyecto (tal y como muestra el cuadro de diálogo). También puede usar rutas de acceso relativas. Las plantillas que no se encuentren en el directorio indicado se buscan en el directorio predeterminado local.

 

splTemplateRelative

 

Objetos globales

$Options

un objeto que almacena opciones globales:


generateComments:bool  genera comentarios en la documentación (true/false)

$Indent

una cadena utilizada para aplicar sangría al código generado y que representa el nivel de anidamiento actual

$IndentStep

una cadena utilizada para aplicar sangría al código generado y que representa un nivel de anidamiento

$NamespacePrefix

solo en XSD, el prefijo de espacio de nombres de destino, si existe

 

Rutinas de manipulación de cadenas

 

integer Compare(s)

El valor devuelto indica la relación lexicográfica entre la cadena y s (distingue entre mayús/minús):

 

<0:

la cadena es menor que s

0:

la cadena es idéntica a s

>0:

la cadena es mayor que s

 

integer CompareNoCase(s)

El valor devuelto indica la relación lexicográfica entre la cadena y s (no distingue entre mayús/minús):

 

 

<0:

la cadena es menor que s

0:

la cadena es idéntica a s

>0:

la cadena es mayor que s

 

 

integer Find( s )

Busca la primera aparición de la subcadena s.

Devuelve el índice basado en cero del primer carácter de s o -1 si s no se encuentra.

 

string Left( n )

Devuelve los primeros n caracteres de la cadena.

 

integer Length()

Devuelve la longitud de la cadena.

 

string MakeUpper()

Devuelve la cadena en mayúsculas.

 

string MakeUpper( n )

Devuelve la cadena con los primeros n caracteres en mayúsculas.

 

string MakeLower()

Devuelve la cadena en minúsculas.

 

string MakeLower( n )

Devuelve la cadena con los primeros n caracteres en minúsculas.

 

string Mid( n )

Devuelve la cadena empezando por la posición de índice basado en cero n

 

string Mid( n, m )

Devuelve la cadena empezando por la posición de índice basado en cero n y la longitud m

 

string RemoveLeft( s )

Devuelve la cadena sin la subcadena s si Left( s.Length() ) es igual a la subcadena s.

 

string RemoveLeftNoCase( s )

Devuelve la cadena sin la subcadena s si Left( s.Length() ) es igual a la subcadena s (no distingue entre mayús/minús).

 

string RemoveRight( s )

Devuelve la cadena sin la subcadena s si Right( s.Length() ) es igual a la subcadena s.

 

string RemoveRightNoCase( s )

Devuelve la cadena sin la subcadena s si Right( s.Length() ) es igual a la subcadena s (no distingue entre mayús/minús).

 

string Repeat( s, n )

Devuelve la cadena que contiene la subcadena s repetida n veces.

 

string Right( n )

Devuelve los últimos n caracteres de la cadena.

 

 


© 2019 Altova GmbH