1 Interfaces Agustín J. González ELO-329. 2 Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.

Slides:



Advertisements
Presentaciones similares
Unidad 3 Lenguajes .Net y POO
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Programación Interactiva Hilos
Herencia en C#.
Fundamentos de la programación orientada a objetos
POLIMORFISMO "una interfaz, múltiples métodos".
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Herencia simple y multiple
Arquitectura CLARO-TECNOTREE
Polimorfismo Unidad 4.
Inner classes CAPITULO 8.
Aplicación del paradigma orientado a objetos
Diseño y programación de
Lenguaje de Programación II Manejo de Paquetes Corporación Universitaria del Caribe CECAR.
HERENCIA.
Herencia e Interfaces.
Java. Threads (Hebras) Los sistemas operativos actuales permiten la multitarea, aunque esta se de tiempo compartido cuando se trabaja con un solo procesador.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 10: Interfaces Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Programación orientada a objetos
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Interfaces. Introducción La unidad fundamental en el lenguaje de programación Java es la clase, pero la unidad fundamental del diseño orientado a objetos.
Informática II Interfaces zLas interfaces declaran un tipo que se componen sólo de métodos abstractos y constantes. zLa definición de una clase hace pensar.
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
1 Polimorfismo y Funciones Virtuales Agustín J. González ELO329.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Herramientas de polimorfismo y herencia en C++
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
1 Herencia Agustín J. González ELO Motor ElectricMotor Motor y ElectricMotor Consideremos dos clases que tienen algo en común.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Detalles Generales sobre Java
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SEIS DESARROLLO, INNER CLASSES.
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Interfaces y Clases Internas
Herencia y Clases Abstractas
Patrones de diseño equipo n.1
CRUCIGRAMA HORIZONTALES: VERTICALES:
Conceptos. -Programación orientada a eventos. -Instancias de clase. -Atributo de los objetos. -Método main, get y set. -Ejemplo de la declaración de.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
Hilos Java Profesor Elian Rojas Berrocal
Herencia en C++ Agustín J. González ELO329. Diseño y Programación Orientados a Objetos 2 Motor ElectricMotor Motor y ElectricMotor Consideremos dos clases.
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Herencia en C#.
Transcripción de la presentación:

1 Interfaces Agustín J. González ELO-329

2 Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases bases simultáneamente. La herencia múltiple es manejable en casos simples, pero puede llegar a ser muy compleja si datos son heredados de múltiples cases bases. Java NO soporta múltiple herencia. Java Sí soporta “herencia” múltiple de interfaces

3 Definición Una interface puede ser considerada como una clase abstracta (i.e. No podemos crear instancias de ella) con las siguientes características: –Todos los miembros son públicos (no hay necesidad de declararlos públicos) –Todos los métodos son abstractos (no se requiere declararlos como abstract) –Todos los campos datos son static y final. Se usa para definir valores constantes.

4 Definición e Implementación de Interfaces Definición de la Interfaz : Sorteable.javaSorteable.java Cualquier clase que implemente esta interfaz pasa a ser un subtipo (un objeto de la clase puede tomar el lugar de la interfaz). De esta forma es posible crear algoritmos “polimorfos” que pueden aceptar como objetos instancias de clases que implementan la interfaz. Estos algoritmos únicamente pueden relacionarse con los objetos a través de los métodos que la interfaz define, los cuales son implementados por la clase del objeto. Implementación de la Interfaz : IntArray, esta clase implementa la interfaz SorteableIntArray La clase IntArrar implementa todos los métodos de la interfaz y pasa a ser un proveedor concreto de los servicios prometidos por Sorteable. Ahora objetos de tipo IntArray pueden ser pasados como parámetros donde se espera un objeto Sorteable. Una clase puede implementar múltiples interfaces. public class ClassX extends ClassY implements InterfaceA, InterfaceB,.. { // cuerpo de la clase }

5 Uso de Interfaces Java ya define y usa muchas interfaces; entre ellas: Runnable para hilos, Cloneable para copia, ImageObserver/ImageConsumer para desacoplar la carga de imágenes, Transferable para copy-and-paste, y listeners para el manejo de eventos. Una vez que la interfaz ha sido definida, se transforma en un tipo para Java sobre el cual nuevos servicios pueden ser definidos. Por ejemplo, consideremos una interfaz para indicar servicios de ordenamiento. /////// SortAlgorithm.java /////// public interface SortAlgorithm { // sorts a in index range public void sort(Sortable a, int begin, int end); // sorts a in its entire range public void sort(Sortable a); }

6 Uso de Interfaces (cont) Ahora podemos crear una clase que implemente esta interfaz usando algún algoritmo de ordenamiento, por ejemplo Quicksort.java.Quicksort.java. En esta implementación los métodos sort son polimorfos en el sentido que aceptan cualquier objeto Sorteable (en realidad objetos que son instancia de una clase que implemente Sortable). Una vez desarrolladas estas interfaces podemos desarrollar programas que las usen. Por ejemplo veamos esta prueba TestSort.javaTestSort.java El cual al ser ejecutado genera la siguiente salida: Input array: 2, 9, -12, 8, 17, -99, 54, 3 Increasing array: -99, -12, 2, 3, 8, 9, 17, 54 Decreasing array: 54, 17, 9, 8, 3, 2, -12, -99 Notar que podemos intercambiar algoritmos muy fácilmente por ejemplo creando otras clases como bubblesort que implemente SortAlgorithm.

7 Extensión de Interfaces Una interfaz puede definirse basada en varias interfaces existentes. Por ejemplo interface Accessible extends Readable, Writeable, Executable {.... } Ahora una clase o interfaz puede ser un subtipo (puede tomar el lugar de) de más de una interfaz o clase. Pueden ocurrir conflictos cuando encontramos métodos o campos con el mismo nombre. Conflicto con métodos: Si dos métodos son exactamente iguales (igual nombre, parámetros y valor retornado), no hay problema. Si sólo difieren en el valor retornado, la “herencia” falla. Conflicto con nombre de campos: En realidad no hay conflicto ya que estos nombres son estáticos y siempre pueden ser accedidos con el calificador de su tipo, como en Sorteable.DECREASING.