OptionBase
Esta propiedad indica que índice será tomado como inicial para los arrays de Visual Basic, por defecto se establece a cero, o sea, el índice del primer elemento de un array será el cero. El valor para esta propiedad debe ser cero o uno, si se especifica otro valor distinto Visual Modeler no generará el estamento Option Base a la hora de crear las clases en Visual Basic. Esta propiedad no tiene efecto sobre los arrays basados en tipos definidos por el usuario.
OptionExplicit
Esta opción es utilizada en Visual Basic para forzar la declaración de variables. Puede contener dos valores “True” o “False”. Si se selecciona el valor “True” se indica que se requiere la declaración de
Diseño orientado a objetos con UML © Grupo EIDOS
variables para el modulo donde reside la declaración. Si se establece el valor a “False” se podrán utilizar variables sin que se hayan declarado.
OptionCompare
El estamento Option Compare opción es usado en Visual Basic para determinar el método usado por defecto a la hora de comparar tipos de datos string. Esta opción puede contener los siguientes valores: None, Visual Modeler no genera el estamento Option Compare cuando crea módulos de clase; Text, Visual Modeler genera el estamento Option Compare Text cuando crea módulos de clase; Binary, Visual Modeler genera el estamento Option Compare Binary cuando crea módulos de clase; Database, en este caso generará el estamento Option Compare Database cuando cree módulos de clase.
Creatable
Con esta propiedad se puede determinar como se expone la clase que se crea, o sea, el ámbito de la clase. Se puede elegir entre diferentes opciones, entre ellas: Private, valor por defecto, indica que la clase sólo va a ser visible dentro del proyecto que la contenga; PublicNoCreatable, este valor indica que la clase será vista por módulos que estén fuera del proyecto pero sólo se podrá instanciar dentro del proyecto que la contenga. Otros valores que puede contener son: GlobalMultiUse, GlobalSingleUse, MultiUse y SingleUse. Para encontrar más información sobre estos tipos de instanciación refiérase a la documentación de Visual Basic.
GenerateInitialization y GenerateTermination
Estas propiedades indican si cuando se genere el código de la clase se van ha incluir los métodos de iniciación y terminación del elemento. Si se establecen a “True”, cuando se genere el esqueleto de la clase se crearán los métodos elemento_Initialize y elemento_Terminate (por ejemplo, de una clase se generarán los métodos Class_Initialize y Class_Terminate). Si se establecen a “False” no se generarán estos métodos.
CollectionClass
Esta propiedad es una de las más potentes que tienen las clases a la hora de generar código. Cuando en Visual Modeler tenemos dos clases relacionadas mediante una asociación, puede ser que un objeto de una de las clases se relacione con más de un objeto de la clase asociada, o sea, la multiplicidad de una de las clases de la asociación es distinta de uno (o de las dos clases). En este caso, cuando se genere código, la clase que en el lado opuesto de la que tiene multiplicidad distinta de uno va ha tener que contener una variable de Visual Basic para tener las instancias que se relacionan con ella.
Con la propiedad CollectionClass podemos determinar la clase que va a tener la colección de instancias. Por defecto contiene el valor Collection, eso quiere decir que la clase que va a contener las instancias será una variable de la clase Collection de Visual Basic (clase que puede mantener una colección de objetos de cualquier tipo). En la figura 88 se muestran dos clases relacionadas mediante una asociación unidireccional.
Para que la clase Albarán pueda implementar la relación que existe con DetalleAlbarán, ha de poder mantener una serie de instancias de esta clase ya que la multiplicidad es distinta de uno. El nombre del rol que tiene la clase DetalleAlbarán en la relación es LineasDetalle. Con esta configuración si la
© Grupo EIDOS 8. Ingeniería directa e inversa con Visual Modeler
Figura 88. Asociación de dos Clases
El código fuente 3 muestra el código que se genera con esta opción.
Option Base 0 Option Explicit
‘##ModelId=3884B20D0040 Private mFechaAlbaran As Date
‘##ModelId=3884B2120173 Private mCod_Cliente As Long ##ModelId=3884B21D001A Private mNum_Albaran As Long ##ModelId=3884B22401DD Private mDireccion As String
##ModelId=3884B2EF0370
Private mLineasDetelle As Collection
Código fuente 3. Ejemplo de código con la propiedad CollectionClass establecida por defecto
Por el contrario, si seleccionamos otro valor para la propiedad CollectionClass, Visual Modeler generará un nuevo módulo con el nombre que contenga la propiedad CollectionClass donde se cree el código necesario para crear una nueva clase para mantener la colección de objetos DetalleAlbarán, con todos los métodos para añadir, insertar y acceder a los objetos, incluso generará los métodos necesarios para poder iterar con un bucle For...Each sobre una colección de objetos DetalleAlbarán. En el siguiente bloque de código se observa el código que se genera cuando se selecciona otra clase distinta de la que tiene por defecto para la propiedad CollectionClass para la clase DetallesAlbarán (en este caso se ha establecido la propiedad CollectionClass con un valor que contiene la cadena “ColDetallesAlbaran”).
##ModelId=3884B22401DD Private mDireccion As String ##ModelId=3884B2EF0370
Private mLineasDetelle As Collection
Diseño orientado a objetos con UML © Grupo EIDOS
El uso normal de esta propiedad es que por defecto contenga el valor Collection y para cada clase que valla a necesitar generar una colección modificar su valor dando un nombre que tenga sentido, para ello se puede acceder a la especificación de la clase y modificar el valor de la propiedad CollectionClass desde la pestaña de Visual Basic. Otra opción posible es modificar el valor de la propiedad CollectionClass cuando se ejecute el asistente para la generación de código (esta opción la analizaremos más adelante).