matematicas

Páginas: 5 (1018 palabras) Publicado: 16 de octubre de 2013
Programación orientada a objetos

TEMA 3
HERENCIA
Cristina Cachero, Pedro J. Ponce de León
versión 3
(Curso 10/11)
(3 sesiones)

POO

Tema 3. HERENCIA
Objetivos


Entender el mecanismo de abstracción de la herencia.



Distinguir entre los diferentes tipos de herencia



Saber implementar jerarquías de herencia en C++





Saber discernir entre jerarquías deherencia seguras (bien definidas) e
inseguras.
Reutilización de código: Ser capaz de decidir cuándo usar herencia y
cuándo optar por composición.

2

Herencia
Del tema anterior…
Persistente
Entre objetos



Asociación



Todo-Parte



Entre clases

No persist.



C1

C2



Uso (depend)
C1

C2

Agregación
Composición

Generalización

vehiculo aéreoavion

helicoptero

3

HERENCIA
Motivación
Florista

Panadero

cobrar()

cobrar()

darRecibo()

darRecibo()

Vendedor
coches

Asociamos ese
comportamiento
a una categoría
general
(generalización)

....

cobrar()
darRecibo()

CLASE DERIVADA (C++)
CLASE HIJA
SUBCLASE

Dependiente
cobrar()
darRecibo()

CLASE BASE (C++)
CLASE PADRE
SUPERCLASE
4 Clasificación y generalización


La mente humana clasifica los conceptos de acuerdo a dos
dimensiones:





Pertenencia (TIENE-UN) -> Relaciones todo-parte
Variedad (ES-UN) -> Herencia

La herencia consigue clasificar los tipos de datos
(abstracciones) por variedad, acercando un poco más el
mundo de la programación al modo de razonar humano.




Este modo de razonar humano sedenomina GENERALIZACIÓN,
y da lugar a jerarquías de generalización/especialización.
La implementación de estas jerarquías en un lenguaje de
programación da lugar a jerarquías de herencia.

5

Herencia como implementación de la
Generalización








La generalización es una relación semántica entre
clases, que determina que la interfaz de la subclase
debe incluir todas laspropiedades públicas y privadas
de la superclase.
Disminuye el número de relaciones (asociaciones y
agregaciones) del modelo
Aumenta la comprensibilidad, expresividad y
abstracción de los sistemas modelados.
Todo esto a costa de un mayor número de clases
7

HERENCIA
Definición






La herencia es el mecanismo de implementación mediante el cual
elementos más específicosincorporan la estructura y comportamiento
de elementos más generales (Rumbaugh 99)
Gracias a la herencia es posible especializar o extender la funcionalidad de
una clase, derivando de ella nuevas clases.
La herencia es siempre transitiva: una clase puede heredar características
de superclases que se encuentran muchos niveles más arriba en la jerarquía
de herencia.


Ejemplo: si la clase Perroes una subclase de la clase Mamífero, y la clase Mamífero
es una subclase de la clase Animal, entonces el Perro heredará atributos tanto de
Mamífero como de Animal.

8

HERENCIA
Test “ES-UN”


La clase A se debe relacionar mediante herencia con la
clase B si “A ES-UN B”. Si la frase suena bien, entonces
la situación de herencia es la más probable para ese caso






Unpájaro es un animal
Un gato es un mamífero
Un pastel de manzana es un pastel
Una matriz de enteros es un matriz
Un coche es un vehículo

9

HERENCIA
Test “ES-UN”


Sin embargo, si la frase suena rara por una razón u otra,
es muy probable que la relación de herencia no sea lo más
adecuado. Veamos unos ejemplos:





Un pájaro es un mamífero
Un pastel de manzana es unamanzana
Una matriz de enteros es un entero
Un motor es un vehículo

10

HERENCIA
Principales usos




La herencia como reutilización de código: Una clase
derivada puede heredar comportamiento de una clase
base, por tanto, el código no necesita volver a ser escrito
para la derivada.
 Herencia de implementación
La herencia como reutilización de conceptos: Esto ocurre
cuando una...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Matematica
  • Matematica
  • Matematicas
  • Las matemáticas
  • Matematica
  • Matematicas
  • Matematica
  • Matematicas

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS