Módulo 8: INTERFACES

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Módulo 8: INTERFACES"

Transcripción

1 Módulo 8: INTERFACES 8-1

2 SUMARIO INTERFACES 1 SUMARIO INTRODUCCIÓN A LOS INTERFACES EN JAVA UTILIZACIÓN DE INTERFACES EN JAVA COMBINACIÓN DE INTERFACES: HERENCIA MÚLTIPLE EN JAVA5 8.4 INTERFACES Y HERENCIA 8 F. Liberal Malaina 8-2

3 8.1 INTRODUCCIÓN A LOS INTERFACES EN JAVA En el capítulo relativo a la herencia se describió cómo la utilización de clases abstractas permitía definir el comportamiento común de una jerarquía de clases. Esto se conseguía al tener que implementar los métodos abstractos en las subclases y dotarles así de un comportamiento específico, al mismo tiempo que se respetaba el formato común (nombre del método, argumentos, etc.). Definiendo métodos abstractos o incompletos en una clase abstracta, y dejando su implementación para sus descendientes se forzaban en definitiva una serie de características comunes a todas las subclases de la jerarquía. De una forma análoga a las clases abstractas, un interfaz en Java define un protocolo o modelo de comportamiento. Para ello, una vez más, se definirán una serie de métodos pero no su implementación. De hecho básicamente un interfaz en Java (según la propia definición dada por Sun) consiste en un conjunto de definiciones de métodos sin implementación al que se asigna un nombre concreto. Dado que en esencia un interfaz consiste en una serie de métodos sin implementación, esto es, abstractos; cuáles son entonces las diferencias entre la utilización de interfaces y de clases abstractas?. Para responder esa pregunta cabe pensar cuáles son las carencias que obligaron a introducir el concepto de interfaces al definir el lenguaje Java, un concepto que, por otra parte, no aparece en otros lenguajes orientados a objetos: El comportamiento asociado a una clase abstracta únicamente se transmite por el mecanismo de herencia. Es decir, para que una clase comparta un determinado comportamiento debe ser necesariamente una subclase de la clase abstracta que define el comportamiento (debe encontrarse en la misma jerarquía de clases). Esto obliga a que las clases que deseen presentar un comportamiento común deban ser clases muy relacionadas (parientes). La carencia anterior se ve agravada por el hecho de que la herencia en Java es simple, con lo cual solamente se puede heredar un comportamiento, el de la superclase (o sus ancestros). Frente a esas carencias, un interfaz permite definir un comportamiento que puede ser implementado por cualquier clase, independientemente de la jerarquía a la que pertenezca ya que NO es la herencia el mecanismo de transmisión del comportamiento. Esto permite que clases con poca relación entre sí (no pertenecientes a una jerarquía común) puedan compartir parte de dicho comportamiento. Además, una clase puede implementar varios interfaces, lo cual soluciona el agravante que introducía la herencia simple de java a la utilización de clases abstractas. Por el contrario, aparecen nuevos condicionantes: en un interfaz no se puede implementar ningún método, al contrario que sucedía en las clases abstractas y aunque pueden contener datos miembro, éstos deben ser estáticos y constantes. F. Liberal Malaina 8-3

4 8.2 UTILIZACIÓN DE INTERFACES EN JAVA Para definir un interfaz en Java se utiliza la palabra reservada interface. A interface se le suele añadir el modificador public para permitir que lo utilicen clases fuera del paquete. De forma paralela, para indicar que una clase va a soportar o ajustarse a un determinado interfaz se utiliza la palabra reservada implements seguida del nombre del interfaz en la definición de la clase. En el código que se muestra a continuación se va a utilizar el concepto de interfaz para definir el comportamiento relacionado con un Vehículo. A continuación, se definirán una serie de clases que proporcionen ese interfaz. //<Vehiculo.java> public interface Vehiculo { int ARRANCADO=0; int PARADO=1; DATOS CONSTANTES A PESAR DE QUE NO SE DECLAREN EXPLÍCITAMENTE COMO TALES public void arrancar(); public void acelerar(float incremento); public void frenar(float decremento); public float obtenervelocidadactual(); public void parar(); TODOS LOS MÉTODOS DEFINIDOS PERO SIN IMPLEMENTACIÓN A continuación dos clases que implementan el interfaz Vehículo: Avion y Motocicleta. Se pueden observar las distintas implementaciones de los métodos en función de las características propias de cada tipo. F. Liberal Malaina 8-4

