SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Paúl Arévalo
Programación 3
Capítulo 4: Clases derivadas y Polimorfismo
Introducción
Este capítulo introduce el concepto de
herencia y clases derivadas.
La herencia hace posible crear jerarquías
de clases relacionadas y reduce la
cantidad de código redundante en
componentes de clases.
La herencia es una herramienta poderosa que proporciona un marco
adecuado para producir software fiable, comprensible, de bajo coste,
adaptable y reutilizable.
Contenido del Capítulo
1. Clases Derivadas.
2. Herencia Pública.
3. Constructores en herencia.
4. Métodos y atributos no derivables.
5. Conversiones entre objetos de clase derivada y clase base.
6. Métodos abstractos.
7. Poliformismo.
8. Interfaces.
Clases Derivadas
La clase derivada se crea a partir de otra ya existente, denominada
clase base.
Figura
La clase base y la clase derivada tienen código y datos comunes.
TriánguloCuadrado Círculo
Declaración de una clase derivada
Java soporta el mecanismo de extensión (extends).
class Clase_Derivada extends Clase_Base
Una vez creada la clase derivada, el siguiente paso es añadir los
nuevos miembros que se requieren para cumplir las necesidades
específicas de la nueva clase.
Nombre de la clase
derivada
Palabra reservada que
indica derivación
Nombre de la clase base
{
// Miembros específicos de la clase derivada
private int nuevoMiembro;
public void nuevoMétodo() { … }
}
Problemas de diseño de clases derivadas
No siempre resulta fácil establecer la relación de herencia más
óptima entre clases.
Existen diferentes tipos de clasificaciones según el criterio de
selección (discriminador).
Empleado
ComisiónAsalariado PorHorasDedicaciónPlena DedicaciónParcialFijo Eventual
Sobrecarga de métodos en clases derivadas
Definición de métodos del mismo nombre pero con distinto número o
tipos de argumentos.
class Figura {
public void mover(int x) { … }
public void mover(double x, double y) { … }
}
class Circulo extends Figura {
public void mover(int n, double x, double y) { … }
}
Herencia Pública
En una clase existen secciones públicas, privadas, protegidas y con
la visibilidad por defecto, que se denomina amigable.
La herencia en Java siempre es pública.
Herencia Pública
public class Clase_Derivada extends Clase_Base { … }
Visible desde otro paquete
(opcional)
Constructores en herencia
Reglas
1. El constructor de la clase base se invoca antes del constructor de la
clase derivada.
2. Si una clase base es, a su vez, una clase derivada, se invocan
siguiendo la misma secuencia: constructor base, constructor derivada.
3. Los métodos que implementan a los constructores no se heredan.
4. Si no se especifica el constructor de la clase base, se invoca el
constructor sin argumentos.
Sintaxis de constructores en herencia
modificador ClaseDerivada(ListaParámetros) {
super(ListaParámetrosBase);
// Cuerpo constructor de la clase derivada
}
Visibilidad del constructor
de la clase derivada
Nombre de la clase derivada
Lista de parámetros del
constructor de la clase derivada
Lista de parámetros del
constructor de la clase base
Referencia a la clase base: super
Los métodos heredados de la clase base pueden ser llamados desde
cualquier método de la clase derivada
Puede ocurrir que haya métodos de la clase base que no interese que sean
heredados en la clase derivada, debido a que se quiera que tenga una
funcionalidad adicional.
Métodos y clases no derivables: Atributo final
La palabra reservada final se emplea para proteger la redefinición de
los métodos de la clase base.
class Ventana {
public void rellenar() { … }
public final void numeroPixels() {
…}
}
Una clase que no se quiere que sea clase base de otras clases se
declara con el atributo final.
final class Integer { … }
Conversiones entre objetos de clase derivada
y clase base
Al declarar una clase como extensión o derivada de otra clase, los
objetos de la clase derivada son a su vez objetos de la clase base.
Barco
DeVapor Velero
Parte correspondiente
a Barco
Parte propia de Velero
Barco barco;
Velero velero = new Velero();
DeVapor deVapor = new DeVapor();
barco = velero; // conversión automática
barco = deVapor; // conversión automática
Barco barco = new Barco();
Velero velero = new Velero();
velero = barco; // es errónea esta
conversión.
Métodos abstractos
Si la palabra reservada abstract precede a la declaración de un método,
este método se denomina abstracto, y le indica al compilador que será
definido en una clase derivada.
class Figura
{
public abstract double
calcularArea();
public abstract void dibujar();
}
abstract class Figura
{
public abstract double
calcularArea();
public abstract void dibujar();
}
public class Circulo extends Figura {
private double radio, px, py;
public Circulo(double px, double py, double radio) {
this.px = px;
this.py = py;
this.radio = radio;
}
public double calcularArea() {
return Math.PI * radio * radio;
}
public void dibujar() { … }
}
Una clase que no redefina un método abstracto heredado se convierte
en clase abstracta.
Clases abstractas
Las clases abstractas representan conceptos generales, engloban las
características comunes de un conjunto de objetos.
Una clase que tiene un método abstracto debe declararse abstracta.
No se pueden definir objetos, instanciar, de una clase abstracta.
Las clases abstractas están en lo más alto de la jerarquía de clases, son
superclases base, y por consiguiente siempre se establece una
conversión automática de clase derivada a clase base abstracta.
Figura[] arrayFiguras = new Figura[2];
for (int i = 0; i < 2; i++) {
if (i % 2 == 0) { arrayFiguras[i] = new
Rectangulo();}
else { arrayFiguras[i] = new Circulo(); }
}
Polimorfismo
En POO, el polimorfismo permite que diferentes objetos respondan de
modo diferente al mismo mensaje.
El polimorfismo se establece con la ligadura dinámica de métodos.
abstract class A {
public abstract void dinamico();
}
class B extends A {
public void dinamico() { System.out.println("Dinámico B"); }
}
class C extends A {
public void dinamico() { System.out.println("Dinámico C"); }
}
A a = new B();
a.dinamico();
a = new C();
a.dinamico();
Dinámico B
Dinámico C
Uso del Polimorfismo
La forma de usar el polimorfismo es a través de referencias a la clase base.
El polimorfismo se puede representar con un array de elementos que se
refieren a objetos de diferentes tipos, como sugiere Meyer.
Para poder utilizar polimorfismo en Java se deben seguir las siguientes reglas:
● Crear una jerarquía de clases con las operaciones importantes definidas por los
métodos miembro declarados como abstractos en la clase base.
● Las implementaciones específicas de los métodos abstractos se deben hacer en las
clases derivadas. Cada clase derivada puede tener su propia versión del método. Por
ejemplo, la implementación del método añadir() varía de un tipo de archivo a otro.
● Las instancias de estas clases se manejan a través de una referencia a la clase base.
Este mecanismo es la ligadura dinámica, que es la esencia del polimorfismo en Java.
Realmente, no es necesario declarar los métodos en la clase base como abstractos, si después
se redefinen en la clase derivada.
Ventajas del Polimorfismo
● Especialización de clases derivadas. El uso más común del polimorfismo es derivar clases
especializadas de clases que han sido definidas. Así, por ejemplo, una clase Cuadrado es
una especialización de la clase Rectangulo (cualquier cuadrado es un tipo de
rectángulo). Esta clase de polimorfismo aumenta la eficiencia de la subclase, mientras
conserva un alto grado de flexibilidad y permite un medio uniforme de manejar
rectángulos y cuadrados.
● Estructuras de datos heterogéneos. A veces es muy útil poder manipular conjuntos
similares de objetos. Con polimorfismo se pueden crear y manejar fácilmente estructuras
de datos heterogéneos, que son fáciles de diseñar y dibujar, sin perder la comprobación
de tipos de los elementos utilizados.
● Gestión de una jerarquía de clases. Las jerarquías de clases son colecciones de clases
altamente estructuradas, con relaciones de herencia que se pueden extender fácilmente.
Interfaces
Java incorpora una construcción del lenguaje, llamada interface , que
permite declarar un conjunto de constantes y de cabeceras de métodos
abstractos.
En una interface, todos los métodos declarados son, por defecto,
públicos y abstractos; por ello no es necesario especificar public ni
abstract .
acceso interface NombreInterface
{
constante 1;
...
constante n;
tipo1
nombreMetodo1(argumentos);
...
tipon
nombreMetodoN(argumentos);
}
Implementación de una interfaz
class NombreClase implements NombreInterfaz
{
// definición de atributos
// implementación de métodos de la clase
// implementación de métodos de la interfaz
}
La interfaz especifica el comportamiento común que tiene un
conjunto de clases.
Todos los métodos deben ser implementados.
Múltiples interfaces
Java no permite que una clase derive de dos o más clases, no permite la
herencia múltiple. Sin embargo, una clase sí puede implementar más de
una interfaz, sí puede tener el comportamiento común de varias interfaces.
Jerarquía de una interfaz
Las interfaces se pueden organizar en forma jerárquica, de tal forma
que los métodos sean heredados.
interface SuperBase1 {...}
interface Base1 extends SuperBase1 {...}
interface Base2 extends SuperBase1 {...}
interface ComunDerivado extends Base1, Base2 {...}
Herencia de clases e implementación de
interfaz
Las interfaces no son clases, especifican un comportamiento
(métodos) que va a tener la clase que lo implementa.
public interface Parque {...}
public class EspacioProtegido {...}
public class ZonaAves extends EspacioProtegido {...}
public class ParqueNatural extends EspacioProtegido implements
Parque{...}
Variables interfaz
Las interfaces, al no ser clases, tampoco pueden instanciar objetos.
Cualquier variable de una clase que implementa a una interfaz se puede
asignar a una variable del tipo de la interfaz .
interface Bolsa {
Bolsa insertar (Object elemento);
}
public class Bolsa1 implements Bolsa {
public Bolsa insertar(Object elemento) { ...
}
}
public class Bolsa2 implements Bolsa {
public Bolsa insertar(Object elemento) { ...
}
}
Bolsa bolsa;
bolsa = new Bolsa1();
bolsa.insertar("Manzana");
...
bolsa = new Bolsa2();
bolsa.insertar(new Integer(5));
Resumen y Conclusiones
La relación entre clases es-un tipo de indica relación de herencia.
Una clase nueva que se crea a partir de una clase ya existente, utilizando la propiedad de la
herencia, se denomina clase derivada o subclase. La clase de la cual se hereda se denomina
clase base o superclase.
La herencia puede ser simple o múltiple.
La herencia múltiple se produce cuando una clase deriva de dos o más clases base.
Para llamar al constructor de la clase base desde el constructor de la clase derivada se
emplea la palabra reservada super() .
El polimorfismo es una de las propiedades fundamentales de la orientación a objetos. Esta
propiedad significa que el envío de un mensaje puede dar lugar a acciones diferentes
dependiendo del objeto que lo reciba.
Un método abstracto (abstract) declarado en una clase convierte esta en una clase
abstracta. Con los métodos abstractos se obliga a su redefinición en la clase derivada, en
caso contrario, la clase derivada también es abstracta. No se puede instanciar objetos de
clases abstractas.
Las interfaces de Java declaran constantes y operaciones comunes a un conjunto de clases. Las
operaciones son métodos abstractos que deben definir las clases que implementan el
interface.
Para implementar el polimorfismo, un lenguaje debe soportar el enlace entre la llamada a un
método y el código del método en tiempo de ejecución; es la ligadura dinámica o vinculación
tardía. Esta propiedad se establece en el contexto de la herencia y de la redefinición de los
métodos polimórficos en cada clase derivada.
Java pemite declarar métodos con la propiedad de no ser redefinibles, por medio del modificador
final . También, con el modificador final se puede hacer que una clase no forme parte de una
jerarquía.
¿Preguntas?
¿Qué diferencias existen entre sobrecarga de métodos y
redefinición de métodos?
¿Describir las diversas utilizaciones de la referencia super?
¿Qué diferencias se pueden encontrar entre this y super ?
Problema 4.9
Referencias
Joyanes Aguilar, L., Zahonero Martínez, I., 2008. Estructuras de
datos en Java. McGraw-Hill, Madrid, España.
Meyer, B.: Object-Oriented Software Construction. Prentice-
Hall, New York, 1998
Miguel Behr, Desarrollo de Software Adaptable,
http://www.concierto.com/articulos/archivos/2007/02/desarr
ollo-de-software-adaptable/
Budd, T. An introduction to object-oriented programming,
Pearson, 2002.
Gracias.

Weitere ähnliche Inhalte

Was ist angesagt?

Los 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesLos 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesVictor Escamilla
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srtCarlos Solano
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5Dj Mada - Tres Valles, Veracruz
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPUEduardo Suarez
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadorasm220
 
Diccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de informaciónDiccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de informaciónYaskelly Yedra
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteJosé Antonio Sandoval Acosta
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 

Was ist angesagt? (20)

Los 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesLos 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentes
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srt
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Diagrama de Componentes
Diagrama de ComponentesDiagrama de Componentes
Diagrama de Componentes
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 
Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Diccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de informaciónDiccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de información
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 

Andere mochten auch

Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumenwouyrmz
 
IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...
IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...
IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...Cinthya Yessenia
 
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad  10: Reporte de polimorfismo, herencia & encapsulamientoActividad  10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad 10: Reporte de polimorfismo, herencia & encapsulamientograchika
 
Psacn matematica 2007
Psacn matematica 2007Psacn matematica 2007
Psacn matematica 2007cavip
 
Psacn ciencias 2005
Psacn ciencias 2005Psacn ciencias 2005
Psacn ciencias 2005cavip
 
TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...
TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...
TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...TCI Network
 
Herpes tipo 1 y Virus Varicela Zoster
Herpes tipo 1 y Virus Varicela ZosterHerpes tipo 1 y Virus Varicela Zoster
Herpes tipo 1 y Virus Varicela ZosterCesar Celaya
 
Implementación de Derivada de F(x) para Visual Studio 2012
Implementación de Derivada de F(x) para Visual Studio 2012Implementación de Derivada de F(x) para Visual Studio 2012
Implementación de Derivada de F(x) para Visual Studio 2012Eduardo Espino A
 
Primera aproximación al descubrimiento causal para variables climáticas en el...
Primera aproximación al descubrimiento causal para variables climáticas en el...Primera aproximación al descubrimiento causal para variables climáticas en el...
Primera aproximación al descubrimiento causal para variables climáticas en el...Angel Vázquez Patiño
 
Programación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosProgramación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosAngel Vázquez Patiño
 
Citomegalovirus, Rubéola, Hepatitis B. 2015
Citomegalovirus, Rubéola, Hepatitis B. 2015Citomegalovirus, Rubéola, Hepatitis B. 2015
Citomegalovirus, Rubéola, Hepatitis B. 2015DaniCili2015
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosAngel Vázquez Patiño
 
Programación 3: arrays (arreglos) y vectores
Programación 3: arrays (arreglos) y vectoresProgramación 3: arrays (arreglos) y vectores
Programación 3: arrays (arreglos) y vectoresAngel Vázquez Patiño
 

Andere mochten auch (20)

Aprendiendo objetos en c++
Aprendiendo objetos en c++Aprendiendo objetos en c++
Aprendiendo objetos en c++
 
Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumen
 
IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...
IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...
IMPLICACION DEL POLIMORFISMO GENETICO GENETICO DEL TRANSPORTADOR DE SEROTONIN...
 
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad  10: Reporte de polimorfismo, herencia & encapsulamientoActividad  10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
 
Psacn matematica 2007
Psacn matematica 2007Psacn matematica 2007
Psacn matematica 2007
 
2013 Dyer County Fair
2013 Dyer County Fair2013 Dyer County Fair
2013 Dyer County Fair
 
Projeto jetta 2015
Projeto jetta 2015Projeto jetta 2015
Projeto jetta 2015
 
Psacn ciencias 2005
Psacn ciencias 2005Psacn ciencias 2005
Psacn ciencias 2005
 
TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...
TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...
TCI 2014 Promoting Cross‐Border Inter‐clustering: The case of the Aquitaine–E...
 
Herpes tipo 1 y Virus Varicela Zoster
Herpes tipo 1 y Virus Varicela ZosterHerpes tipo 1 y Virus Varicela Zoster
Herpes tipo 1 y Virus Varicela Zoster
 
Implementación de Derivada de F(x) para Visual Studio 2012
Implementación de Derivada de F(x) para Visual Studio 2012Implementación de Derivada de F(x) para Visual Studio 2012
Implementación de Derivada de F(x) para Visual Studio 2012
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Primera aproximación al descubrimiento causal para variables climáticas en el...
Primera aproximación al descubrimiento causal para variables climáticas en el...Primera aproximación al descubrimiento causal para variables climáticas en el...
Primera aproximación al descubrimiento causal para variables climáticas en el...
 
