4 interfaces

16
Interfaces Interfaces

Upload: leonel-guccione

Post on 28-Sep-2015

234 views

Category:

Documents


1 download

DESCRIPTION

Uso de las Interfaces en lenguaje Java

TRANSCRIPT

  • InterfacesInterfaces

  • La unidad fundamental en Java es la La unidad fundamental en Java es la claseclase, , pero la unidad fundamental en el diseo pero la unidad fundamental en el diseo orientado a objetos es el orientado a objetos es el tipotipo. Aunque las . Aunque las clases definen tipos, es muy til y potente clases definen tipos, es muy til y potente poder definir un tipo si definir una clase. poder definir un tipo si definir una clase. Las Las interfacesinterfaces definen tipos de un modo definen tipos de un modo abstracto en forma de una coleccin de abstracto en forma de una coleccin de mtodos o de otros tipos que conforman el mtodos o de otros tipos que conforman el contrato del tipo definido.contrato del tipo definido.

    Las clases Las clases implementanimplementan interfaces. interfaces.

  • Las clases pueden implementar ms de Las clases pueden implementar ms de una interfaz, pero solo extender de una una interfaz, pero solo extender de una sola clase.sola clase.

    Las declaraciones de interfaces crean Las declaraciones de interfaces crean nombres de tipos, de la misma forma que nombres de tipos, de la misma forma que las clases. Se puede utilizar el nombre de las clases. Se puede utilizar el nombre de la interfaz como el nombre del tipo de la la interfaz como el nombre del tipo de la variable, y cualquier objeto cuya clase variable, y cualquier objeto cuya clase implemente esa interfaz se puede asignar implemente esa interfaz se puede asignar a esa variable.a esa variable.

  • Ejemplo de interfazEjemplo de interfaz

    Muchas interfaces simples definen una Muchas interfaces simples definen una propiedad que se puede adscribir a una propiedad que se puede adscribir a una variedad de diferentes objetos de variedad de diferentes objetos de diferentes clases. Estas propiedades se diferentes clases. Estas propiedades se definen a menudo en trminos de un definen a menudo en trminos de un objeto es capaz de hacer algo. Por objeto es capaz de hacer algo. Por ejemplo, en los paquetes estndar hay ejemplo, en los paquetes estndar hay diversas interfaces de capacidades diversas interfaces de capacidades como:como:

  • Interfaces de JavaInterfaces de Java CloneableCloneable ComparableComparable RunnableRunnable SerializableSerializable

  • Ejemplo de la interfaz ComparableEjemplo de la interfaz Comparable

    Puede ser implementada por cualquier Puede ser implementada por cualquier clase cuyos objetos se puedan comparar clase cuyos objetos se puedan comparar entre si.entre si.

    public interface Comparable{

    int compareTo(Object o);}

  • Implementando la InterfazImplementando la Interfaz Consideremos la clase cuerpo celeste. La Consideremos la clase cuerpo celeste. La

    ordenacin natural de los cuerpos ordenacin natural de los cuerpos celestes que giran alrededor de un mismo celestes que giran alrededor de un mismo cuerpo se podra definir como su distancia cuerpo se podra definir como su distancia orbital a dicho cuerpo.orbital a dicho cuerpo.

  • class Cuerpo implements Comparableclass Cuerpo implements Comparable{{ //se omiten los campos del cuerpo//se omiten los campos del cuerpo

    int distanciaOrbital = ;int distanciaOrbital = ;

    public int compareTo(Object o) public int compareTo(Object o) throwsthrows IllegalArgumentExceptionIllegalArgumentException{{

    Cuerpo otro = (Cuerpo) o;Cuerpo otro = (Cuerpo) o;if(orbita == otro.orbita)if(orbita == otro.orbita)

    return return distanciaOrbital otro.distanciaOrbital;distanciaOrbital otro.distanciaOrbital;elseelse

    throw new IllegalArgumentException(Orbita erronea)throw new IllegalArgumentException(Orbita erronea)

    }}}}

  • Las interfaces producen nombres de tipos Las interfaces producen nombres de tipos de la misma forma que las clases, por lo de la misma forma que las clases, por lo que se pueden declarar variables de esos que se pueden declarar variables de esos tipos. Por ejemplo:tipos. Por ejemplo:

    Comparable obj;Comparable obj;

    Una buena parte de la potencia de las Una buena parte de la potencia de las interfaces radica en la declaracin y interfaces radica en la declaracin y utilizacin de variables de tipo interfaz en utilizacin de variables de tipo interfaz en vez de variables del tipo de alguna clase vez de variables del tipo de alguna clase especfica.especfica.

  • Ej: rutina Ej: rutina ordenarordenar genrica que ordene un genrica que ordene un array de objetos array de objetos ComparableComparable (suponiendo (suponiendo que los objetos sean compatibles), sin que que los objetos sean compatibles), sin que importe la clase real de los objetosimporte la clase real de los objetos..

    class Ordenador class Ordenador implementsimplements ComparableComparable{{

    public static public static ComparableComparable[] ordenar([] ordenar(ComparableComparable[] lista)[] lista){{// detalles de implementacin// detalles de implementacinreturn lista;return lista;}}

    }}

  • Las referencias a tipos de interfaz, slo se Las referencias a tipos de interfaz, slo se pueden utilizar para acceder a los miembros pueden utilizar para acceder a los miembros de la interfaz. Por ejemplo, el siguiente cdigo de la interfaz. Por ejemplo, el siguiente cdigo da error de compilacin:da error de compilacin:

    Comparable obj = new Cuerpo();Comparable obj = new Cuerpo();String nombre = obj.getNombre();String nombre = obj.getNombre();Error, comparable no tiene el mtodo Error, comparable no tiene el mtodo

    getNombre().getNombre().Si deseamos tratar a obj como un objeto Si deseamos tratar a obj como un objeto Cuerpo Cuerpo debemos convertirlo explcitamente a debemos convertirlo explcitamente a un objeto de este tipo.un objeto de este tipo.

  • Declaraciones de InterfacesDeclaraciones de Interfaces

    Puede declarar tres tipos de miembrosPuede declarar tres tipos de miembros1.1. Constantes (campos) Constantes (campos) 2.2. MtodosMtodos3.3. Clases o interfaces anidadasClases o interfaces anidadasTodos los miembros de una interfaz son Todos los miembros de una interfaz son

    implcitamente pblicos, pero por implcitamente pblicos, pero por convencin se omite el modificador convencin se omite el modificador publicpublic..

  • Constantes de intefazConstantes de intefaz Son implicitamente Son implicitamente public, static public, static yy final. final. Deben tener inicializadores.Deben tener inicializadores.

  • Mtodos de intefazMtodos de intefaz

    Son implcitamente Son implcitamente abstract. abstract. En la declaracin de un mtodo de interfaz En la declaracin de un mtodo de interfaz

    no se permiten otros modificadores. Son no se permiten otros modificadores. Son implcitamente implcitamente publicpublic, por lo tanto no , por lo tanto no pueden tener ningn otro modificador de pueden tener ningn otro modificador de acceso. No pueden ser acceso. No pueden ser finalfinal, ni , ni static.static.

    La implementacin de estos mtodos, en La implementacin de estos mtodos, en una clase especifica puede incorporar los una clase especifica puede incorporar los modificadores que sean apropiados.modificadores que sean apropiados.

  • Extensin de interfacesExtensin de interfaces

    Las interfaces pueden extender ms de una Las interfaces pueden extender ms de una interfaz.interfaz.

  • Ver el ejemplo Interfaz.zip

    Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16