Title: Tema 3 Herencia
1Tema 3 Herencia
- Módulo III
- Programación Orientada a Objetos
2Contenidos
- Herencia
- Concepto de Herencia
- Relación de Herencia
- Jerarquías de clasificación
- Reglas de construcción
- Tipos de herencia
- Formas de especialización
3Contenidos
- Herencia
- Concepto de Herencia
- Relación de Herencia
- Jerarquías de clasificación
- Reglas de construcción
- Tipos de herencia
- Formas de especialización
4Concepto de Herencia
- La herencia tiene connotaciones de transmisión
- Concepto de herencia en Programación Orientada a
Objetos
Transmisión de la vista pública (métodos
públicos) y de la vista privada (atributos,
métodos privados y definición de los métodos) de
una clase a otra
5Concepto de Herencia
Se hereda el comportamiento (la interfaz) y los
datos código (implementación)
6Contenidos
- Herencia
- Concepto de Herencia
- Relación de Herencia
- Jerarquías de clasificación
- Reglas de construcción
- Tipos de herencia
- Formas de especialización
7Relación de Herencia
- Se establece entre dos clases, es una relación
binaria
Sintaxis en Pascal
type Cuadrado object (Poligono)
8Contenidos
- Herencia
- Concepto de Herencia
- Relación de Herencia
- Jerarquías de clasificación
- Reglas de construcción
- Tipos de herencia
- Formas de especialización
9Jerarquía de clasificación
- La relación de herencia permite establecer
jerarquías por grado de clasificación - Si en la jerarquía de clasificación intervienen N
clases, se establecerán entonces N-1 relaciones
de herencia - Jerarquía por grado de clasificación
- Aquella donde cada nodo de la jerarquía
establece un dominio de elementos incluido en el
dominio de los nodos padre e incluye a los
dominios de cada nodo hijo
10Jerarquía de clasificación
- Características
- Eminentemente subjetivas
- Dificultad para establecer una clasificación
perfecta - Surgen elementos no categorizables
- Elementos que no se acomodan completamente en
ninguna categoría
11Jerarquía de clasificación
12Contenidos
- Herencia
- Concepto de Herencia
- Relación de Herencia
- Jerarquías de clasificación
- Reglas de construcción
- Tipos de herencia
- Formas de especialización
13Jerarquía de clasificación
- Reglas de Construcción
- REGLA DE GENERALIZACIÓN / ESPECIALIZACIÓN
- Especialización presencia de unas
características específicas de un subconjunto de
elementos de un determinado conjunto como, para
que si bien mantienen las características
esenciales e identificativas del conjunto al que
pertenecen, también son lo suficientemente
relevantes como para ser rasgos distintivos de
dicho subconjunto de elementos. - REGLA ES UN?
14Jerarquía de clasificación
- No se cumple la regla Es un?
- Se cumple la regla de especialización
- Se cumple la regla Es un?
- No se cumple la regla de especialización
15Contenidos
- Herencia
- Concepto de Herencia
- Relación de Herencia
- Jerarquías de clasificación
- Reglas de construcción
- Tipos de herencia
- Formas de especialización
16Tipos de Herencia
Herencia simple se produce cuando una clase hija
hereda de una única clase padre
Herencia múltiple se produce cuando una clase
hija hereda de más de una clase padre
17Tipos de Herencia
- Ejemplo de herencia múltiple
Posibilidad de ambigüedades y colisiones
Pascal NO TIENE HERENCIA MÚLTIPLE
18Contenidos
- Herencia
- Concepto de Herencia
- Relación de Herencia
- Jerarquías de clasificación
- Reglas de construcción
- Tipos de herencia
- Formas de especialización
19Formas de especialización
- Formas de especialización en una relación de
herencia - Añadir atributos a los heredados
- Añadir métodos a los heredados
- Redefinir métodos de los heredados
20Adición de métodos y atributos
- Tras añadir métodos y / o atributos para
especializar la clase hija ésta tendrá - Atributos transmitidos
- Métodos transmitidos
- Atributos añadidos y / o
- Métodos añadidos.
21Adición de métodos y atributos
- Implicaciones de
- Añadir atributos gt ninguna
- Añadir métodos gt es necesario procesar los
atributos (heredados o añadidos) - En la definición de los métodos
- de la clase hija no se puede acceder
- a los atributos heredados de la clase
- padre (son privados)
22Ejercicio 3.1
- Se pretende crear una clase Coordenada que sea
general y sirva para su uso en cualquier
aplicación. Y, de forma más particular, clases
que representen coordenadas para los juegos de
las Tres en Raya y el Ajedrez. - Como servicios de la clase Coordenada están el de
consultar y modificar los valores de la fila y la
columna. También mostrar una coordenada por
pantalla. - En el caso de coordenadas particulares para un
juego concreto, debe ser posible validar si una
coordenada determinada es válida de acuerdo a los
límites del tablero que se utilice en dicho
juego. - Se debe crear una jerarquía de clasificación
mediante herencia.
23Adición de métodos y atributos
- Actitud correcta no se accede a los atributos de
la clase padre desde la definición de los métodos
de la clase hija - Camino alternativo hacer uso de los métodos de
la clase padre que procesan sus atributos - Reduce el acoplamiento entre las clases
- Qué ocurre si el tratamiento dado a los
atributos por los métodos de la clase padre no se
adecua al que precisa en un momento dado la clase
hija?
24Adición de métodos y atributos
- Si la combinación de los métodos transmitidos de
la clase padre no hace viable la implementación
de los métodos de la clase hija, alternativas? - Añadir nuevos métodos en la clase padre -gt
desvirtúa el comportamiento de la misma - Que los métodos anteriores sean privados -gt no es
solución, por ser privados no se puede acceder,
aunque sean transmitidos
25Adición de métodos y atributos
- Surge un nuevo cuantificador de visibilidad
- Protegido (protected)
- Que algo sea protegido significa que es accesible
desde la propia clase y desde sus clases hijas - Si es necesario, métodos get y set protegidos
type public // métodos públicos
protected // métodos protegidos private //
atributos y métodos privados
26Redefinición de métodos
- No excluye a la adición de métodos y / o
atributos. No son disjuntas - Si cambia algún parámetro en la definición del
método de la clase hija, no sería redefinición
sino simple sobrecarga - La redefinición de un método en la clase hija
anula el mismo método de la clase padre en la
implantación de la clase hija - Implica pérdida de comportamiento
- Cómo acceder al comportamiento del padre? En la
llamada al método de la clase padre se antepone
inherited
27Redefinición de métodos
type Cuadrado object (Poligono) public proce
dure pintar() end implementation procedure
Cuadrado.pintar() begin inherited
pintar() writeln(método pintar del
cuadrado) end end.
28Ejercicio 3.2
- Una inmobiliaria se dedica a vender dos tipos de
inmuebles pisos y locales. En principio suele
vender inmuebles de obra nueva, aunque a veces
tiene en venta algún que otro inmueble de segunda
mano. - Los locales siempre se encuentran en la planta
baja de los edificios, mientras que los pisos
pueden estar o bien en la planta baja o en
cualquier otra planta del edificio en el que se
encuentre. Por otra parte, algo que caracteriza a
los locales es el número de ventanales que
tienen, lo cual les hará más o menos luminosos.
29Ejercicio 3.2
- El precio final de cada inmueble se calcula sobre
un precio base, teniendo en cuenta lo siguiente - Para cualquier inmueble
- Si el inmueble es de segunda mano, si la
antigüedad es menor a 10 años, se incrementa su
precio en un 1. - Además, para los pisos
- Si el piso se encuentra en la tercera planta o
superior (sea de obra nueva o no) el coste sube
un 5 más (sobre el precio base) y se añadirá al
precio final que ya tuviera. - Además, para los locales
- Si tiene más de 50 metros cuadrados el precio se
incrementa en un 2 (sobre el precio base) y se
añade al precio final que ya tuviera. - Si tiene sólo 1 ventanal el precio se reduce en
un 3 (sobre el precio base) y se añade al precio
final que ya tuviera.
30Ejercicio 3.2
- Se pide crear un diseño orientado a objetos con
una jerarquía de clasificación que sea capaz de
representar los diferentes tipos de inmueble que
vende la inmobiliaria. Se deberá crear un
programa principal que haga lo siguiente - Mostrar al usuario de la aplicación un menú con
los distintos tipos de inmuebles, para que éste
elija uno. - Una vez seleccionado un tipo de inmueble, pedir
por teclado los datos necesarios para poder crear
un objeto de dicho tipo de inmueble. - Mostrar los datos del inmueble por pantalla. Se
deberá mostrar el tipo de inmueble con todas sus
características, así como el precio base y final
de venta.
31Ejercicio 3.2
- Sobre quÚ tipo de inmueble quiere calcular el
precio? - 1) Piso de Obra Nueva
- 2) Piso de Segunda Mano
- 3) Local de Obra Nueva
- 4) Local de Segunda Mano
- Pulse cualquier otra tecla para salir
- 1
- Dame el precio base del inmueble 230000
- Dame la direcci¾n Serrano, 34 Madrid
- Dame el nmero de metros cuadrados 200
- Dame el nmero de planta del piso 5
-
- Piso
- Planta 5
- Direccion Serrano, 34 Madrid
- Metros cuadrados 200
- Precio Venta Base 2.300000000000000E005
- Precio Venta Final 2.415000000000000E005
-