Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016
|
|
- Mariano Fernández Domínguez
- hace 5 años
- Vistas:
Transcripción
1 Tema 3 Herencia en Java Parte 1 Programación Orientada a Objetos
2 Contenido Introducción. Definición y tipos. Constructores. Redefinición. Polimorfismo. Herencia y sistema de tipos. Ligadura dinámica. Casting Operador instanceof Programación Orientada a Objetos 2
3 Introducción Entre las clases pueden existir relaciones conceptuales: Extensión, Especialización, Combinación. Ejemplos: Una pila puede definirse a partir de una cola o viceversa Un rectángulo es una especialización de polígono Libros y Revistas tienen propiedades comunes Herencia: Mecanismo para definir y utilizar estas relaciones. Permite la definición de una clase a partir de otra. Programación Orientada a Objetos 3
4 Introducción La herencia organiza las clases en una estructura jerárquica Jerarquía de clases No es sólo un mecanismo de reutilización de código. Es consistente con el sistema de tipos. Ejemplos: PUBLICACION FIGURA LIBRO REVISTA POLIGONO CIRCULO LIBRO_TEXTO INVESTIGACION MAGAZINE RECTANGULO Programación Orientada a Objetos 4
5 Herencia Si la clase B hereda de A, entonces B incorpora la estructura (atributos) y comportamiento (métodos) de la clase A, pero puede incluir adaptaciones: B puede añadir nuevos atributos. B puede añadir nuevos métodos. B puede redefinir métodos heredados (refinar o reemplazar). En general, las adaptaciones dependen del lenguaje OO. Programación Orientada a Objetos 5
6 Herencia Terminología A B hereda de A (A es la superclase y B la subclase) A es la clase padre o clase base de B C hereda de B y A B B y C son subclases de A B es un descendiente directo de A C C es un descendiente indirecto de A A y B son ascendientes de C Programación Orientada a Objetos 6
7 Tipos de herencia B A C Herencia simple: Una clase puede heredar de una única clase. Java, C# D E B A C Herencia múltiple: Una clase puede heredar de varias clases. C++ Programación Orientada a Objetos 7
8 Reconocer la herencia Especialización: Se detecta que una clase es un caso especial de otra. Ejemplo: Rectángulo es un tipo de Polígono. Generalización (factorización): Se detectan dos clases con características en común y se crea una clase padre con esas características. Ejemplo: Libro, Revista Publicación No hay receta mágica para crear buenas jerarquías de herencia. Programación Orientada a Objetos 8
9 Caso de estudio Continuación de la aplicación de gestión bancaria. Se introduce el concepto Depósito que permite a un cliente obtener intereses por su dinero. Un Depósito, simplificado, se define: Propiedades: titular, capital, plazo en días y tipo de interés. Comportamiento: Permite liquidar el depósito devolviendo el capital depositado más los intereses. Permite consultar los intereses generados al vencimiento. Programación Orientada a Objetos 9
10 Clase Deposito 1/2 public class Deposito { private Persona titular; private double capital; private int plazodias; private double tipointeres; public Deposito(Persona titular, double capital, int plazodias, double tipointeres) { } this.titular = titular; this.capital = capital; this.plazodias = plazodias; this.tipointeres = tipointeres; Programación Orientada a Objetos 10
11 Clase Deposito 2/2 public class Deposito { public double getcapital() { } public int getplazodias() { } public double gettipointeres() { } public Persona gettitular() { } } public double liquidar() { return getcapital() + getintereses(); } public double getintereses() { return (plazodias * tipointeres * capital)/365; } Programación Orientada a Objetos 11
12 Caso de Estudio Identificamos el concepto Depósito Estructurado que se caracteriza por tener una parte del capital a tipo fijo y otra parte a tipo variable. Depósito Estructurado es un Depósito? Comparte todas las características de Depósito. Añade nuevas características. La clase DepositoEstructurado hereda de Deposito: Nuevas características: capital a tipo variable y el tipo de interés variable. Programación Orientada a Objetos 12
13 Clase DepositoEstructurado public class DepositoEstructurado extends Deposito { private double tipointeresvariable; private double capitalvariable; public DepositoEstructurado( ) { } } public double getinteresesvariable() { return (getplazodias() * tipointeresvariable * capitalvariable)/365; } public void settipointeresvariable( public double gettipointeresvariable() { } public double getcapitalvariable() { } Programación Orientada a Objetos 13
14 Clase DepositoEstructurado La subclase incluye las características específicas: Atributos: tipo de interés variable y capital a tipo variable. Método de consulta (get) del capital variable. Métodos de consulta/establecimiento (get/set) del tipo de interés variable. Método para el cálculo de los intereses del capital a tipo variable. La clase hija hereda todos los atributos de la clase padre, aunque no los vea debido a la ocultación de la información. La clase dispone de los métodos heredados como si fueran propios (ejemplo, getplazodias()). Programación Orientada a Objetos 14
15 Jerarquía de herencia Programación Orientada a Objetos 15
16 Herencia y constructores En Java los constructores no se heredan. El constructor de un DepositoEstructurado se declara con los mismos parámetros que un Deposito y añade la cantidad de capital a tipo variable. La clase DepositoEstructurado no tiene visibilidad sobre los atributos privados de Deposito. Java permite invocar a los constructores de la clase padre dentro de un constructor utilizando la llamada super( ) Programación Orientada a Objetos 16
17 Clase DepositoEstructurado public class DepositoEstructurado extends Deposito { public DepositoEstructurado(Persona titular, double capitalfijo, double capitalvariable, int plazodias, double tipointeresfijo) { super(titular, capitalfijo, plazodias, tipointeresfijo); } } this.capitalvariable = capitalvariable; Programación Orientada a Objetos 17
18 Herencia y constructores Cuando se aplica herencia, la llamada a un constructor de la clase padre es obligatoria. Debe ser la primera sentencia del código del constructor. Si se omite la llamada, el compilador asume que la primera llamada es super() Llama al constructor sin argumentos de la clase padre. Si no existe ese constructor, la clase no compila. Programación Orientada a Objetos 18
19 Adaptación del código heredado La clase DepositoEstructurado añade nuevas propiedades: capital a tipo variable y tipo de interés variable. Sin embargo, hay que adaptar dos métodos heredados: getcapital(): el capital de un depósito estructurado es el capital a tipo fijo más el capital a tipo variable. getintereses(): intereses a tipo fijo más intereses a tipo variable. La herencia permite la redefinición de métodos para adaptarlos a la semántica de la clase. Programación Orientada a Objetos 19
20 Redefinición de métodos Un método es una redefinición si tiene la misma signatura (nombre y parámetros) que un método de la clase padre: Nota: si cambia el tipo de algún parámetro o se añaden nuevos parámetros, entonces se está sobrecargando el método heredado. Opcional: la se utiliza para indicar al compilador que un método es una redefinición. La redefinición reconcilia la reutilización con la extensibilidad: Es habitual hacer cambios cuando se reutiliza un código. Programación Orientada a Objetos 20
21 Redefinición de métodos La redefinición de un método heredado puede ser de dos tipos: Refinamiento: se añade nueva funcionalidad al comportamiento heredado. Reemplazo: se sustituye completamente la implementación del método heredado. En el refinamiento de un método resulta útil invocar a la versión heredada del método. Programación Orientada a Objetos 21
22 Redefinición de métodos y super El lenguaje proporciona la palabra reservada super que permite llamar a la versión del padre de un método que se redefine en la clase. En general, el uso de super se recomienda sólo para el refinamiento de métodos. No hay que utilizar super para llamar a métodos que se heredan. Programación Orientada a Objetos 22
23 Clase DepositoEstructurado public class DepositoEstructurado extends Deposito public double getintereses() { return super.getintereses() + getinteresesvariable(); } public double getcapital() { return super.getcapital() + getcapitalvariable(); } Programación Orientada a Objetos 23
24 Caso de estudio Identificamos un nuevo tipo de depósito formado por una parte del capital a tipo fijo y otra a tipo variable con un interés mínimo garantizado (Depósito Garantizado). Este depósito posee todas las características de un Depósito Estructurado y añade una garantía al interés variable (regla es un). La clase DepositoGarantizado hereda de DepositoEstructurado. Programación Orientada a Objetos 24
25 Clase DepositoGarantizado public class DepositoGarantizado extends DepositoEstructurado { private double tipointeresgarantizado; public DepositoGarantizado(, { super(titular, capitalfijo, capitalvariable, plazodias, tipointeresfijo); } } this.tipointeresgarantizado = tipointersesgarantizado; settipointeresvariable(tipointersesgarantizado); Programación Orientada a Objetos 25
26 Redefinición de métodos La clase debe controlar que al establecer el tipo de interés variable no quede por debajo del interés garantizado. Para ello, redefine (refina) el método public void settipointeresvariable( double tipointeresvariable) { } if (tipointeresvariable >= tipointeresgarantizado) } super.settipointeresvariable(tipointeresvariable); Programación Orientada a Objetos 26
27 Caso de estudio Un Depósito Penalizable es un depósito básico en el que los intereses pueden ser penalizados. El nuevo depósito tiene todas las características de un depósito básico (regla es un). Clase DepositoPenalizable hereda de Deposito La penalización consiste en reducir el interés del depósito a la mitad. Adapta el cálculo de los intereses según la penalización (redefinición). Programación Orientada a Objetos 27
28 Clase DepositoPenalizable public class DepositoPenalizable extends Deposito { private boolean penalizado; public DepositoPenalizable( ) { super(titular, capital, plazodias, tipointeres); penalizado = false; public double getintereses() { if (penalizado) return super.getintereses() / 2; else return super.getintereses(); } public boolean ispenalizado() { } public void setpenalizado(boolean penalizado) { } } Programación Orientada a Objetos 28
29 Jerarquía de herencia Programación Orientada a Objetos 29
30 Polimorfismo Capacidad de una entidad (atributo, variable, parámetro) de referenciar en tiempo de ejecución a objetos de diferentes clases. Es restringido por herencia. El polimorfismo implica que una entidad tiene un tipo estático (declarado) y otro dinámico (al que referencia la entidad). Programación Orientada a Objetos 30
31 Tipos estático y dinámico Tipo estático (te): Tipo asociado a la declaración de una entidad. Tipo dinámico: Tipo correspondiente a la clase del objeto conectado a la entidad en tiempo de ejecución. Conjunto de tipos dinámicos (ctd): Conjunto de posibles tipos dinámicos de una entidad. Ejemplo: A A oa; B ob; C oc; D B E C F te(oa) = A ctd(oa) = {A,B,C,D,E,F} te(ob) = B ctd(ob) = {B, D, E} te(oc) = C ctd(oc) = {C,F} Programación Orientada a Objetos 31
32 Polimorfismo Asignación polimórfica: 1. Deposito deposito = new Deposito( ); 2. DepositoPenalizable penalizable = new DepositoPenalizable( ); // Asignación polimórfica 3. deposito = penalizable; La variable deposito tiene como tipo estático Deposito. El tipo dinámico de la variable cambia: Línea 1: clase Deposito. Línea 3: clase DepositoPenalizable. Programación Orientada a Objetos 32
33 Herencia y sistema de tipos Serían posibles las siguientes asignaciones? Objeto DepositoEstructurado a variable Deposito. Objeto DepositoEstructurado a variable DepositoPenalizable. Objeto DepositoGarantizado a variable Deposito. Programación Orientada a Objetos 33
34 Compatibilidad de tipos Una clase (tipo) B es compatible con otra clase A si B es descendiente de A: DepositoEstructurado es compatible con Deposito. DepositoGarantizado es compatible con Deposito y DepositoEstructrado. DepositoEstructurado NO es compatible con DepositoPenalizable. Programación Orientada a Objetos 34
35 Compatibilidad de tipos Una asignación polimórfica es válida si el tipo estático de la parte derecha es compatible con el tipo estático de la parte izquierda: Deposito deposito = new DepositoEstructurado( ); DepositoPenalizable penalizable = new DepositoPenalizable( ); // Asignación polimórfica válida deposito = penalizable; // Asignación polimórfica no válida DepositoGarantizado garantizado = penalizable; Programación Orientada a Objetos 35
36 Compatibilidad de tipos Un paso de parámetros es válido si el tipo estático del parámetro real es compatible con el tipo estático del parámetro formal. public double indicerentabilidad(deposito deposito) { } return deposito.getintereses()/deposito.getcapital(); DepositoPenalizable penalizable = new DepositoPenalizable( ); banco.indicerentabilidad(penalizable); Programación Orientada a Objetos 36
37 Validez de mensajes Son válidos los siguientes mensajes? Mensaje getcapitalvariable() sobre una variable de tipo estático Deposito. Mensaje getcapital() sobre una variable de tipo estático DepositoGarantizado. Programación Orientada a Objetos 37
38 Validez de mensajes La herencia es consistente con el sistema de tipos. Sobre una variable cuyo tipo estático es DepositoEstructurado podemos aplicar: Métodos heredados y redefinidos: getintereses(), getplazodias(), etc. Métodos propios: getcapitalvariable(), etc. Si el tipo estático es Deposito no podemos aplicar métodos de los subtipos: deposito.gettipointeresvariable(); //Error deposito.ispenalizado(); // Error Programación Orientada a Objetos 38
39 Validez de mensajes Deposito deposito = new Deposito( ); DepositoEstructurado estructurado = new DepositoEstructurado( ); estructurado.liquidar(); //OK HEREDADO DE DEPOSITO estructurado.getcapital(); //OK METODO REDEFINIDO estructurado.getcapitalvariable(); //OK MÉTODO PROPIO deposito = estructurado; deposito.getintereses(); //OK METODO DE DEPOSITO deposito.getcapitalvariable(); //ERROR COMPILACION! Programación Orientada a Objetos 39
40 Política pesimista de tipos El compilador rechazaría los siguientes casos debido a la comprobación estática de tipos: Deposito deposito; DepositoPenalizable penalizable = new ; deposito = penalizable; penalizable = deposito; // Error de compilación Deposito deposito; DepositoPenalizable penalizable = new ; deposito = penalizable; deposito.ispenalizado(); // Error de compilación Programación Orientada a Objetos 40
41 Ligadura dinámica Qué versión del método getcapital() se ejecutaría? Deposito deposito; if (clientepreferente) deposito = new DepositoGarantizado(...); else deposito = new DepositoPenalizable(...); deposito.getcapital(); Programación Orientada a Objetos 41
42 Ligadura dinámica La versión de un método en una clase es la introducida por la clase (redefinida) o la heredada. Versiones del método getcapital(): Versión Deposito: el método es definido en Depósito La clase DepositoPenalizable lo hereda. Versión DepositoEstructurado: la clase DepositoEstructurado redefine el método. La clase DepositoGarantizado hereda la versión de DepositoEstructurado. Se ejecuta la versión asociada al tipo dinámico de la entidad sobre la que se aplica el método. Programación Orientada a Objetos 42
43 Ligadura dinámica public double posicionglobal(deposito[] depositos) { double posicion = 0; for (Deposito deposito : depositos) { } } posicion += deposito.getcapital(); return posicion; Qué sucedería si apareciera un nuevo tipo de depósito? Programación Orientada a Objetos 43
44 Ligadura dinámica redefine f {fβ} B A {fα} C Qué versión se ejecuta? A oa; B ob = new B(); D od = new D(); oa = ob; oa.f(); redefine f D {fδ} oa = od; oa.f(); Sea el mensaje x.f(), la comprobación estática de tipos garantiza que al menos existirá una versión aplicable para f, y la ligadura dinámica garantiza que se ejecutará la versión más apropiada. Programación Orientada a Objetos 44
45 Ligadura dinámica La ejecución de un método puede tener diferentes interpretaciones en tiempo de ejecución. Ejercicio: Qué métodos y versiones se ejecutan cuando se aplica el método liquidar() a un depósito penalizable? Y para un depósito estructurado? Deposito deposito = new DepositoPenalizable(...); deposito.liquidar(); Programación Orientada a Objetos 45
46 Ligadura dinámica El método liquidar() es un ejemplo de código reutilizable: El mismo código es reutilizado por los subtipos. En tiempo de ejecución, el código ejecutado varía según el tipo de depósito al que sea aplicado (ligadura dinámica). El polimorfismo, la redefinición de métodos y la ligadura dinámica permiten reutilizar el código y al mismo tiempo adaptarlo a las características de cada depósito. Programación Orientada a Objetos 46
47 Estructuras de datos polimórficas Organizar las clases en una jerarquía de herencia resulta útil para definir estructuras de datos polimórficas: Deposito[] depositos = new Deposito[3]; depositos[0] = new DepositoPenalizable ( ); depositos[1] = new DepositoEstructurado ( ); depositos[2] = new DepositoGarantizado ( ); En el ejemplo, cada componente del array puede ser de un tipo distinto de depósito. Programación Orientada a Objetos 47
48 Caso de estudio Motivación: Cómo podemos establecer el tipo de interés variable sobre todos los depósitos estructurados? En la aplicación almacenamos todos los depósitos en un array: Deposito[] depositos; Una posición del array puede apuntar a cualquier tipo de depósito (estructura de datos polimórfica). Sobre una referencia de tipo estático Deposito sólo puedo aplicar métodos de esa clase. Solución: casting (narrowing). Programación Orientada a Objetos 48
49 Casting El compilador permite hacer un casting de una variable polimórfica a uno de los posibles tipos dinámicos de la variable. Sería posible hacer un casting al tipo DepositoEstructurado que tiene el método para establecer el tipo de interés variable: public void settipointeresvariable(double tipo, Deposito[] depositos) { for (Deposito d : depositos) { DepositoEstructurado de = (DepositoEstructurado) d; de.settipointeresvariable(tipo); } } Programación Orientada a Objetos 49
50 Casting El casting de una variable de tipo objeto no realiza una conversión de objetos Un casting de objetos debe entenderse como el tipo dinámico de la variable es compatible con el tipo indicado en el casting. El compilador confía en el programador y acepta que la variable es compatible con el tipo indicado de cara a hacer asignaciones o aplicar métodos. Programación Orientada a Objetos 50
51 Operador instanceof Problema: Todos los depósitos no son estructurados. El casting se resuelve en tiempo de ejecución y si es incorrecto aborta el programa. Solución: operadorinstanceof Permite consultar en tiempo de ejecución si el tipo dinámico de una variable es compatible con un tipo. Se entiende por tipo compatible el tipo de la consulta o cualquiera de los subtipos. Programación Orientada a Objetos 51
52 Operador instanceof public void settipointeresvariable(double tipo, Deposito[] depositos) { for (Deposito d : depositos) { if (d instanceof DepositoEstructurado) { } } } DepositoEstructurado de = (DepositoEstructurado) d; de.settipointeresvariable(tipo); Programación Orientada a Objetos 52
53 Consejos uso de la herencia Los atributos y métodos comunes deben situarse en clases altas de la jerarquía (generalización). Aplica herencia si entre dos clases existe la relación es-un. No debe utilizarse herencia salvo que todos los métodos heredados tengan sentido en la clase hija. En la redefinición de un método no hay que cambiar la semántica que tiene definida. Aplica polimorfismo y ligadura dinámica para evitar análisis de casos. Programación Orientada a Objetos 53
54 Seminario 2 Este tema se completa con parte del seminario 2: Conceptos básicos de la herencia. Polimorfismo. Herencia y sistema de tipos. Ligadura dinámica. Programación Orientada a Objetos 54
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 detallesTema 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. Interfaces. Clase Object. Autoboxing. Copia de objetos. Igualdad
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 detallesTema 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 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 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 detallesLa Herencia: Teoría (1)
Introducción a la Herencia Presentación basada en: 1. Construcción de Software Orientado a Objetos. Bertrand Meyer.1998. 2. Java 2., Curso de programación. Fco. Javier Ceballos. Ed. Alfoomega&RA-MA, 2003.
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 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 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 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 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 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 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 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 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 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 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 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 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 detallesUniversidad Nacional del Santa E.A.P. Sistemas e Informática Microcomputación III
HERENCIA Se entiende por herencia el proceso por el que un objeto puede tomar características de otro objeto. La herencia Se puede usar de dos formas: 1. Cuando una clase escrita no llega a cubrir las
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 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 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 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 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 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 detallesGuía práctica de estudio 08: Polimorfismo
Guía práctica de estudio 08: Polimorfismo Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 08: Polimorfismo
Más 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 detallesUAA-DSE Programación 2 / C++ Eduardo Serna-Pérez
6 Herencia y Polimorfismo La Herencia y el Polimorfismo son dos de los principales mecanismos de programación que caracterizan a la programación orientada a objetos. La herencia sustenta su mecanismo en
Más detallesPROGRAMACION ORIENTADA A OBJETOS EN C++
PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje
Más 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 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 detallesTema 6: Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2013/2014
Tema 6: Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2013/2014 Contenido (1/3) Introducción. Definición de clases. Visibilidad y clases amigas. Espacios de nombres. Tipos
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 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 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 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 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 detallesHERENCIA. Problema: Reparar el el coche. Jesús (Valencia) Luis, Mecánico (Valencia) Antonio, Servicio Técnico Ferrari (Madrid)
HERENCIA Lenguajes de Programación - Orientación a Objetos: Herencia 1 Problema: Reparar el el coche Jesús (Valencia) Reparar vehículo. Problema: no arranca Luis, Mecánico (Valencia) Método empleado Pedir
Más detallesPrincipios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Mg. Ricardo Coppo rcoppo@uns.edu.ar La herencia establece una relación entre dos clases, un ancestro o superclase y otro derivado o descendiente Por
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 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 detallesProgramación orientada a objetos I
Introducción Programación orientada a objetos I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es Qué es la POO? Un paradigma de programación Un paradigma es una forma de afrontar
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 detallesEstructuras de control selectivas
Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos
Más detallesUnidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.
Unidad IV Métodos. 4.1 Definición de un método. El polimorfismo, en programación orientada a objetos, se refiere a la posibilidad de acceder a un variado rango de funciones distintas a través del mismo
Más detallesAplicaciones de Escritorio
Aplicaciones de Escritorio Introducción n a la Programación Orientada a Objetos con Java Disertantes: Ing. Rasjido, Jose. AdeS Montenegro, Cristian. Agenda Clases y Paquetes. Clases y Paquetes. Modificadores
Más 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 detallesProgramación Orientada a Objetos Curso 2010/2011
Programación Orientada a Objetos Curso 2010/2011 Ejercicios sobre C++, C# y comparativa LPOO Ejercicios C++ 1. Dado el siguiente código C++: void met() throw (runtime_error) { throw runtime_error( operación
Más detallesTema 3. Herencia. Programación Avanzada. Jorge Badenas
Tema 3. Herencia Programación Avanzada Jorge Badenas 1. Herencia Herencia: relación entre dos clases, donde una clase nueva se define como una extensión de la otra. En la nueva clase sólo necesitamos escribir
Más detallesTemas. Taller III 2007 Gentile,Vazquez
Temas Arreglos de Objetos Punteros de Objetos Arreglos de Punteros de Objetos Constructor de Copia Herencia Constructores y Destructores en Herencia Accesibilidad en Herencia 1 Arreglo de objetos Televisor
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 detallesFederico Peinado
Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es
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 1. Introducción a la Programación Orientada a Objetos
Tema 1. Introducción a la Programación Orientada a Objetos Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Informática. Universidad de Málaga Programación Orientada a Objetos Dpto. Lenguajes y Ciencias
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 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 detallesProgramación Orientada a Objetos
Programación Orientada a Objetos PROGRAMACIÓN ORIENTADA A OBJETOS 1 Sesión No. 4 Nombre: Herencia Contextualización Cuando hablamos de informática podemos contemplar varios elementos que se utilizan dentro
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 detallesLenguajes de Programación I
Lenguajes de Programación I Orientación a Objetos Ernesto Hernández-Novich Copyright c 2006-2010 Módulos como abstracción de datos Los módulos conducen a un estilo de programación en el cual
Más detallesTecnología de Programación
Tecnología de Programación Diego C. Martínez Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur UML - Diagramas de clases El diagrama de clases es un diagrama de la estructura
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 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 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 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 detallesApuntes de Programación y estructuras de datos. Control de datos
Apuntes de Programación y estructuras de datos. Control de datos Nikos Mylonakis, Fernando Orejas y Ana Cristina Zoltan nicos@lsi.upc.edu Dept. Llenguatges i Sistemes Informátics Universitat Politécnica
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 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 detallesHerencia. Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra.
Programación Orientada a Objetos Herencia Ing. Julio Ernesto Carreño Vargas MsC. Herencia Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra. Programación
Más detallesINTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN ANEXO 2 El paradigma orientado a objetos INTRODUCCIÓN 1) Programación orientada a objetos (P.O.O.) Un proyecto de software es complejo. Las GUI 1, acceso transparente a datos
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 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 detallesTema: Funciones Virtuales y Polimorfismo.
Programación II. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Comprender que es ligadura e identificar sus tipos.
Más detallesTema: Funciones Virtuales y Polimorfismo.
Programación II. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Específicos Comprender que es ligadura e identificar
Más detallesTema 3: Herencia en Java. Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en Java Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Índice Introducción Herencia y Ocultamiento de la Información Redefinición de características Herencia y creación
Más detallesHERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador
HERENCIA Y TIPOS. Las clases con propiedades y funciones comunes se agrupan en una superclase. Las clases que se derivan de una superclase son las subclases. Las clases se organizan como jerarquía de clases.
Más detallesProgramación. Orientada a Objetos. Prof. Angela Di Serio. Universidad Simón Bolívar Especialización en Telemática
Programación Orientada a Objetos Prof. Angela Di Serio Universidad Simón Bolívar Especialización en Telemática Agenda Clase 2 Qué es Orientado a Objetos? Conceptos: objeto, clase, instancias, mensajes
Más detallesObjeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico Objeto Representa una instancia de un elemento del mundo del problema Es cualquier elemento
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 detallesIntroducción a Programación Orientada a Objetos (OOP): Clases y Objetos 01/02/2013 ING. PEDRO BELTRÁN CANESSA
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos Definición Clase es la representación abstracta (modelo) de una entidad del mundo La clase especifica los atributos (propiedades)
Más detallesTecnología de Programación DCIC UNS
UML Diagramas de clases El diagrama de clases es un diagrama de la estructura estática del sistema. Un diagrama de clases describe los tipos de objetos en el sistema y las dependencias estáticas que existen
Más detallesProgramación Orientada a Objetos en C++
Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase
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 Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión
Más detallesPARTE TEÓRICA - TEST [2,5 PUNTOS]:
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA 71901072 PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
Más detallesParte I: Programación en un lenguaje orientado a objetos
Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento
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 detallesNETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS
NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS Como se vio en teoría, la definición de una clase consta de dos partes fundamentales: 1 - La declaración de la clase: Indica el nombre de la clase precedido
Más detallesTema: Herencia en C#.
Programación II. Guía No. 8 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Herencia en C#. Objetivos Crear clases a través de la herencia de clases existentes. Describir
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 detallesTema 5. Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2010/2011
Tema 5 Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción Clases y objetos Herencia Herencia múltiple Genericidad Colecciones Definición de
Más detallesTema: Herencia en C#.
POO. Guía No. 8 1 Tema: Herencia en C#. Facultad: Ingeniería Escuela: Computación Asignatura: Programación Orientada a Objetos Materiales y Equipo Computadora con Visual Studio /Visual C#. Guía Número
Más detallesUnidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos
Unidad Didáctica 1 Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Más detallesCómo se estructura un programa en C#? Qué son las clases y los objetos? Cómo se estructuran los dibujos de AutoCAD?
Cómo se estructura un programa en C#? Qué son las clases y los objetos? Cómo se estructuran los dibujos de AutoCAD? 1 2.1. CONCEPTOS FUNDAMENTALES DE C# 2.1.1. FUNCIONES: PÁSO DE PARÁMETROS 2.1.2. CLASES
Más detallesProgramación Orientada a Objetos. Herencia. (2ª parte)
Programación Orientada a Objetos TEMA 3 Herencia (2ª parte) Facultad de Informática Universidad de Murcia Índice 1.- Introducción 2.- Adaptaciones del lenguaje: - Redefinición vs. Renombramiento - Cambios
Más detalles