Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

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

Download "Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016"

Transcripción

1 Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos

2 Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Interfaces. Clase Object. Autoboxing. Copia de objetos. Igualdad de objetos. Programación Orientada a Objetos 2

3 Restringir la herencia Es seguro permitir que los subtipos redefinan cualquier método? La redefinición incorrecta del algoritmo del método liquidar() podría comprometer la consistencia y seguridad de la aplicación. En Java se puede aplicar el modificador final a un método para indicar que no puede ser redefinido. Asimismo, el modificador final es aplicable a una clase indicando que no se puede heredar de ella. Programación Orientada a Objetos 3

4 Restringir la herencia public class Deposito { public final double liquidar() { return getcapital() + getintereses(); El algoritmo del método liquidar es el mismo para todos los depósitos, no se puede redefinir. Programación Orientada a Objetos 4

5 Visibilidad para la herencia Puede tener sentido que algunos atributos y métodos de una clase, sin ser públicos, puedan ser accesibles a las subclases. Ejemplo: el atributo capital de Deposito. Nivel de visibilidad protegido (protected): visibilidad para las subclases y las clases del mismo paquete. Es discutible el uso de visibilidad protegida para los atributos En contra de la ocultación de la información. Para los métodos, la visibilidad protegida es útil. Programación Orientada a Objetos 5

6 Niveles de visibilidad En Java, los niveles de visibilidad son incrementales public protected () paquete private public todo el código protected clase + paquete + subclases (nada) clase + paquete private clase Programación Orientada a Objetos 6

7 Revisión redefinición de métodos Al redefinir un método podemos cambiar su implementación (refinamiento, reemplazo). También se puede cambiar el nivel de visibilidad de la declaración para incrementarlo. Es posible cambiar el tipo de retorno a otro más específico (subclase) Regla covariante. Ejemplo: en DepositoGarantizado podemos obligar a que los titulares sean de tipo PersonaPreferente, subclase de Persona. En este caso, el método de consulta se redefine como PersonaPreferente gettitular(). Programación Orientada a Objetos 7

8 Clases abstractas Motivación: En la aplicación bancaria observamos que tanto las cuentas como los depósitos tienen dos características en común: tienen un titular y pagan impuestos. Identificamos el concepto Producto Financiero y definimos una clase que sea padre de Deposito y Cuenta (Generalización). Se realiza la refactorización del código de las clases Deposito y Cuenta para subir la funcionalidad relativa al titular a la nueva clase. Además se introduce el método getimpuestos() que calcula los impuestos como el 21% del beneficio del producto. Programación Orientada a Objetos 8

9 Jerarquía de herencia Programación Orientada a Objetos 9

10 Clase ProductoFinanciero public class ProductoFinanciero { private Persona titular; public ProductoFinanciero(Persona titular) { this.titular = titular; public Persona gettitular() { return titular; public double getimpuestos() { return getbeneficio() * 0.21; Programación Orientada a Objetos 10

11 Clases abstractas Cómo se calcula el beneficio de un producto financiero? Tiene sentido incluir una implementación por defecto que retorne cero? El métodogetbeneficio() no puede ser implementado en la clase ProductoFinanciero. El métodogetbeneficio() es abstracto. Es responsabilidad de las subclases implementarlo adecuadamente. La claseproductofinanciero es abstracta, ya que tiene un método abstracto. Programación Orientada a Objetos 11

12 Clase ProductoFinanciero public abstract class ProductoFinanciero { private Persona titular; public ProductoFinanciero(Persona titular) { this.titular = titular; public Persona gettitular() { return titular; public double getimpuestos() { return getbeneficio() * 0.21; public abstract double getbeneficio(); Programación Orientada a Objetos 12

13 Jerarquía de herencia Programación Orientada a Objetos 13

14 Clases abstractas Una clase abstracta define un tipo, como cualquier otra clase. Sin embargo, no se pueden construir objetos de una clase abstracta. Los constructores sólo tienen sentido para ser utilizados en las subclases. Justificación de una clase abstracta: declara o hereda métodos abstractos y/o representa un concepto abstracto para el que no tiene sentido crear objetos: un objeto producto financiero o figura geométrica? Programación Orientada a Objetos 14

15 Clases parcialmente abstractas Clases que tienen métodos abstractos y efectivos (implementados) Ejemplo: Producto Financiero. Método plantilla: método efectivo que hace uso de métodos abstractos. Ejemplo: getimpuestos(). Importante mecanismo para definir código reutilizable. Definen comportamiento común a todos los descendientes. Programación Orientada a Objetos 15

16 Limitaciones de la herencia La compatibilidad de tipos que proporciona la herencia resulta útil: variables y estructuras polimórficas, código reutilizable, etc. Los tipos que representan los objetos de una clase son: El tipo que define la clase. El tipo de cada uno de sus ascendientes. La herencia simple limita el número de tipos que pueden representar los objetos de una clase. Solución: interfaces Programación Orientada a Objetos 16

17 Interfaces Construcción proporcionada por Java para la definición de tipos (sin implementación). Se dice que una clase implementa una interfaz. El número de interfaces que puede implementar una clase no está limitado (implementación múltiple de interfaces). Los tipos que representan los objetos de una clase pueden ser ampliados con la implementación de interfaces. Programación Orientada a Objetos 17

18 Interfaz Amortizable Ejemplo: un deposito es amortizable si permite rescatar parte del capital antes del vencimiento. Se define este tipo de depósitos como una interfaz. public interface Amortizable { boolean amortizar(double cantidad); Programación Orientada a Objetos 18

19 Interfaz Amortizable Por defecto, en una interfaz la visibilidad de las declaraciones es pública. Las interfaces pueden incorporar declaraciones (simplificadas) de constantes: public interface Amortizable { double LIMITE = ; boolean amortizar(double cantidad); Programación Orientada a Objetos 19

20 Implementación de una interfaz Ejemplo: sólo los depósitos garantizados y los penalizables pueden ser amortizables. Las dos clases implementan la interfaz: public class DepositoPenalizable extends Deposito implements Amortizable public boolean amortizar(double cantidad) { if (cantidad > capital) return false; capital = capital - cantidad; return true; Programación Orientada a Objetos 20

21 Interfaces Programación Orientada a Objetos 21

22 Extensión de interfaces Una interfaz puede extender otras interfaces: public interface Flexible extends Amortizable, Incrementable { void actualizartipointeres(double tipo); Programación Orientada a Objetos 22

23 Interfaces Resumen Las interfaces definen tipos que deben ser implementados por clases. Amortizable deposito = new DepositoPenalizable( ); Si una clase no implementa algún método de una interfaz debe declararse abstracta. Una interfaz define un tipo, pero no se pueden construir objetos de una interfaz: Amortizable deposito = new Amortizable(); // Error Las interfaces resuelven la limitación de tipos impuesta por la herencia simple. Programación Orientada a Objetos 23

24 Clase Object El lenguaje Java define la clase Object como raíz de la jerarquía de todas las clases del lenguaje. Todas las clases heredan directa o indirectamente de la clase Object: Si una clase no hereda de ninguna otra, el compilador añade extends Object a su declaración. Una variable de tipo Object puede apuntar a cualquier tipo del lenguaje: Objetos creados a partir de clases. Tipos primitivos gracias al autoboxing. Programación Orientada a Objetos 24

25 Clase Object y Autoboxing El autoboxing es un mecanismo automático encargado de convertir objetos en tipos primitivos y viceversa. De este modo, una referencia de tipo Object puede apuntar a cualquier tipo de datos. Conversión de tipos primitivos a objetos: Java construye objetos envoltorio donde almacenar los valores primitivos. Para cada tipo primitivo hay una clase envoltorio: Integer para int, Double para double, etc. La conversión de un objeto en un tipo primitivo requiere hacer el casting al tipo envoltorio. Object obj = 3; int entero = (Integer)obj; Programación Orientada a Objetos 25

26 Métodos clase Object En Java, la clase Object incluye las características comunes a todos los objetos: public boolean equals(object obj) Igualdad de objetos protected Object clone() Clonación de objetos public String tostring() Representación textual de un objeto public final Class getclass() Clase a partir de la que ha sido instanciado un objeto. public int hashcode() Código hash utilizado en las colecciones. Programación Orientada a Objetos 26

27 Copia de objetos La asignación de referencias (=) copia el oid del objeto y no la estructura de datos. Para obtener una copia de un objeto hay que aplicar el método clone. El método clone está implementado en la clase Object (es heredado) pero no es aplicable por otras clases (visibilidad protected). La clase debe redefinir el método clone para aumentar la visibilidad y crear una copia que se adapte a sus necesidades. La implementación de clone() en la clase Object construye una copia superficial de la instancia actual. Programación Orientada a Objetos 27

28 Tipos de copia Tipos de copia: Copia superficial: los campos de la copia son exactamente iguales a los del objeto receptor. Copia profunda: los campos primitivos de la copia son iguales y las referencias a objetos son copias profundas. Adaptada a las necesidades de la aplicación. Programación Orientada a Objetos 28

29 Copia superficial de Cuenta Copia superficial: Aliasing incorrecto al compartir las últimas operaciones. No deberían tener el mismo código titular codigo saldo ultoper cuenta J. Gomez copia nombre dni Objeto Persona titular codigo saldo ultoper Programación Orientada a Objetos 29

30 Copia profunda de Cuenta Copia profunda: No tiene sentido duplicar el objeto persona y que tengan el mismo código. cuenta copia titular codigo saldo ultoper titular codigo saldo ultoper J. Gomez J. Gomez Programación Orientada a Objetos 30

31 Copia correcta de Cuenta Copia adaptada: cumple los requisitos de la aplicación cuenta copia titular codigo titular codigo saldo saldo ultoper ultoper J. Gomez Programación Orientada a Objetos 31

32 Método clone en Cuenta public class Cuenta implements Cloneable{ public Cuenta clone(){ Cuenta copia = null; try{ copia = (Cuenta)super.clone(); copia.codigo = ++ultimocodigo; copia.ultimasoperaciones = Arrays.copyOf(ultimasOperaciones, ultimasoperaciones.length); catch (CloneNotSupportedException e){ // No sucede si la clase es Cloneable System.err.println("La clase no implementa " + "la interfaz Cloneable"); return copia; Programación Orientada a Objetos 32

33 Método clone Recomendaciones Aumentar la visibilidad del método clone() para pasar de protected a public Aplicar la regla covariante para establecer el tipo de la clase (el tipo de la copia). Realizar una copia basada en la implementación de clone() en Object copia superficial Tratar el error de copia, sin hacer nada (las excepciones se estudian en el tema 5). No se produce ningún error de copia si la clase implementa la interfaz vacía Cloneable. Adaptar la copia superficial según las necesidades de la aplicación. Programación Orientada a Objetos 33

34 Método clone Recomendaciones Ejemplo de adaptación en la clase Cuenta: Resuelve el aliasing incorrecto del array. Asigna un nuevo código de cuenta a la copia. Importante: implementar el método clone() a partir de la copia superficial hace que la implementación sea heredable La llamada al método clone() de Object siempre retorna un objeto igual a la instancia actual. Una subclase sólo necesitaría redefinir el método si los atributos que aporta no son copiados correctamente con la copia superficial (por ejemplo, aliasing incorrecto). Programación Orientada a Objetos 34

35 Método clone Recomendaciones En herencia, aunque el método clone heredado sea correcto, conviene redefinirlo aplicando la regla covariante y llamar a la versión del padre: public class CuentaRemunerada extends Cuenta { public CuentaRemunerada clone(){ return (CuentaRemunerada)super.clone(); Nota: el casting siempre será correcto, ya que la copia superficial siempre garantiza que el objeto que retorna es del tipo de la instancia actual. Programación Orientada a Objetos 35

36 Igualdad de objetos a c El operador == se utiliza para consultar la identidad de referencias dos referencias son idénticas si contienen el mismo oid. uno 23 Identidad entre referencias: a == c; // True a == b; // False b uno El método equals permite implementar la igualdad de objetos. 23 d dos 23 Programación Orientada a Objetos 36

37 Método equals La implementación en la clase Object consiste en comprobar la identidad del objeto receptor y el parámetro. public boolean equals(object obj) { return this == obj; Por tanto: a.equals(b); // False Es necesario redefinir el método equals en las clases donde necesitemos la operación de igualdad. Sin embargo, hay que elegir la semántica de igualdad más adecuada para la clase. Programación Orientada a Objetos 37

38 Tipos de igualdad Tipos de igualdad: Superficial: los campos primitivos de los dos objetos son iguales y las referencias a objetos idénticas (comparten los mismos objetos). Profunda: los campos primitivos son iguales y las referencias son iguales (equals) en profundidad. Adaptada a las necesidades de la aplicación. Programación Orientada a Objetos 38

39 Método equals en public boolean equals(object obj) { if (obj == null) return false; if (obj == this) return true; if (obj.getclass()!= this.getclass()) return false; Cuenta otracta = (Cuenta)obj; return (this.codigo == otracta.codigo) && (this.titular == otracta.titular) && (this.saldo == otracta.saldo) && (this.estado == otracta.estado) && (Arrays.equals(this.ultimasOperaciones, otracta.ultimasoperaciones); Programación Orientada a Objetos 39

40 Método equals en Cuenta Explicación de la implementación: 1. Caso trivial: el parámetro es la referencia nula. 2. Caso trivial: dos objetos con el mismo oid siempre serán iguales. 3. Comprueba que el tipo dinámico de los objetos sea el mismo (método getclass). Ejemplo: un depósito garantizado nunca será igual que un depósito estructurado. 4. Realiza el casting del parámetro (siempre de tipo Object) para poder comparar sus atributos La consulta del tipo dinámico garantiza el casting correcto. 5. Comparación de los atributos Nota: un objeto tiene acceso a los atributos de otro de su misma clase. Programación Orientada a Objetos 40

41 Método equals en herencia El método equals() heredado en una subclase es correcto si: No aporta nuevos atributos. Los atributos que aporta no se tienen en cuenta en la igualdad. Si fuera necesario redefinir, debe reutilizarse la versión heredada: public boolean equals(object obj) { if (super.equals(obj) == false) return false; CuentaRemunerada otroobj = (CuentaRemunerada)obj; return ; // compara atributos propios Programación Orientada a Objetos 41

42 Método hashcode Devuelve un número que representa el código de dispersión (código hash) de un objeto. Importante si los objetos se almacenan en colecciones cuya implementación se basa en una tabla de dispersión (HashMap y HashSet, se estudian en tema 4). Importante: la implementación del hashcode() tiene que ser consistente con la implementación del equals() Sio1.equals(o2) es true entonces o1.hashcode() == o2.hashcode() Lo contrario no tiene por qué ser cierto. Programación Orientada a Objetos 42

43 Método hashcode La implementación por defecto del método hashcode() deriva el código de dispersión de la dirección de memoria del objeto. Importante: si en una clase se redefine el método equals() también hay que redefinir el método hashcode() para que las implementaciones sean consistentes. La implementación del método hashcode() se calcula como una combinación del código hash de cada uno de los atributos. En el caso de atributos de tipo primitivo se utilizan las clases envolventes, salvo para el tipo int. Siguiendo la implementación, la probabilidad de que objetos distintos tengan el mismo código de dispersión es muy baja. Programación Orientada a Objetos 43

44 Método hashcode en Cuenta Patrón de redefinición del método public int hashcode() { int primo = 31; int result = 1; result = primo * result + codigo; result = primo * result + ((titular == null)? 0 : titular.hashcode()); result = primo * result + new Double(saldo).hashCode(); result = primo * result + ((estado == null)? 0 : estado.hashcode()); result = primo * result + Arrays.hashCode(ultimasOperaciones); return result; Programación Orientada a Objetos 44

45 Método hashcode en herencia El método hashcode()se redefine en una subclase si se ha redefinido el método equals() consistencia de las implementaciones. La redefinición debe reutilizar la versión heredada. public int hashcode() { int primo = 31; int result = super.hashcode(); // añadir atributos utilizados en equals() redefinido result = primo * result + ; return result; Programación Orientada a Objetos 45

46 Método tostring en Cuenta Patrón de redefinición del método public String tostring() { return getclass().getname() + "[codigo = " + codigo + ", titular = "+ titular + ", saldo = "+ saldo + ",ultimasoperaciones = " + Arrays.toString(ultimasOperaciones) + "]"; Programación Orientada a Objetos 46

47 Método tostring en herencia El método tostring()debe ser redefinido en una subclase si añade nuevos atributos. En caso de redefinición, reutilizar la versión heredada: public String tostring() { // añade a la cadena atributos propios return super.tostring() + "[ ]"; La llamada getclass().getname() siempre mostrará correctamente el nombre de la clase: getclass() retorna el tipo de la instancia actual. Programación Orientada a Objetos 47

48 Método getclass() vs operador instanceof El método getclass()retorna el tipo dinámico de la referencia. En general no es recomendado su uso. En su lugar es preferible el operador instanceof para consultar la compatibilidad de tipos. Ejemplo: la consulta con getclass() deja fuera los depósitos garantizados que también son depósitos estructurados (incorrecto). public void settipointeresvariable(double tipo, Deposito[] depositos) { for (Deposito d : depositos) { if (d.getclass() == DepositoEstructurado.class) { Programación Orientada a Objetos 48

49 Seminario 2 Este tema se completa con el seminario 2 (2ª parte). Visibilidad y herencia Clase Object Autoboxing Métodos de la clase Object: igualdad, copia, etc. Clases abstractas. Interfaces. Programación Orientada a Objetos 49

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016 Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Clase Object. Autoboxing. Igualdad de objetos. Copia de objetos.

Más detalles

Tema 3 Herencia. Primera parte. Herencia en Java Programación Orientada a Objetos Curso 2010/2011

Tema 3 Herencia. Primera parte. Herencia en Java Programación Orientada a Objetos Curso 2010/2011 Tema 3 Herencia Primera parte. Herencia en Java Programación Orientada a Objetos Contenido Introducción. Definición y tipos. Constructores. Redefinición. Restringir la herencia. Visibilidad protegida.

Más detalles

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2016/2017

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2016/2017 Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Clase Object. Autoboxing. Igualdad de objetos. Representación textual de objetos. Copia de objetos. Clases

Más detalles

Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016

Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016 Tema 3 Herencia en Java Parte 1 Programación Orientada a Objetos Contenido Introducción. Definición y tipos. Constructores. Redefinición. Polimorfismo. Herencia y sistema de tipos. Ligadura dinámica. Casting

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

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

Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Herencia. Polimorfismo y ligadura. Clase object. Casting. Compatibilidad de tipos. Clases abstractas.

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

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

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011 Tema 6 Patrones de Diseño Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción a los patrones de diseño. Patrón del Método plantilla. Patrón Composición. Patrón Estrategia. Clases anónimas

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

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

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Diseño de tipos Igualdad, representación, código, copia y relación de orden Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones

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

Entiendo los métodos de Java equals y hashcode

Entiendo los métodos de Java equals y hashcode Todos los días cuando programamos usamos objetos y en muchas ocasiones necesitamos comparar unos con otros. Para ello en muchas ocasiones usamos los métodos de de Java equals y hashcode. Estos 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

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia Programación orientada a objetos Capítulo 8 Mejora de las estructuras mediante herencia Clases y objetos de DoME Modelo de objetos Modelo de clases Crítica de la v1 de DoME - Duplicación de código - Las

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

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

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

Tema 2: Clase y objetos en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 2: Clase y objetos en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 2: Clase y objetos en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Introducción. Clases. Propiedades. Visibilidad. Espacios de nombres. Ensamblados. Tipos del lenguaje.

Más detalles

Tema 2: Clases y Objetos en Java. Programación Orientada a Objetos Curso 2010/2011

Tema 2: Clases y Objetos en Java. Programación Orientada a Objetos Curso 2010/2011 Tema 2: Clases y Objetos en Java Programación Orientada a Objetos Curso 2010/2011 Contenido Clases. Objetos. Tipos del lenguaje. Relación de clientela. Semántica referencia. Métodos y mensajes. Instancia

Más detalles

Examen Teórico. Convocatoria de Febrero de 2018

Examen Teórico. Convocatoria de Febrero de 2018 Examen Teórico Convocatoria de Febrero de 2018 Nombre: DNI: Grupo: 1. Dado un proyecto Java en Eclipse que tiene como clase principal proyecto.programa y requiere de la librería matemática de Apache commons-math.jar,

Más detalles

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz 168 A. García-Beltrán y J.M. Arranz 16. Herencia Objetivos: a) Definir el concepto de herencia entre clases b) Interpretar el código fuente de una aplicación Java donde aparecen clases relacionadas mediante

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

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

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

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

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

Tema 2: Clases y Objetos. Programación Orientada a Objetos Curso 2015/2016

Tema 2: Clases y Objetos. Programación Orientada a Objetos Curso 2015/2016 Tema 2: Clases y Objetos Programación Orientada a Objetos Curso 2015/2016 Contenido Clases. Objetos. Tipos del lenguaje. Relación de clientela. Semántica referencia. Métodos y mensajes. Instancia actual.

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

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

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

Herencia Java y Servicios Web I Master en Ingeniería Matemática Herencia 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 Extensión mediante herencia.

Más detalles

Colas Implementación con gestión estática de memoria

Colas Implementación con gestión estática de memoria Colas Implementación con gestión estática de memoria Esquema general 0 1 2 3 n - 1... _primero = 0 _ultimo = 0 Esquema general * Añadir un elemento a la cola. 0 1 2 3 n - 1 'a'... 1) _vector[_ultimo] =

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

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

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación Extensión de clases: herencia y polimorfismo 13.12.2010 José A. Mañas Dpto. de Ingeniería de Sistemas Telemá@cos hcp://www.lab.dit.upm.es/~fprg/ extensió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

Conceptos Básicos. Programación Orientada a Objetos 2

Conceptos Básicos. Programación Orientada a Objetos 2 Programación Orientada a Objetos Conceptos Básicos de Objetos Ing. Julio Ernesto Carreño Vargas MsC. Conceptos Básicos Las aproximaciones ADOO y POO, proveen a los objetos como el principal medio para

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 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

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ Tema 3 Clases y Objetos Tema 4 Comunicación entre objetos. Algoritmos Tema 5 Herencia y abstracción de datos Tema 6 Diseño de clases TEMA 5: Herencia

Más detalles

Métodos de Programación

Métodos de Programación Métodos de Programación Tema 1. Introducción al diseño y especificación Tema 2. Clases, referencias y objetos en Java Tema 3. Modularidad y abstracción: aspectos avanzados Tema 5. Tratamiento de errores

Más detalles

Reutilización con Delegación y Herencia

Reutilización con Delegación y Herencia Reutilización con Delegación y Herencia Carlos Fontela cfontela@fi.uba.ar Temario Delegación Herencia UML: clases, paquetes, secuencias Cuándo usar herencia y cuándo delegación Redefinición Clases abstractas

Más detalles

Introducción a OOP. Programación Orientada a Objeto

Introducción a OOP. Programación Orientada a Objeto Introducción a OOP Programación Orientada a Objeto Evolución Programación no Estructurada, Programación procedimental, Programación modular y Programación orientada a objetos. Programación no Estructurada

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

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

6. Herencia. Clases abstractas. Genericidad. Clase Object Polimorfismo y ligadura dinámica super Herencia y creación Clases abstractas Genericidad

6. Herencia. Clases abstractas. Genericidad. Clase Object Polimorfismo y ligadura dinámica super Herencia y creación Clases abstractas Genericidad 6. Herencia. Clases abstractas. Genericidad Clase Object Polimorfismo y ligadura dinámica super Herencia y creación Clases abstractas Genericidad 1 Herencia en Java Herencia simple Object es la clase raíz

Más detalles

Manejo de Clases y Objetos. Manejo de Clases y Objetos

Manejo de Clases y Objetos. Manejo de Clases y Objetos Cod. 1728.61 PLATAFORMA.NET Y SERVICIOS WEB nestor@lsi lsi.uniovi.es Dpto. de Informática - Laboratorio de Tecnologías de Orientación a Objetos http://www www.ootlab.uniovi.es CONCEPTOS BÁSICOS Objeto:

Más detalles

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C)

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C) APRENDERAPROGRAMAR.COM INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

Objetivos. Objetivos. Herencia. Objetivos. agregar funcionalidad a una clase existente, sin compilar su nueva definición.

Objetivos. Objetivos. Herencia. Objetivos. agregar funcionalidad a una clase existente, sin compilar su nueva definición. (a) objetivos (b) terminología (c) polimorfismo (d) tipeo y herencia (e) vinculación dinámica de código (f) clases abstractas (g) soporte en JAVA (h) significado de la herencia (i) herencia y aserciones

Más detalles

PRÁCTICA 4: DISEÑO DE TIPOS Versión: 1.0.1

PRÁCTICA 4: DISEÑO DE TIPOS Versión: 1.0.1 FUNDAMENTOS DE PROGRAMACIÓN Curso: 2010/11 PRÁCTICA 4: DISEÑO DE TIPOS Versión: 1.0.1 SOLUCIONES Ejercicios 1, 2 y 3 Definición de interfaces Tipo Punto public interface Punto extends Copiable,

Más detalles

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Cursos

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Cursos Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Cursos Previo. Gestión del tiempo. Para la realización del examen es necesario utilizar fechas. A continuación se dan algunas indicaciones:

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

Sesión 7. TEMA 9 Extensión de clases: HERENCIA

Sesión 7. TEMA 9 Extensión de clases: HERENCIA Sesión 7. TEMA 9 Extensión de clases: HERENCIA Fundamentos de Informática José Jaime Noguera Noguera 6 de mayo de 2018 Contenidos 1 Introducción 2 Ejemplo 3 Código 4 Cuestiones 5 Tareas Temario Este es

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

Guía práctica de estudio 07: Herencia

Guía práctica de estudio 07: Herencia Guía práctica de estudio 07: Herencia 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 07: Herencia Objetivo:

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

Tema 4 Genericidad en Java. Programación Orientada a Objetos Curso 2013/2014

Tema 4 Genericidad en Java. Programación Orientada a Objetos Curso 2013/2014 Tema 4 Genericidad en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Antecedentes. Genericidad en Java 5 y posterior. Características avanzadas: Genericidad restringida. Tipo puro. Limitaciones

Más detalles

INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C)

INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C) APRENDERAPROGRAMAR.COM INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Características Avanzadas en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Características Avanzadas en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Características Avanzadas en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Características avanzadas C# incluye características destacadas que no se incluyen en otros lenguajes

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

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

Herencia y Clases Abstractas

Herencia y Clases Abstractas Herencia y Clases Abstractas Reutilización de código y código genérico ELO329: Diseño y Programación Orientados a Objetos Introducción La idea básica es poder crear clases basadas en clases ya existentes.

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

Programación II Objetos en Java

Programación II Objetos en Java Programación II Objetos en Java Definición Objeto: Conjunto de datos y métodos relacionados. Los objetos se alojan en una parte de la RAM reservada al proceso denominada memoria dinámica, y son referenciados

Más detalles

Tema 2: Clases y Objetos. Programación Orientada a Objetos Curso 2017/2018

Tema 2: Clases y Objetos. Programación Orientada a Objetos Curso 2017/2018 Tema 2: Clases y Objetos Programación Orientada a Objetos Curso 2017/2018 Contenido Clases. Objetos. Tipos del lenguaje. Relación de clientela. Semántica referencia. Métodos y mensajes. Instancia actual.

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

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

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

Herencia. Hay clases que comparten gran parte de sus características.

Herencia. Hay clases que comparten gran parte de sus características. Herencia Hay clases que comparten gran parte de sus características. El mecanismo conocido con el nombre de herencia permite reutilizar clases: Se crea una nueva clase que extiende la funcionalidad de

Más detalles

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: NOTA FINAL: Nota Practica (1 punto) + Nota Examen (9 punto) Es indispensable aprobar el examen (4,5 puntos) para aprobar la asignatura (5 puntos) La práctica es opcional Duración:

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 2c2009 2 Métodos virtuales (1) 2c2009 3 Métodos virtuales

Más detalles

Prácticas POO Curso 10/11

Prácticas POO Curso 10/11 Prácticas POO Curso 10/11 Alejandro Bellogín Escuela Politécnica Superior Universidad Autónoma de Madrid Marzo 2011 http://www.eps.uam.es/~abellogin IDE Práctica 2 Java Enunciado Tareas Librerías externas

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

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

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2007/08

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2007/08 Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2007/08 Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para poder adecuarse a futuros

Más detalles

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C) APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014 Tema 4 Colecciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Colecciones (paquete java.util): Interfaz Collection Interfaz List Interfaz Set InterfazMap Copia de

Más detalles

Patrones de Diseño. Ing. Miguel Angel Cedeño Garcidueñas

Patrones de Diseño. Ing. Miguel Angel Cedeño Garcidueñas Patrones de Diseño Ing. Miguel Angel Cedeño Garcidueñas miguelcedega@correo.fie.umich.mx Patrones de Diseño Diseñar software orientado a objetos es difícil, pero diseñar software orientado a objetos reutilizable

Más detalles

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes Introducción El ejercicio consiste en la implementación de una aplicación para la creación, edición, resolución y corrección de exámenes.

Más detalles

Tema 5 Corrección y Robustez Excepciones en Java

Tema 5 Corrección y Robustez Excepciones en Java Tema 5 Corrección y Robustez Excepciones en Java Parte II: Excepciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Introducción Excepciones comprobadas Caso de estudio Tratamiento

Más detalles

RTTI y reflexión Modelos de datos

RTTI y reflexión Modelos de datos RTTI y reflexión Modelos de datos Carlos Fontela cfontela@fi.uba.ar Temario RTTI (información de tipos en tiempo de ejecución) Reflexión Modelo de datos y memoria de Java Otros modelos 1c2010 2 Transformaciones

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

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

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

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

ANEXO II: Resumen de uso de colecciones

ANEXO II: Resumen de uso de colecciones ANEXO II: Resumen de uso de colecciones Este apartado muestra un resumen de uso de las colecciones. El estudio de las colecciones será completado en el tema 4 de la asignatura y en el ejercicio propuesto

Más detalles

Interfaces y Clases Internas

Interfaces y Clases Internas Interfaces y Clases Internas (No es interfaz gráfica, sirve como alternativa a herencia múltiple) ELO329: Diseño y Programación Orientados a Objetos Qué queremos decir con interfaces y clases internas?

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

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

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

Reutilización con Delegación y Herencia

Reutilización con Delegación y Herencia Reutilización con Delegación y Herencia Carlos Fontela cfontela@fi.uba.ar Temario Delegación Herencia UML: clases, paquetes, secuencias Cuándo usar herencia y cuándo delegación Redefinición Clases abstractas

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 (POO) La POO está compuesta por una serie de elementos que se detallan a continuación.

Programación orientada a Objetos (POO) La POO está compuesta por una serie de elementos que se detallan a continuación. Clase 3: 22/08/2016 Programación orientada a Objetos (POO) La POO está compuesta por una serie de elementos que se detallan a continuación. Clase Una clase es un modelo que se utiliza para crear objetos

Más detalles

PROGRAMACIÓN GENÉRICA

PROGRAMACIÓN GENÉRICA PROGRAMACIÓN GENÉRICA Lenguajes de Programación - Orientación a Objetos: Progr. Genérica 1 Programación genérica Objetivo: escribir algoritmos genéricos, independientes de las clases concretas de los datos

Más detalles