5 //<Motocicleta.java> public class Motocicleta implements Vehiculo { public static float CONSTANTE_FRENADA=2.123f; public static float CONSTANTE_ACELERACION=3.42f; protected int estado=parado; protected float velocidadactual=0; public int numruedas=2; public int potencia=200; //en CV public int cilindrada=500; //en cc protected int marchaactual=0; public void arrancar(){ cambiarmarcha(1); acelerar(10); estado=arrancado; velocidadactual=10; public void acelerar(float incremento){ giraracelerador(incremento/constante_aceleracion); velocidadactual+=incremento; public void frenar(float decremento){ apretarfrenosdisco(decremento/constante_frenada); velocidadactual-=decremento; public float obtenervelocidadactual(){ return velocidadactual; public void parar(){ frenar(obtenervelocidadactual()); estado=parado; protected void giraracelerador(float angulo){ //operaciones para girar acelerador protected void apretarfrenosdisco(float presion){ //operaciones para apretarfrenos protected void cambiarmarcha(int marcha){ //operaciones para cambio de marcha marchaactual=marcha; //<Avion.java> public class Avion implements Vehiculo{ public static float CONSTANTE_FRENADA=12.1f; public static float CONSTANTE_ACELERACION=12.1f; public static float ARRANQUE_INICIAL=123.12f; public static int NUM_MAX_MOTORES=6; protected int estado=parado; protected float velocidadactual=0; public int nummotores=2; public long potencia=120000; //en CV public long rpmactual[]; public Avion(){ rpmactual=new long [Avion.NUM_MAX_MOTORES]; public Avion(int motores){ nummotores=motores; rpmactual=new long [motores]; public void arrancar(){ for(int i=0; i <nummotores;i++){ empujarpalancamotor(i,arranque_inicial); estado=arrancado; velocidadactual=0; public void acelerar(float incremento){ for(int i=0; i <nummotores;i++){ empujarpalancamotor(i,incremento/constante_aceleracion); velocidadactual+=incremento; public void frenar(float decremento){ for(int i=0; i <nummotores;i++){ empujarpalancamotor(i,-(decremento/constante_frenada)); velocidadactual-=decremento; public float obtenervelocidadactual(){ return velocidadactual; public void parar(){ // Maniobra de acercamiento, sacar FLAPS..., estado=parado; protected void apretaracelerador(float presion){ //operaciones para girar acelerador protected void empujarpalancamotor(int nummotor,float desplamiento){ //Operaciones para empujar palanca 8.3 COMBINACIÓN DE INTERFACES: HERENCIA MÚLTIPLE EN JAVA Como se ha comentado en la introducción de este capítulo, los interfaces se introducen en Java, en parte, para suplir las carencias de la herencia simple. Dado que puede resultar útil que una clase presente varios comportamientos pero no se puede conseguir directamente con clases abstractas (al transmitirse el comportamiento a través de la herencia) aparece el mecanismo de combinación de interfaces. Imaginemos por un momento que estamos diseñando un videojuego de estrategia en tiempo real en el que podemos manejar diferentes Vehículos. La mayoría de los vehículos se utilizan para el transporte de equipamiento, el soporte a las tropas etc (Coche, Motocicleta, Avion ) Alguna de las fases del juego permiten que el jugador controle ciertas armas para defender a su ejército virtual (Cañones, Ametralladoras, ). Para unificar el manejo de las distintas armas se define un nuevo interfaz Armas, con las operaciones más comunes (apuntar, disparar, cargar ). F. Liberal Malaina 8-5

6 //<Arma.java> package armas; public interface Arma { public void cargar(); public void apuntar(float param1, float param2, float param3); public void disparar(int numproyectiles, int tipoproyectil); public void descargar(); En ciertas fases de la campaña militar, el usuario puede utilizar aviones de combate. Nos encontramos entonces ante el dilema de cómo gestionar dichos elementos. Por una parte se trata de un vehículo y cómo tal debe mantener el interfaz proporcionado por Vehículo, puesto que el jugador ya lo ha utilizado para el manejo de aviones de transporte. Por otro lado debe ser capaz de utilizar el interfaz Arma ya que es el interfaz definido para ese tipo de objetos. Sin embargo, no tiene sentido definir una clase abstracta con los dos comportamientos puesto que en principio son comportamientos que tienen poco que ver, únicamente sería por tanto válido para unas pocas clases concretas como AvionCombate, Tanque. La solución es declarar una nueva clase AvionCombate que proporcione ambos interfaces. F. Liberal Malaina 8-6

7 //<AvionCombate.java> import armas.*; public class AvionCombate implements Vehiculo,Arma{ public static float CONSTANTE_FRENADA=12.1f; public static float CONSTANTE_ACELERACION=12.1f; public static float ARRANQUE_INICIAL=123.12f; public static int NUM_MAX_MOTORES=6; protected int estado=parado; protected float velocidadactual=0; public int nummotores=2; public long potencia=120000; //en CV public long rpmactual[]; public void arrancar(){ public void acelerar(float incremento){ public void frenar(float decremento){ public float obtenervelocidadactual(){ return 0; public void parar(){ public void cargar(){ //cogermisildeposito(); //insertarmisirconducto(); public void apuntar(float param1, float param2, float param3){ //moverlocalizadorlaser(param1,param2,param3); //programarmisil(); public void disparar(int numproyectiles, int tipoproyectil){ //mandarordendisparo(numproyectiles,tipoproyectil); //actualizarcontadorproyectiles,tipoproyectil); public void descargar(){ //retirarresiduosmisil(); //actualizarcontadorproyectiles,tipoproyectil); La clase AvionCombate permite ilustrar cómo se pueden utilizar varios interfaces para combinar comportamientos. Sin embargo, si comparamos esa clase con Avion vemos como ha sido necesario reimplementar los métodos relativos al interfaz Vehículo. Evidentemente, esa duplicación de código no es admisible más que a modo de ejemplo. Una solución mucho más elegante y que ilustra la utilización conjunta de herencia e interfaces consistiría en crear una clase AvionCombateHeredado que herede de Avion (con lo cual hereda los métodos que se mantienen igual) y que añada las características del interfaz Arma. F. Liberal Malaina 8-7

8 //<AvionCombateHeredado.java> import armas.*; public class AvionCombateHeredado extends Avion implements Arma{ public AvionCombateHeredado() { super(); public AvionCombateHeredado(int motores) { super(motores); public void cargar(){ //cogermisildeposito(); //insertarmisirconducto(); public void apuntar(float param1, float param2, float param3){ //moverlocalizadorlaser(param1,param2,param3); //programarmisil(); public void disparar(int numproyectiles, int tipoproyectil){ //mandarordendisparo(numproyectiles,tipoproyectil); //actualizarcontadorproyectiles,tipoproyectil); public void descargar(){ //retirarresiduosmisil(); //actualizarcontadorproyectiles,tipoproyectil); 8.4 INTERFACES Y HERENCIA Los interfaces se comportan de forma similar a las clases a la hora de realizar operaciones de herencia. Cada nuevo método que incorpore cada subinterfaz deberá ser añadido a los del superinterfaz e implementados por toda clase que lo implemente. Vemos en el código cómo desde cada método se puede acceder a cualquier variable (realmente constantes) definidas en los superinterfaces, puesto que la clase al implementar el subinterfaz de más bajo nivel ya conoce todas ellas. El resultado del código de la página siguiente es el que se muestra en la figura: F. Liberal Malaina 8-8

9 //<SuperInterfaz.java> package interfaces; public interface SuperInterfaz { int variablesuperinterfaz=0; public void metodosuperinterfaz(); //<SubInterfaz.java> package interfaces; public interface SubInterfaz extends SuperInterfaz { int variablesubinterfaz=1; public void metodosubinterfaz(); //<SubSubInterfaz.java> package interfaces; public interface SubSubInterfaz extends SubInterfaz { int variablesubsubinterfaz=2; public void metodosubsubinterfaz(); //<LanzadorInterfaces.java> package interfaces; public class LanzadorInterfaces implements SubSubInterfaz { public void metodosuperinterfaz(){ System.out.println(" SuperInterfaz: Variable SuperInterfaz: "+variablesuperinterfaz); System.out.println(" SuperInterfaz: Variable SubInterfaz: "+variablesubinterfaz); System.out.println(" SuperInterfaz: Variable SubSubInterfaz: "+variablesubsubinterfaz); public void metodosubinterfaz(){ System.out.println(" SubInterfaz: Variable SuperInterfaz: "+variablesuperinterfaz); System.out.println(" SubInterfaz: Variable SubInterfaz: "+variablesubinterfaz); System.out.println(" SubInterfaz: Variable SubSubInterfaz: "+variablesubsubinterfaz); public void metodosubsubinterfaz(){ System.out.println(" SubSubInterfaz: Variable SuperInterfaz: "+variablesuperinterfaz); System.out.println(" SubSubInterfaz: Variable SubInterfaz: "+variablesubinterfaz); System.out.println(" SubSubInterfaz: Variable SubSubInterfaz: "+variablesubsubinterfaz); public static void main(string[] args) { LanzadorInterfaces arrancar=new LanzadorInterfaces(); arrancar.metodosuperinterfaz(); arrancar.metodosubinterfaz(); arrancar.metodosubsubinterfaz(); F. Liberal Malaina 8-9

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005 24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos

Más detalles

CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B)

CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B) APRENDERAPROGRAMAR.COM CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero Fecha

Más detalles

Clases abstractas e interfaces en Java

Clases abstractas e interfaces en Java Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura

Más detalles

Clases y herencia. FJP Unidad 8. Diseño de clases

Clases y herencia. FJP Unidad 8. Diseño de clases Clases y herencia FJP Unidad 8 Encapsulamiento Diseño de clases El encapsulamiento provee protección de atributos y métodos definidos en una clase de forma tal que comportamiento de objetos de una clase

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar

Más detalles

Programación Dirigida a Objetos. MATERIAL COMPLEMENTARIO Tema 5.- Herencia

Programación Dirigida a Objetos. MATERIAL COMPLEMENTARIO Tema 5.- Herencia Tema 5.- Herencia 1. Herencia múltiple en C++: ambigüedad de nombres...2 2. Herencia en SMALLTALK...4 2.1. Determinación de los métodos a ejecutar: self y super...4 2.2. Herencia de métodos y variables

Más detalles

Herencia y Polimorfismo

Herencia y Polimorfismo Herencia y Polimorfismo Dra. Maricela Bravo Universidad Autónoma Metropolitana Unidad Azcapotzalco 1 Herencia en el mundo real Cosa Medio de telecomunicación Medio de transporte Coche Vehiculo aéreo Objeto

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!

Más detalles

Herencia. Implementación en Java

Herencia. Implementación en Java Herencia Implementación en Java Herencia Concepto de Herencia Es el mecanismo que permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente

Más detalles

Recogiendo la basura. Herencia de interfaz Transversal Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Recogiendo la basura. Herencia de interfaz Transversal Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1 Herencia de interfaz. 2013 Transversal Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 Introducción Ante la herencia múltiple alguna solución no controversial tenía que

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA IC,LSC 2003-1 5033 Programación Orientada a Objetos I PRÁCTICA No. 11 LABORATORIO DE NOMBRE DE LA PRÁCTICA Ingeniero en Computación, Lic.

Más detalles

Programación Tema 7: Relaciones entre clases. Programación DIT-UPM

Programación Tema 7: Relaciones entre clases. Programación DIT-UPM Programación Tema 7: Relaciones entre clases 1 Contenidos l Polimorfismo l Implementación de interfaces l Uso de interfaces l Jerarquías de interfaces l Extensión l Jerarquía de extensión 2 Polimorfismo

Más detalles

UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA

UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA Analista Programador Universitario Universidad Nacional de Jujuy JTP Jorge R. Mendoza Implementación de propiedades de los objetos Java Contenido

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona

Más detalles

Ejercicio 1 (proyecto prlistas, paquete listas)

Ejercicio 1 (proyecto prlistas, paquete listas) PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.

Más detalles

SEMESTRE: 1 SEMESTRE GRADO: 1 GRADO GRUPO: E1

SEMESTRE: 1 SEMESTRE GRADO: 1 GRADO GRUPO: E1 Subsecretaría de Educación Superior DIRECCIÓN GENERAL DE EDUCACIÓN SUPERIOR TECNOLÓGICA INSTITUTO TECNOLÓGICO DE SALINA CRUZ. NOMBRE DEL TEMA: CLASE PRINCIPAL NOMBRE DEL ALUMNO: ZÁRATE LÓPEZ LEONARDO ASIGNATURA:

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión VIII Composición... 4 Herencia... 8 Herencia e Inicialización... 11 Constructor de Superclase...

Más detalles

Curso de Java orientado a Android Parte 2

Curso de Java orientado a Android Parte 2 Curso de Java orientado a Android Parte 2 Introducción Java es un lenguaje de programación orientado a objetos (OOP). En este post cubriremos las características y principios básicos de la programación

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión IX Composición... 4 Herencia... 8 Herencia e Inicialización... 12 Constructor de Superclase...

Más detalles

Tema 1. Herencia y Polimorfismo

Tema 1. Herencia y Polimorfismo ÍNDICE EDA. Unidad didáctica I: Conceptos de Java para Estructuras de Datos Tema 1. Herencia y Polimorfismo 1. Relaciones entre clases: Reutilización del software. 2. La Herencia como soporte Java del

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización Programación orientada a objetos Resumen de Temas Unidad 6: Polimorfismo y reutilización 6.1 Concepto de Polimorfismo Polimorfismo quiere decir "un objeto y muchas formas". Esta propiedad permite que un

Más detalles

2. Tratamiento de objetos con JAVA

2. Tratamiento de objetos con JAVA 2. Tratamiento de objetos con JAVA David Contreras Bárcena (ETSI) - Comillas 71 2.1 Ciclo de Vida de los Objetos Los objetos tienen un tiempo de vida y consumen recursos durante el mismo. Cuando un objeto

Más detalles

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +. APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje

Más detalles

Guía práctica de estudio 08: Polimorfismo

Guía práctica de estudio 08: Polimorfismo Guía práctica de estudio 08: Polimorfismo Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 08: Polimorfismo

Más detalles

Derechos de Acceso: COMPOSICION

Derechos de Acceso: COMPOSICION CLASES Una clase es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearan a partir de la misma. class nombre_clase cuerpo de la clase Derechos de Acceso:

Más detalles

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1 Interfaces Amparo López Gaona Septiembre de 2008 Amparo López Gaona () Interfaces Septiembre de 2008 1 / 1 Interfaces Las interfaces Java permiten al diseñador de clases establecer su forma definiendo

Más detalles

3.6 Interfaces y Paquetes

3.6 Interfaces y Paquetes 3.6 Interfaces y Paquetes Interfaces, implementaciones, paquetes, organización de archivos 3.6.1 Interfaces Declaración, Herencia múltiple, supertipos y subtipos, implementación Introducción vs. Clase

Más detalles

Aplicaciones de Escritorio

Aplicaciones de Escritorio Aplicaciones de Escritorio Introducción n a la Programación Orientada a Objetos con Java Disertantes: Ing. Rasjido, Jose. AdeS Montenegro, Cristian. Agenda Clases y Paquetes. Clases y Paquetes. Modificadores

Más detalles

18. Interfaces Declaración de una interfaz

18. Interfaces Declaración de una interfaz Programación orientada a objetos con Java 191 18. Interfaces Objetivos: a) Definir el concepto de interfaz b) Interpretar el código fuente de una aplicación Java donde aparecen interfaces c) Construir

Más detalles

Práctica 10a. Práctica 10a. José M. Ordax

Práctica 10a. Práctica 10a. José M. Ordax Práctica 10a José M. Ordax chemi@javahispano.org 1 Copyright 2004 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano

Más detalles

Java Interfaces y el concepto de simplicidad

Java Interfaces y el concepto de simplicidad El concepto de Java Interfaces es de sobra conocido por todos. Qué son los Java interfaces?. Esta es una muy buena pregunta.la mayor parte de las veces cuando uno mira la definición de interface suele

Más detalles

Unidad 2. Elementos Intermedios del Lenguaje

Unidad 2. Elementos Intermedios del Lenguaje Unidad 2 Elementos Intermedios del Lenguaje Paradigmas de Programación Un paradigma de programación se refiere a la forma en que se entiende, diseña y desarrolla una aplicación Imperativo Declarativo Funcional

Más detalles

Introducción a Java. Introducción a Java. Programación I

Introducción a Java. Introducción a Java. Programación I Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32

Más detalles

Examen Teórico Convocatoria de Junio de 2012

Examen Teórico Convocatoria de Junio de 2012 Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica

Más detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 2: Jerarquía de clases en Java Objetivos Implementar una jerarquía de clases para crear una aplicación en Java Comprender

Más detalles

Definición. Mónica E. García García Feb 07

Definición. Mónica E. García García Feb 07 Tema 11: Herencia 0 Definición Cuando inicialmente se modelan dos cosas y se tienen datos duplicados y además pudiera darse que el número de métodos también es similar así como la implementación, se requiere

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica

Más detalles

Tema 10: Interfaces. Índice

Tema 10: Interfaces. Índice Tema 10: Interfaces Antonio J. Sierra Índice 1. Definición de una interfaz. 2. Implementación y uso de una interfaz. 3. Extensión de las interfaces. 4. Modelado UML de las interfaces. 5. Casos de uso.

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Más detalles

Taller de Programación I. Tema 10: Herencia en Java

Taller de Programación I. Tema 10: Herencia en Java INACAP Universidad Tecnológica de Chile Sede Santiago Centro Taller de Programación I Curso Java J2SE Tema 10: Herencia en Java Ing. Manuel López Ramos (versión 1) Parte I Qué es la herencia entre clases?

Más detalles

Sebastián García Galán

Sebastián García Galán Universidad de Jaén E.U.P. Linares Dpto. Telecomunicaciones Área de Ingeniería Telemática Sebastián García Galán sgalan@ujaen.es Variables y tipos de datos Operaciones y operadores Clases y objetos Tipos

Más detalles

INTRODUCCION A LA PROGRAMACION EN JAVA

INTRODUCCION A LA PROGRAMACION EN JAVA Departament d Arquitectura de Computadors INTRODUCCION A LA PROGRAMACION EN JAVA Java 1 y 2 Diferencias entre Java1 y Java2 Mejoras en las interficies gráficas (Swing) Amplias mejoras en las librerías

Más detalles

Universidad de Cantabria

Universidad de Cantabria Polimorfismo Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Comprender el mecanismo del polimorfismo Aprender a utilizar el

Más detalles

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo. Programación II. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Comprender que es ligadura e identificar sus tipos.

Más detalles

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo. Programación II. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Específicos Comprender que es ligadura e identificar

Más detalles

POO: Clases y objetos

POO: Clases y objetos POO: Clases y objetos Programación de aplicaciones 1 Introducción En los lenguajes de programación orientados a objetos, tenemos la posibilidad de extender el lenguaje mediante la creación de nuevo tipos,

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Clases abstractas e Mg. Ricardo Coppo rcoppo@uns.edu.ar La clase Object Todas las clases de Java son descendientes de la clase Object No es necesario

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

Soluciones Ejercicios Tema 1

Soluciones Ejercicios Tema 1 BonoMetro (I) 1 Soluciones Ejercicios Tema 1 Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia

Más detalles

Programación orientada a objetos. Introducción

Programación orientada a objetos. Introducción Programación orientada a objetos Clases: Polimorfismo Introducción El polimorfismo, en general, es la característica de un lenguaje orientado a objetos que permite que un mismo identificador de método

Más detalles

Examen Teórico. Convocatoria de Febrero de 2015

Examen Teórico. Convocatoria de Febrero de 2015 Examen Teórico Convocatoria de Febrero de 2015 Nombre: DNI: Grupo: 1. Contesta de forma razonada a las siguientes cuestiones relacionadas con los ficheros.jar: a) Para qué se utilizan los ficheros con

Más detalles

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente. HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la

Más detalles

Concurso: Cuánto sabes de JAVA?

Concurso: Cuánto sabes de JAVA? Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos

Más detalles

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; } PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)

Más detalles

Clases Abstractas e Interfaces

Clases Abstractas e Interfaces Clases Abstractas e Interfaces Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender a crear y utilizar clases y métodos abstractos

Más detalles

3.1 Introducción a TDA y OO. Capítulo III. Tipos de Datos Abstractos, Orientación a Objetos y Lenguaje Java

3.1 Introducción a TDA y OO. Capítulo III. Tipos de Datos Abstractos, Orientación a Objetos y Lenguaje Java Capítulo III 3.1 Introducción a TDA y OO Tipos de Datos Abstractos, Orientación a Objetos y Lenguaje Java Problemas en el Desarrollo de Grandes Programas ❶ Cómo organizar una pieza de software, de manera

Más detalles

TEMA 5. Agenda. Herencia

TEMA 5. Agenda. Herencia TEMA 5 Herencia V1.3 Manuel Pereira González Agenda Implementación Métodos Heredados vs Sobreescritos La Clase Object Resumen 1 Introducción Herencia Una clase (subclase ó clase hija) hereda la estructura

Más detalles

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Ejecución de hebras En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Hebras vs. Procesos Los cambios de contexto son más costosos en

Más detalles

3. LA HERENCIA. Necesidad de la herencia

