Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016
|
|
- Martín Iglesias Cano
- hace 5 años
- Vistas:
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 Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Clase Object. Autoboxing. Igualdad de objetos. Copia de objetos.
Más detallesTema 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 detallesTema 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 detallesTema 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 detallesProgramació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 detallesExamen 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 detallesTema 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 detallesProgramació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 detallesExamen 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 detallesTema 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 detallesTema 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 detallesHERENCIA (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 detallesDiseñ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 detallesPROGRAMACIÓ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 detallesEntiendo 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 detallesHerencia. 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 detallesProgramació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 detallesUnidad 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 detallesIntroducció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 detallesUnidad 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 detallesTema 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 detallesTema 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 detallesExamen 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 detalles16. 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 detallesUnidad 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 detallesHerencia: 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 detallesUnidad 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 detallesExamen 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 detallesTema 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 detallesCentro 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 detallesTema 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 detalles2. 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 detallesPrá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 detallesHerencia 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 detallesColas 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 detallesExamen 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 detallesCurso 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 detallesFundamentos 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 detallesCurso 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 detallesConceptos 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 detallesCentro 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 detallesTEMA 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 detallesINICIACIÓ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 detallesMé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 detallesReutilizació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 detallesIntroducció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 detallesPROGRAMACIÓ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 detallesHerencia 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 detalles6. 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 detallesManejo 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 detallesINTERFACES 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 detallesObjetivos. 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 detallesPRÁ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 detallesEjercicio 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 detallesProgramació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 detallesSesió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 detallesProgramació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 detallesGuí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 detallesClases 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 detallesTema 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 detallesINTERFACES 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 detallesCaracterí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 detallesHerencia 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 detallesInterfaces. 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 detallesHerencia 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 detallesPROGRAMACIÓ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 detallesProgramació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 detallesTema 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 detallesA3F. 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 detallesConstrucciones 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 detallesPOO: 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 detallesHerencia. 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 detallesESTRUCTURA 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 detallesA3F. 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 detallesPrá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 detallesClases 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 detallesUNIDAD 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 detallesPatrones 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 detallesEJERCICIO 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 detallesTema 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 detallesPatrones 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 detallesEjercicio 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 detallesTema 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 detallesRTTI 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 detallesClases 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 detallesQué 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 detallesFACULTAD 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 detallesConcurso: 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 detallesANEXO 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 detallesInterfaces 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 detalles18. 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 detallesJava 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 detallesEjercicio 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 detallesReutilizació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 detallesDefinició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 detallesProgramació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 detallesPROGRAMACIÓ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