Programación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosProgramación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibrados
 
Citomegalovirus, Rubéola, Hepatitis B. 2015
Citomegalovirus, Rubéola, Hepatitis B. 2015Citomegalovirus, Rubéola, Hepatitis B. 2015
Citomegalovirus, Rubéola, Hepatitis B. 2015
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Programación 3: arrays (arreglos) y vectores
Programación 3: arrays (arreglos) y vectoresProgramación 3: arrays (arreglos) y vectores
Programación 3: arrays (arreglos) y vectores
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Programación 1: fundamentos
Programación 1: fundamentosProgramación 1: fundamentos
Programación 1: fundamentos
 

Ähnlich wie Programación 3: clases derivadas y polimorfismo

Ähnlich wie Programación 3: clases derivadas y polimorfismo (20)

secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
 
Clase viii
Clase viiiClase viii
Clase viii
 
JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
 
Laboratorio clase abstract
Laboratorio clase abstractLaboratorio clase abstract
Laboratorio clase abstract
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
manual de C#
manual de C#manual de C#
manual de C#
 
Manual c# 2
Manual c# 2Manual c# 2
Manual c# 2
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 
Datos previos
Datos previosDatos previos
Datos previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)
 

Mehr von Angel Vázquez Patiño

Valores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficasValores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficasAngel Vázquez Patiño
 
Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...Angel Vázquez Patiño
 
Diferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calorDiferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calorAngel Vázquez Patiño
 
Puntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO linealPuntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO linealAngel Vázquez Patiño
 
Métodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante seriesMétodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante seriesAngel Vázquez Patiño
 
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...Angel Vázquez Patiño
 
Problemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuacionesProblemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuacionesAngel Vázquez Patiño
 
Linealización de sistemas de primer orden
Linealización de sistemas de primer ordenLinealización de sistemas de primer orden
Linealización de sistemas de primer ordenAngel Vázquez Patiño
 
Fundamentos de Computación y Programación
Fundamentos de Computación y ProgramaciónFundamentos de Computación y Programación
Fundamentos de Computación y ProgramaciónAngel Vázquez Patiño
 
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...Angel Vázquez Patiño
 

Mehr von Angel Vázquez Patiño (20)

Funciones, límites y continuidad
Funciones, límites y continuidadFunciones, límites y continuidad
Funciones, límites y continuidad
 
Integral definida e integración
Integral definida e integraciónIntegral definida e integración
Integral definida e integración
 
Valores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficasValores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficas
 
Derivada y diferenciación
Derivada y diferenciaciónDerivada y diferenciación
Derivada y diferenciación
 
Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...
 
Diferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calorDiferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calor
 
Puntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO linealPuntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO lineal
 
La ecuación diferencial de Legendre
La ecuación diferencial de LegendreLa ecuación diferencial de Legendre
La ecuación diferencial de Legendre
 
Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)
 
Métodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante seriesMétodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante series
 
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
 
Problemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuacionesProblemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuaciones
 
Linealización de sistemas de primer orden
Linealización de sistemas de primer ordenLinealización de sistemas de primer orden
Linealización de sistemas de primer orden
 
Sistemas de EDOs
Sistemas de EDOsSistemas de EDOs
Sistemas de EDOs
 
Método de la secante
Método de la secanteMétodo de la secante
Método de la secante
 
Iteraciones de punto fijo
Iteraciones de punto fijoIteraciones de punto fijo
Iteraciones de punto fijo
 
Objetos y variables en Python
Objetos y variables en PythonObjetos y variables en Python
Objetos y variables en Python
 
Definiciones de Error
Definiciones de ErrorDefiniciones de Error
Definiciones de Error
 
Fundamentos de Computación y Programación
Fundamentos de Computación y ProgramaciónFundamentos de Computación y Programación
Fundamentos de Computación y Programación
 
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
 

Kürzlich hochgeladen

ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGUROalejandrocrisostomo2
 
Presentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxPresentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxwilliam801689
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalaciónQualityAdviceService
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariasusafy7
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfwduranteg
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfGabrielCayampiGutier
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTElisaLen4
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processbarom
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5juanjoelaytegonzales2
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOeldermishti
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfssuser202b79
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxjhorbycoralsanchez
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx170766
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 

Kürzlich hochgeladen (20)

ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
Presentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxPresentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptx
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalación
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 

Programación 3: clases derivadas y polimorfismo

  • 1. Paúl Arévalo Programación 3 Capítulo 4: Clases derivadas y Polimorfismo
  • 2. Introducción Este capítulo introduce el concepto de herencia y clases derivadas. La herencia hace posible crear jerarquías de clases relacionadas y reduce la cantidad de código redundante en componentes de clases. La herencia es una herramienta poderosa que proporciona un marco adecuado para producir software fiable, comprensible, de bajo coste, adaptable y reutilizable.
  • 3. Contenido del Capítulo 1. Clases Derivadas. 2. Herencia Pública. 3. Constructores en herencia. 4. Métodos y atributos no derivables. 5. Conversiones entre objetos de clase derivada y clase base. 6. Métodos abstractos. 7. Poliformismo. 8. Interfaces.
  • 4. Clases Derivadas La clase derivada se crea a partir de otra ya existente, denominada clase base. Figura La clase base y la clase derivada tienen código y datos comunes. TriánguloCuadrado Círculo
  • 5. Declaración de una clase derivada Java soporta el mecanismo de extensión (extends). class Clase_Derivada extends Clase_Base Una vez creada la clase derivada, el siguiente paso es añadir los nuevos miembros que se requieren para cumplir las necesidades específicas de la nueva clase. Nombre de la clase derivada Palabra reservada que indica derivación Nombre de la clase base { // Miembros específicos de la clase derivada private int nuevoMiembro; public void nuevoMétodo() { … } }
  • 6. Problemas de diseño de clases derivadas No siempre resulta fácil establecer la relación de herencia más óptima entre clases. Existen diferentes tipos de clasificaciones según el criterio de selección (discriminador). Empleado ComisiónAsalariado PorHorasDedicaciónPlena DedicaciónParcialFijo Eventual
  • 7. Sobrecarga de métodos en clases derivadas Definición de métodos del mismo nombre pero con distinto número o tipos de argumentos. class Figura { public void mover(int x) { … } public void mover(double x, double y) { … } } class Circulo extends Figura { public void mover(int n, double x, double y) { … } }
  • 8. Herencia Pública En una clase existen secciones públicas, privadas, protegidas y con la visibilidad por defecto, que se denomina amigable. La herencia en Java siempre es pública.
  • 9. Herencia Pública public class Clase_Derivada extends Clase_Base { … } Visible desde otro paquete (opcional)
  • 10. Constructores en herencia Reglas 1. El constructor de la clase base se invoca antes del constructor de la clase derivada. 2. Si una clase base es, a su vez, una clase derivada, se invocan siguiendo la misma secuencia: constructor base, constructor derivada. 3. Los métodos que implementan a los constructores no se heredan. 4. Si no se especifica el constructor de la clase base, se invoca el constructor sin argumentos.
  • 11. Sintaxis de constructores en herencia modificador ClaseDerivada(ListaParámetros) { super(ListaParámetrosBase); // Cuerpo constructor de la clase derivada } Visibilidad del constructor de la clase derivada Nombre de la clase derivada Lista de parámetros del constructor de la clase derivada Lista de parámetros del constructor de la clase base
  • 12. Referencia a la clase base: super Los métodos heredados de la clase base pueden ser llamados desde cualquier método de la clase derivada Puede ocurrir que haya métodos de la clase base que no interese que sean heredados en la clase derivada, debido a que se quiera que tenga una funcionalidad adicional.
  • 13. Métodos y clases no derivables: Atributo final La palabra reservada final se emplea para proteger la redefinición de los métodos de la clase base. class Ventana { public void rellenar() { … } public final void numeroPixels() { …} } Una clase que no se quiere que sea clase base de otras clases se declara con el atributo final. final class Integer { … }
  • 14. Conversiones entre objetos de clase derivada y clase base Al declarar una clase como extensión o derivada de otra clase, los objetos de la clase derivada son a su vez objetos de la clase base. Barco DeVapor Velero Parte correspondiente a Barco Parte propia de Velero Barco barco; Velero velero = new Velero(); DeVapor deVapor = new DeVapor(); barco = velero; // conversión automática barco = deVapor; // conversión automática Barco barco = new Barco(); Velero velero = new Velero(); velero = barco; // es errónea esta conversión.
  • 15. Métodos abstractos Si la palabra reservada abstract precede a la declaración de un método, este método se denomina abstracto, y le indica al compilador que será definido en una clase derivada. class Figura { public abstract double calcularArea(); public abstract void dibujar(); } abstract class Figura { public abstract double calcularArea(); public abstract void dibujar(); } public class Circulo extends Figura { private double radio, px, py; public Circulo(double px, double py, double radio) { this.px = px; this.py = py; this.radio = radio; } public double calcularArea() { return Math.PI * radio * radio; } public void dibujar() { … } } Una clase que no redefina un método abstracto heredado se convierte en clase abstracta.
  • 16. Clases abstractas Las clases abstractas representan conceptos generales, engloban las características comunes de un conjunto de objetos. Una clase que tiene un método abstracto debe declararse abstracta. No se pueden definir objetos, instanciar, de una clase abstracta. Las clases abstractas están en lo más alto de la jerarquía de clases, son superclases base, y por consiguiente siempre se establece una conversión automática de clase derivada a clase base abstracta. Figura[] arrayFiguras = new Figura[2]; for (int i = 0; i < 2; i++) { if (i % 2 == 0) { arrayFiguras[i] = new Rectangulo();} else { arrayFiguras[i] = new Circulo(); } }
  • 17. Polimorfismo En POO, el polimorfismo permite que diferentes objetos respondan de modo diferente al mismo mensaje. El polimorfismo se establece con la ligadura dinámica de métodos. abstract class A { public abstract void dinamico(); } class B extends A { public void dinamico() { System.out.println("Dinámico B"); } } class C extends A { public void dinamico() { System.out.println("Dinámico C"); } } A a = new B(); a.dinamico(); a = new C(); a.dinamico(); Dinámico B Dinámico C
  • 18. Uso del Polimorfismo La forma de usar el polimorfismo es a través de referencias a la clase base. El polimorfismo se puede representar con un array de elementos que se refieren a objetos de diferentes tipos, como sugiere Meyer. Para poder utilizar polimorfismo en Java se deben seguir las siguientes reglas: ● Crear una jerarquía de clases con las operaciones importantes definidas por los métodos miembro declarados como abstractos en la clase base. ● Las implementaciones específicas de los métodos abstractos se deben hacer en las clases derivadas. Cada clase derivada puede tener su propia versión del método. Por ejemplo, la implementación del método añadir() varía de un tipo de archivo a otro. ● Las instancias de estas clases se manejan a través de una referencia a la clase base. Este mecanismo es la ligadura dinámica, que es la esencia del polimorfismo en Java. Realmente, no es necesario declarar los métodos en la clase base como abstractos, si después se redefinen en la clase derivada.
  • 19. Ventajas del Polimorfismo ● Especialización de clases derivadas. El uso más común del polimorfismo es derivar clases especializadas de clases que han sido definidas. Así, por ejemplo, una clase Cuadrado es una especialización de la clase Rectangulo (cualquier cuadrado es un tipo de rectángulo). Esta clase de polimorfismo aumenta la eficiencia de la subclase, mientras conserva un alto grado de flexibilidad y permite un medio uniforme de manejar rectángulos y cuadrados. ● Estructuras de datos heterogéneos. A veces es muy útil poder manipular conjuntos similares de objetos. Con polimorfismo se pueden crear y manejar fácilmente estructuras de datos heterogéneos, que son fáciles de diseñar y dibujar, sin perder la comprobación de tipos de los elementos utilizados. ● Gestión de una jerarquía de clases. Las jerarquías de clases son colecciones de clases altamente estructuradas, con relaciones de herencia que se pueden extender fácilmente.
  • 20. Interfaces Java incorpora una construcción del lenguaje, llamada interface , que permite declarar un conjunto de constantes y de cabeceras de métodos abstractos. En una interface, todos los métodos declarados son, por defecto, públicos y abstractos; por ello no es necesario especificar public ni abstract . acceso interface NombreInterface { constante 1; ... constante n; tipo1 nombreMetodo1(argumentos); ... tipon nombreMetodoN(argumentos); }
  • 21. Implementación de una interfaz class NombreClase implements NombreInterfaz { // definición de atributos // implementación de métodos de la clase // implementación de métodos de la interfaz } La interfaz especifica el comportamiento común que tiene un conjunto de clases. Todos los métodos deben ser implementados. Múltiples interfaces Java no permite que una clase derive de dos o más clases, no permite la herencia múltiple. Sin embargo, una clase sí puede implementar más de una interfaz, sí puede tener el comportamiento común de varias interfaces.
  • 22. Jerarquía de una interfaz Las interfaces se pueden organizar en forma jerárquica, de tal forma que los métodos sean heredados. interface SuperBase1 {...} interface Base1 extends SuperBase1 {...} interface Base2 extends SuperBase1 {...} interface ComunDerivado extends Base1, Base2 {...}
  • 23. Herencia de clases e implementación de interfaz Las interfaces no son clases, especifican un comportamiento (métodos) que va a tener la clase que lo implementa. public interface Parque {...} public class EspacioProtegido {...} public class ZonaAves extends EspacioProtegido {...} public class ParqueNatural extends EspacioProtegido implements Parque{...}
  • 24. Variables interfaz Las interfaces, al no ser clases, tampoco pueden instanciar objetos. Cualquier variable de una clase que implementa a una interfaz se puede asignar a una variable del tipo de la interfaz . interface Bolsa { Bolsa insertar (Object elemento); } public class Bolsa1 implements Bolsa { public Bolsa insertar(Object elemento) { ... } } public class Bolsa2 implements Bolsa { public Bolsa insertar(Object elemento) { ... } } Bolsa bolsa; bolsa = new Bolsa1(); bolsa.insertar("Manzana"); ... bolsa = new Bolsa2(); bolsa.insertar(new Integer(5));
  • 25. Resumen y Conclusiones La relación entre clases es-un tipo de indica relación de herencia. Una clase nueva que se crea a partir de una clase ya existente, utilizando la propiedad de la herencia, se denomina clase derivada o subclase. La clase de la cual se hereda se denomina clase base o superclase. La herencia puede ser simple o múltiple. La herencia múltiple se produce cuando una clase deriva de dos o más clases base. Para llamar al constructor de la clase base desde el constructor de la clase derivada se emplea la palabra reservada super() . El polimorfismo es una de las propiedades fundamentales de la orientación a objetos. Esta propiedad significa que el envío de un mensaje puede dar lugar a acciones diferentes dependiendo del objeto que lo reciba. Un método abstracto (abstract) declarado en una clase convierte esta en una clase abstracta. Con los métodos abstractos se obliga a su redefinición en la clase derivada, en caso contrario, la clase derivada también es abstracta. No se puede instanciar objetos de clases abstractas. Las interfaces de Java declaran constantes y operaciones comunes a un conjunto de clases. Las operaciones son métodos abstractos que deben definir las clases que implementan el interface. Para implementar el polimorfismo, un lenguaje debe soportar el enlace entre la llamada a un método y el código del método en tiempo de ejecución; es la ligadura dinámica o vinculación tardía. Esta propiedad se establece en el contexto de la herencia y de la redefinición de los métodos polimórficos en cada clase derivada. Java pemite declarar métodos con la propiedad de no ser redefinibles, por medio del modificador final . También, con el modificador final se puede hacer que una clase no forme parte de una jerarquía.
  • 26. ¿Preguntas? ¿Qué diferencias existen entre sobrecarga de métodos y redefinición de métodos? ¿Describir las diversas utilizaciones de la referencia super? ¿Qué diferencias se pueden encontrar entre this y super ?
  • 28.
  • 29.
  • 30.
  • 31. Referencias Joyanes Aguilar, L., Zahonero Martínez, I., 2008. Estructuras de datos en Java. McGraw-Hill, Madrid, España. Meyer, B.: Object-Oriented Software Construction. Prentice- Hall, New York, 1998 Miguel Behr, Desarrollo de Software Adaptable, http://www.concierto.com/articulos/archivos/2007/02/desarr ollo-de-software-adaptable/ Budd, T. An introduction to object-oriented programming, Pearson, 2002.