3. LA HERENCIA. Necesidad de la herencia página 1 3. LA HERENCIA Necesidad de la herencia La mente humana clasifica los conceptos de acuerdo a dos dimensiones: pertenencia y variedad. Se puede decir que el Ford Fiesta es un tipo de coche (variedad

Más detalles

Examen Teórico. Convocatoria de Julio de 2015

Examen Teórico. Convocatoria de Julio de 2015 Examen Teórico Convocatoria de Julio de 2015 Nombre: DNI: Grupo: 1. Sobre la ejecución de aplicaciones Java desde la línea de comandos: a) Explica el significado y uso del parámetro cp. b) Indica si la

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Herencia PRÁCTICA NÚM. [ 4 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje de Programación

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría Java en 2 horas Rodrigo Santamaría Generalidades 2 Desarrollado por Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión interna de

Más detalles

Conceptos más avanzados de Programación Orientada a Objetos

Conceptos más avanzados de Programación Orientada a Objetos Conceptos más avanzados de Programación Orientada a Objetos Programación 2008 Licenciatura de Lingüística y Nuevas Tecnologías Repaso: API de Java API = Application Programming Interface Una API describe

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática

Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Introducción. Conversión

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM. Programación en Java Diciembre 2010 Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia

Más detalles

A3F. Polimorfismo. Carlos Fontela

A3F. Polimorfismo. Carlos Fontela Polimorfismo Carlos Fontela cfontela@fi.uba.ar Temario Métodos virtuales Métodos abstractos Polimorfismo como concepto Interfaces Clases internas 2c2010 2 cb := CuentaBancaria new. cc := CuentaCorriente

Más detalles

Tema 6: Herencia. (El lenguaje C++)

Tema 6: Herencia. (El lenguaje C++) (El lenguaje C++) 1 Índice 2 1. Herencia 3 En C++ pueden ser definidas clases en términos de otras clases (composición). En C++ también podemos definir una clase a partir de otra preexistente utilizando

Más detalles

Java Herencia vs Interfaces

Java Herencia vs Interfaces Java Herencia vs Interfaces es una de las comparaciones más típicas cuando uno empieza a programar en Java. Siempre se generan dudas de cuando usar cada una de ellas ya que su comportamiento es similar.

Más detalles

Unidad Didáctica 10. Concepto de Tipo y Subtipo Diseño e Implementación. Versión 1.0.0

Unidad Didáctica 10. Concepto de Tipo y Subtipo Diseño e Implementación. Versión 1.0.0 Unidad Didáctica 10 Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.0 Índice 1. Concepto de Tipo y Subtipo 2.

Más detalles

En anteriores ejemplos se ha visto que una clase tiene datos miembro que son instancias de otras clases. Por ejemplo:

En anteriores ejemplos se ha visto que una clase tiene datos miembro que son instancias de otras clases. Por ejemplo: Herencia Composición En anteriores ejemplos se ha visto que una clase tiene datos miembro que son instancias de otras clases. Por ejemplo: class Circu l o { Punto cent r o ; int radi o ; float supe r f

Más detalles

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida } REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)

Más detalles

PROGRAMACION ORIENTADA A OBJETOS EN C++

PROGRAMACION ORIENTADA A OBJETOS EN C++ PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

Herencia: relación es un

Herencia: relación es un Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid de abril de 007 : relación es un I Seres materiales Seres inertes Seres vivos Coches Plantas Animales Renault Flores

Más detalles

Java Básico. Polimorfismo. Copyright

Java Básico. Polimorfismo. Copyright Java Básico Polimorfismo Copyright Copyright (c) 2004 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano v1.0 o posterior.

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra l.guerra@upm.es Curso INEM. Programación en Java Marzo 2011 Índice Previo Repaso y encapsulación Empaquetado Relaciones entre clases Herencia

Más detalles

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

PARTE TEÓRICA - TEST [2,5 PUNTOS]: UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA 71901072 PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)

Más detalles

Práctica 11e. Práctica 11e. José M. Ordax

Práctica 11e. Práctica 11e. José M. Ordax Práctica 11e José M. Ordax chemi@javahispano.org 1 Copyright 2005 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano

Más detalles

Examen Teórico. Convocatoria de Febrero de 2016

Examen Teórico. Convocatoria de Febrero de 2016 Examen Teórico Convocatoria de Febrero de 2016 Nombre: DNI: Grupo: 1. Responde a las siguientes cuestiones: a) Un programador Java empaqueta el código de un proyecto en el fichero videojuego.jar cuya clase

Más detalles

Tema 5. Herencia. Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada

Tema 5. Herencia. Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada Tema 5 Herencia Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada Qué es la Herencia? Propiedad de que las instancias de una clase hija tengan acceso a la estructura de datos* y

Más detalles

2ª Parte: Problemas (5 puntos sobre 10)

2ª Parte: Problemas (5 puntos sobre 10) NOMBRE: APELLIDOS: NIA: GRUPO: 2ª Parte: Problemas (5 puntos sobre 10) Duración: 1 hora 45 minutos Puntuación máxima: 5 puntos Fecha: 17 de Junio de 2013 PROBLEMA 1 (3 puntos) El sistema de gestión de

Más detalles

El concepto de Java Package Encapsulation

El concepto de Java Package Encapsulation El concepto de Java Package encapsulation no es conocido por todos. Todos los desarrolladores conocemos que existe public, private, protected y package visibility como operadores de ámbito. Sin embargo

Más detalles

Programación II Práctica 04: Objetos

Programación II Práctica 04: Objetos Introducción Programación II Práctica 04: Objetos Versión del 01/05/2016 En la siguiente práctica se utilizarán los conceptos de: herencia, sobrescritura, polimorfismo, abstract, extends e implements.

Más detalles

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto ! Programación Orientada a Objetos con Java Rafael Rivera López Elementos Básicos del Lenguaje Java II Ingeniería en Sistemas Computacionales Agosto-Diciembre de 2004 Veracruz, Ver. Relación entre clases

Más detalles

Java: Clases Abstractas e Interfaces

Java: Clases Abstractas e Interfaces Java: Clases Abstractas e Interfaces Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl Clases abstractas e interfaces v A nivel conceptual,

Más detalles

Polimorfismo de tipo (en la herencia)

Polimorfismo de tipo (en la herencia) Polimorfismo de tipo (en la herencia) Pablo San Segundo (C-206) pablo.sansegundo@upm.es Índice Overriding (especialización o redefinición) Static bind (enlace estático) Dynamic bind (enlace dinámico) Clases

Más detalles

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos 1 Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente,

Más detalles

CLASE 9 -HERENCIA Y POLIMORFISMO

CLASE 9 -HERENCIA Y POLIMORFISMO CLASE 9 -HERENCIA Y POLIMORFISMO INTRODUCCIÓN Diferentes tipos de objetos con características y comportamiento comunes. lado1 lado2 lado3 color de línea color de relleno punto Triángulo Círculo radio color

Más detalles

Java interface y extensibilidad

Java interface y extensibilidad En Java el uso de interfaces es algo común en la programación del día a día. Sin embargo también es bastante común tener muchas dudas de para que sirve un interface. Normalmente nos podemos encontrar con

Más detalles

Interfaces. Agustín J. González ELO-326: Seminario I 2do. Sem. 2001

Interfaces. Agustín J. González ELO-326: Seminario I 2do. Sem. 2001 Interfaces Agustín J. González ELO-326: Seminario I 2do. Sem. 2001 1 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.

Más detalles

Los Constructores(1)

Los Constructores(1) Java: Definición de Clases y Objetos Presentación basada en: 1. Como Programar en Java. Deitel y Deitel. Ed. Prentice-Hall. 1988 2. Java 2., Curso de programación. Fco. Javier Ceballos. Ed. Alfoomega&RA-MA,

Más detalles

Tema 6. Threads: programas multitarea

Tema 6. Threads: programas multitarea Tema 6. Threads: programas multitarea Procesos e hilos Creación de threads Ciclo de vida de un thread Sincronización Prioridades Grupos de threads Relación de métodos Ejemplo sincronización 1 Procesos

Más detalles

Relaciones entre clases

Relaciones entre clases Relaciones entre clases 1 Humberto Cervantes Maceda Alfonso Martínez Martínez Abril 2005 Relaciones entre clases Dependencia Generalización Asociación Realización 2 Relaciones entre clases Dependencia:

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

b) Basta con definir una variable de tipo Alumno (a) y otra de tipo CursoExtraescolar (curso) antes de hacer la llamada al método mediante el

b) Basta con definir una variable de tipo Alumno (a) y otra de tipo CursoExtraescolar (curso) antes de hacer la llamada al método mediante el PRIMER EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 FEBRERO 2014 Apellidos y Nombre: Grupo Algunas reglas: Antes de comenzar el examen, escribe tu nombre y grupo. Lee atentamente el enunciado de

Más detalles