Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I Paquetes e Interfaces Qué es una interfaz? Una interfaz define un protocolo de comportamiento que puede ser implantada por cualquier clase en la jerarquía de clases. Una interfaz define un conjunto de métodos pero no los imlanta. La clase que implante la interfaz implantará todos los métodos definidos en la interfaz. Una interfaz es parecida a una clase abstracta pero difiere de las siguientes formas: • Una interfaz no puede implantar ninguno de sus métodos, mientras que una clase abstracta si. • Una clase puede implantar muchas interfaces pero solo puede tener una superclase. • Una interfaz no es parte de la jeraquía de clases. Una misma interfaz puede ser implantada por distintas clases aún cuando no estén relacionadas. Definición de una Interfaz Al definir una interfaz, es importante recordar los siguientes puntos: • Todos los miembros son públicos pero no hay necesidad de declararlos como tal. • Todos los métodos deben ser abstractos. • Todos los atributos son static y final. El Listado 1 muestra un ejemplo de como declarar una interfaz. Mientras que el Listado 2 muestra un ejemplo de una clase que implementa la interfaz Sortable. También es posible definer nuevas interfaces que esten basadas en otras interfaces existentes. interface Accesible extends Readable, Writeable { ..... } 1 de 4 Elaborado por: M.C. Cecilia M. Curlango Rosas Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I public interface Sortable { /* * Compara los elementos i y j y * para elemento_i >, ==, < elemento_j regresa * >0, 0, <0 si la direccion es INCREASING * <0, 0, >0 si la direccion es DECREASING */ int compare( int i, int j ); void swap( int i, int j ); int first(); int last(); boolean sorted(); void sorted( boolean b); void direction( int dir ); int direction(); static final int INCREASING = 1; static final int DECREASING =-1; } Listado 1 Ejemplo Interfaz 2 de 4 Elaborado por: M.C. Cecilia M. Curlango Rosas Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I class IntArray implements Sortable { public IntArray( int a[], int len, int f ) { arr = a; length = len; dirFlag = f; } public int compare( int i, int j ); public void swap( int i, int j ); public int first() { return (0); } public int last() { return(length -1); } public boolean sorted() { return sortFlag; } public void sorted( boolean b) { sortFlag = b; } public void direction( int dir ) { if ( dirFlag != f) { dirFlag =f; sortFlag = false; } } public int direction() { return dirFlag; } // otros métodos ...... private int dirFlag = Sortable.INCREASING; private boolean sortFlag = false; private int length; private int arr[]; } Listado 2 Ejemplo Interfaz 3 de 4 Elaborado por: M.C. Cecilia M. Curlango Rosas Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I Paquetes Los paquetes se utilizan para facilitar el uso de clases, evitando el conflicto entre nombres, controlar acceso y agrupar clases e interfaces relacionadas. Un paquete es una colección de clases e interfaces relacionadas que proveen protección de acceso y manejo de nombres en un espacio de nombres. Como crear un paquete. Para crear un paquete, se coloca una clase o una interfaz en el. Para esto, se coloca la instrucción package al inicio del archivo fuente en el que se define la clase o intefaz. Si se tuviera una clase Circle.java que perteneciera al paquete misGraficas: package misGraficas; public class Circle extends Graphic implements Draggable { ... } Acceso a miembros de un paquete Para utilizar los miembros publicos de un paquete se tienen varias opciones: • Hacer referencia al nombre largo del miembro misGraficas.Circle • Importar al miembro del paquete import misGraficas.Circle; • Importar a todos los miembros de un paquete import misGraficas.*; 4 de 4 Elaborado por: M.C. Cecilia M. Curlango Rosas