TutorJava Nivel Básico

Como se mencion� anteriormente, cuando se define un nuevo interface, en esencia se est� definiendo un tipo de referencia. Se pueden utilizar los nombres de interface en cualquier lugar donde se usar�a un nombre de dato de tipos primitivos o un nombre de datos del tipo de referencia.

Por ejemplo, supongamos que se ha escrito un programa de hoja de c�lculo que contiene un conjunto tabular de celdas y cada una contiene un valor. Querr�amos poder poner cadenas, fechas, enteros, ecuaciones, en cada una de las celdas de la hoja. Para hacer esto, las cadenas, las fechas, los enteros y las ecuaciones tienen que implementar el mismo conjunto de m�todos. Una forma de conseguir esto es encontrar el ancestro com�n de las clases e implementar ah� los m�todos necesarios. Sin embargo, esto no es una soluci�n pr�ctica porque el ancestro com�n m�s frecuente es Object. De hecho, los objetos que puede poner en las celdas de su hoja de c�lculo no est�n relacionadas entre s�, s�lo por la clase Object. Pero no puede modificar Object.

Una aproximaci�n podr�a ser escribir una clase llamada ValordeCelda que representara los valores que pudiera contener una celda de la hoja de c�lculo. Entonces se podr�an crear distintas subclases de ValordeCelda para las cadenas, los enteros o las ecuaciones. Adem�s de ser mucho trabajo, esta aproximaci�n arbitraria fuerza una relaci�n entre esas clases que de otra forma no ser�a necesaria, y deber�a duplicar e implementar de nuevo clases que ya existen.

Se podr�a definir un interface llamado CellAble que se parecer�a a esto.

interface CellAble {
    void draw();
    void toString();
    void toFloat();
}

Ahora, supongamos que existen objetos Linea y Columna que contienen un conjunto de objetos que implementan el interface CellAble. El m�todo setObjectAt() de la clase Linea se podr�a parecer a esto.

class Linea {
    private CellAble[] contents;
    . . .
    void setObjectAt(CellAble ca, int index) {
        . . .
    }
    . . .
}

Observa el uso del nombre del interface en la declaraci�n de la variable miembro contents y en la declaraci�n del argumento ca del m�todo. Cualquier objeto que implemente el interface CellAble, sin importar que exista o no en el �rbol de clases, puede estar contenido en el array contents y podr�a ser pasado al m�todo setObjectAt().

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP