Saltar la navegación

2.2.- Propiedades simples e indexadas.

Caso práctico

Los chicos están ya funcionando a pleno rendimiento con componentes, pero Juan ha encontrado un pequeño escollo:

-Estoy programando un componente para dibujar un menú en una interfaz, sin embargo, si quiero que el número de elementos pueda ser definido después, ¿cómo implemento la estructura para almacenar el contenido del menú, si a priori no se cuánto elementos voy a tener?

-Puedes usar un vector como habrías hecho en cualquier otro caso, –Ada siempre está al quite-, después sólo tienes que cambiar los métodos getter y setter para adaptarlos a un tipo de datos compuesto.

Imagen de Juan, otra vez.
Otra imagen de Ada, protagonista de los casos prácticos.
  • Una propiedad simple representa un único valor, un número, verdadero o falso o un texto por ejemplo.

    Tiene asociados los métodos getter y setter para establecer y rescatar ese valor. Por ejemplo, si un componente de software tiene una propiedad llamada peso de tipo real susceptible de ser leída o escrita, deberá tener los siguientes métodos de acceso:

    public real getPeso()
    
    public void setPeso(real nuevoPeso)
    

    Una propiedad simple es de sólo lectura o sólo escritura si falta uno de los mencionados métodos de acceso.

  • Una propiedad indexada representa un conjunto de elementos, que suelen representarse mediante un vectorVector.Tipo de dato compuesto formado por un conjunto de datos, todos del mismo tipo, posicionados de forma unívoca. y se identifica mediante los siguientes patrones de operaciones para leer o escribir elementos individuales del vector o el vector entero (fíjate en los corchetes del vector):
    Imagen de una clase de Visual Paradigm. Es un rectángulo dividido en tres zonas, en la zona superior aparece el texto Componente, en la central el texto "Propiedad: tipo" y "PropiedadIndexada:tipo" y en  la inferior el texto "getPropiedad():tipo" y debajo "setPropiedad(propiedad:tipo):void", después "getpropiedadIndexada(): tipo[]", "setPropiedadindexada(propiedad:tipo[]):void", "getpropiedadIndexada(posicion:int): tipo" y  "setPropiedadIndexada(posicion:int, elemento:tipo):void".
    public <TipoProp>[] get<NombreProp>()
    
    public void set<NombreProp> (<TipoProp>[] p)
    
    public <TipoProp> get<NombreProp>(int posicion)
    
    public void set<NombreProp> (int posicion, <TipoProp> p)
    

Aquí tienes un ejemplo de propiedad indexada que resuelve el problema de Juan. El componente tiene una propiedad indexada que almacena los contenidos del menú, de este modo es sencillo crear diferentes menús de distintos tamaños. Para acceder a el solo tienes que definir dos tipos de setter y getter.

Código de una propiedad indexada.

A continuación puedes descargar el código asociado para que lo estudies:

Autoevaluación

Pregunta

¿Que tipo de propiedad usarías para implementar el teléfono móvil de una persona?

Respuestas

Una propiedad indexada.

Una propiedad simple.

Retroalimentación