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:

Imagen de Juan, otra vez.
Ministerio de Educación y Formación Profesional (Elaboración propia)

-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 sé 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 Ada, protagonista de los casos prácticos.
Ministerio de Educación y Formación Profesional (Elaboración propia)


  • Una propiedad simple representa un único valor, un número, verdadero o falso o un texto, por ejemplo. Por lo tanto, tomará valores dentro de un tipo de datos.

    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 vector 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):
    Ilustración de Iuna 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".
    Montaña Martín Vergel (Elaboración propia)


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 él solo tienes que definir dos tipos de setter y getter.

Ilustración del código de una propiedad indexada.
Montaña Martín Vergel (Elaboración propia)

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

Autoevaluación

Pregunta

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

Respuestas

Una propiedad indexada.

Una propiedad simple.

Retroalimentación