La Herencia: Teoría (1)

Introducción a la Herencia Presentación basada en: Construcción de Software Orientado a Objetos. Bertrand Meyer.1998. Java 2., Curso de programación.

3 downloads 128 Views 73KB Size

Recommend Stories


La herencia del abuelo
La herencia del abuelo (Teatro breve) Carlos Etxeba (Carlos Sáez Echevarría) REPARTO D.ª LEONOR - Abuela de Lydia D. CARLOS - Abuelo de Lydia LYDIA

BASES DE LA HERENCIA
BASES DE LA HERENCIA TEMA 15.- LA HERENCIA BIOLOGICA. GENÉTICA MENDELIANA TEMA 16.- DEL ADN A LAS PROTEÍNAS. TEMA 17.- MUTACIONES. Bases de la heren

Story Transcript

Introducción a la Herencia Presentación basada en: Construcción de Software Orientado a Objetos. Bertrand Meyer.1998. Java 2., Curso de programación. Fco. Javier Ceballos. Ed. Alfoomega&RA-MA, 2003. Apuntes del Curso Programación Orientado a Objetos. Pablo Castells. Escuela Politécnica Superior, Universidad Autonoma de Madrid. Apuntes del Curso de java. Luis Hernández y Carlos Cervigón. Facultad de Informática. Universidad Católica de Madrid. 1.

2. 3. 4.

La Herencia: Teoría (1) „

Mecanismo exclusivo y fundamental de la POO. „

La herencia no está contemplada en la programación basada en tipos (TAD).

„

Es el principal mecanismo que ayuda a fomentar y facilitar la reutilización del software:

„

Si se necesita una nueva clase de objetos y se detectan suficientes similitudes con otra clase ya desarrollada, se toma esa clase existente como punto de partida para desarrollar la nueva:

„

„

Las clases como componentes de software reutilizables.

Se adoptan automáticamente características ya implementadas Ahorro de tiempo y esfuerzo

„

Se adoptan automáticamente características ya probadas

Menor tiempo de prueba y depuración

1

La Herencia: Teoría (2) „

Conceptos claves de la herencia: „

Suficientes similitudes: „

„

„

Todas las características de la clase existente (o la gran mayoría de ellas) resultan adecuadas para la nueva.

En la nueva clase se ampliará y/o redefinirá el conjunto de características.

Características de las clases que se adoptan: „

„

Todos los miembros definidos en las clases (Atributos y Métodos) Dependiendo de la forma en que se aplique el mecanismo de herencia, en la nueva clase se puede tener o no acceso a ciertas características heredadas (a pesar de que se adopten todas).

La Herencia: Teoría (3) „

„

La relación de herencia se establece entre una clase nueva y una clase ya existente. Términos generales: „

„

„

„

Sinónimos de la clase existente: Clase base, clase madre, superclase (término genérico de la POO). Sinónimos de la clase nueva: Clase derivada, clase hija, subclase (término genérico de la POO). También se utiliza el término derivación para referirse a la herencia. La clase nueva es la que tiene establecida la relación de herencia con la clase existente. „

La clase existente no necesita a la nueva, pero la nueva sí necesita la presencia de la existente.

2

La Herencia: Teoría (4) „ „

La relación de herencia se establece entre una clase nueva y una clase existente. Sobre la clase que hereda de la existente: „

„

„

„

La nueva hereda todas las características de la existente. La nueva puede definir características adicionales. La nueva puede redefinir características heredadas de la existente. El proceso de herencia no afecta de ninguna forma a la superclase existente.

Subclases en java(1) „

Para que una nueva clase sea subclase de otra existente basta con añadir: extends ClaseExistente a continuación del nombre de la nueva: „

public class ClaseNueva extends ClaseExistente { ... ClaseExistente }

ClaseNueva

3

Subclases en java(2)

Clase Existente Nota: Los empleados son personas

Clase Nueva

NOTA: Por el hecho de indicar que Empleado es subclase de Persona, los objetos de la clase Empleado ya tienen automáticamente 2 atributos y un método, los heredados de la clase Persona.

Nota: Los directivos son personas y son empleados

Conversión de tipos (1) „

Sea: „ „ „

„

Conversiones implícitas (generalización) „ „ „

„

Persona p1, p2; Empleado q, e= new Empleado (); Directivo r, d = new Directivo (); p1 = e; p2 = d; q = d;

Æ Empleado a Persona Æ Directivo a Persona Æ Directivo a Empleado

Un Directivo puede hacer automáticamente el papel de Empleado y de Persona

Conversiones explícitas (especialización) „ „ „

r = p2; r = (Directivo) p2; r = (Directivo) p1;

Æ Error de compilación Æ Persona a Directivo Æ Error de ejecución: p1 no es un Directivo

Una Persona puede hacer el papel de Directivo si realmente es un Directivo

4

Conversión de tipos (2) „

Sea: class X { void y (Empleado p) { ... } void z (Directivo p) { ... } } Directivo d = new Directivo (); Empleado p = dir, e = new Empleado (); X x = new X ();

„

Conversión implícita

„

Conversión explícita

„

„ „ „

x.y (d);

Æ Directivo a Empleado

x.z (p); Æ Error de compilación x.z ((Directivo) p); Æ Empleado a Directivo x.z ((Directivo) e); Æ Error de ejecución: e no es un Directivo

Herencia: el Polimorfismo „

„

Polimorfismo significa “la capacidad de adoptar varias formas”. En la POO lo que puede tomar varias formas es: „ „

Una entidad variable Ejemplo „ „

p: Poligono; r: Rectángulo; t:Triangulo Asignaciones básicas: „ „

„

„

p:=r P:=t

Reconexión de la referencia polimorfa

Definición: Compatibilidad de tipos „

A un identificador de una clase sólo se le pueden asignar objetos de esa clase o de cualquiera de sus subclases

5

Redefinición de variables y métodos (1) „

„

„

„

En una subclase se redefine las variables y los métodos de una clase padre La definición de la subclase ensombrece a la de la clase padre La definición de la clase padre accesible desde la subclase con super La redefinición de variables „ „ „ „

Se reserva un espacio de memoria para cada definición El tipo no tiene por qué coincidir Ligadura estática Se prefiere evitar la redefinición de variables

Polimorfismo y la redefinición de variables y métodos (2) „

Ejemplo de la redefinición de variables

6

Polimorfismo y la redefinición de variables y métodos (3) „

Ejemplo de la redefinición de métodos

Lecturas „

Subclases e Interfaces. Capitulo 10 „ „

Libro: Java 2, curso de programación Paginas 329 a la 371.

7

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.