Interfaces
Las interrfaces son una forma de especificar qué debe
hacer una clase sin especificar el cómo.
Las interfaces tienen una semejanza con las clases abastractas, en el
sentido que no tiene sentido definir objetos instancia de una interfaz.
Igual que las clases abstractas clase asociada se comprometa a
implementar todos los métodos en ellas definidos, PERO en este
caso la relacions no es de herencia en plenitud, dado que no hay
atributos en la definición de una interfaz.
Las interfaces no son clases, sólo especifican requerimientos
para la clase que las implementa o, desde su uso, los servicios para la
función que manipula un objeto que se dice cumplir con la
interfaz.
¿Cómo se usan las interfaces?
Debemos crear una clase que implementa la interfaz.
Implementarla implementar cada uno de los métodos de la
interfaz.
Podemos definir métodos que usen como
parámetro objetos que implementen la interfaz. Basta unar el
nombre de la inteerfaz como el tipo del parámetro.
Luego, las instancias de una clase que implemente la
Interfaz, pueden tomar el lugar del argumento donde se espere alguine
que implemente la interfaz.
Ejemplo: Supongamos que interfaz que describe a un nadador de
cuatro estilos (nadaLibre(), nadaDespaldas(), nadaPecho(),
nadaMariposa()). En ELO hay muchas instancias de Alumnos, entre ellos
hay algunos que pueden ser instancias de AlumnosNadadores, clase que
implementa la interfaz Nadador. Con ello donde se necesite un
nadador, podremos enviar esos alumnos. Cuando se pida un alumnos
nadador en una función, se entiende que sólo se
invocarán sus métodos como nadador.
Ejemplo Java
Sea al Interfaz Comparable.java
public interface Comparable
{
int compareTo(Object otro);
}
Luego la clase Employee podría implementarla para comparar dos
empleados.
La declaración de la clase empleado se modificaría a:
class Employee implements
Comparable
La otro modificación es que la clase Employee debe implementar
esta función. Por ejemplo:
public int compareTo(Object otroObject)
{
Employee otro=(Employee) otroObject;
if (salary < otro.salary) return -1;
if (salary > otro.salary) return 1;
return 0;
}
Ver ejemplo EmployeeSortTest.java.
Destacar invocación a Array.sort()
Java sólo permite heredar de una clase, pero permite implementar
múltiples interfaces.
Ver ejemplo TimerTest.java
Este ejemplo muestra las ideas básicas para el manejo de
interfaces gráficas de Usuarios (GUIs)