Vous êtes sur la page 1sur 23

LAB 04: Herencia y

Polimorfismo
Programación Orientada a Objetos

Prof. Carlos Vila


E-mail: carlos.vila@outlook.com

16/12/2017 Prof. Carlos Vila / Jeny Castellares 1


o Herencia
o Polimorfismo
o Ejercicios Propuestos
o Bibliografía
Agenda o Preguntas
Programación Orientadas a Objetos

16/12/2017 Prof. Carlos Vila / Jeny Castellares 2


Herencia
Programación Orientada a Objetos

16/12/2017 Prof. Carlos Vila / Jeny Castellares 3


Herencia
“Es la capacidad para crear nuevas clases de objetos que
se construyen basados en clases existentes”
Luis Joyanes (1998)

o La herencia es una propiedad que permite a un objeto poseer propiedades de otras


clases. Además, a estos nuevos objetos creados es posible asignarles nuevos atributos y
métodos.
o La clase que puede ser heredada se denomina clase base (superclase) y la clase que
hereda se denomina clase derivada (subclase).

16/12/2017 Prof. Carlos Vila / Jeny Castellares 4


Herencia

16/12/2017 Prof. Carlos Vila / Jeny Castellares 5


Herencia Simples y Múltiples

Herencia Simple Herencia Múltiple

16/12/2017 Prof. Carlos Vila / Jeny Castellares 6


Relaciones de Herencia
o Relación de Generalización Relación de Generalización

o Relación de Realización

16/12/2017 Prof. Carlos Vila / Jeny Castellares 7


Relación de Generalización
o Una asociación de herencia indicando que una clase es una superclase de otra, consiste
en factorizar las propiedades comunes de un conjunto de clases en unas mas general.
o La generalización tiene un triángulo apuntando a la superclase.
o No se hereda un miembro de la superclase si la subclase declara un miembro idéntico
(sobrescritura).
o this
– Es una referencia al objeto (instancia de la clase) que se está ejecutando.
o super
– Es una referencia a la superclase desde la que una clase hereda, pudiendo así,
ejecutar métodos de la superclase (incluyento constructores).

16/12/2017 Prof. Carlos Vila / Jeny Castellares 8


Herencia: Modificadores de Acceso
o Una clase derivada no puede acceder a los miembros privados de su clase base;
permitirlo violaría el encapsulado de la clase base.
o Una clase derivada puede, sin embargo, acceder a los miembros públicos y protegidos
de su clase base.
o El acceso protegido ( # ) sirve como nivel intermedio de protección entre el acceso
público y el acceso privado.
o Una clase derivada puede tener acceso a los miembros privados de la clase base
mediante funciones de acceso provistas en la interfaz pública de la clase base. Una
interfaz es un método público que sirve como puente para tener acceso a un miembro
privado.

16/12/2017 Prof. Carlos Vila / Jeny Castellares 9


Ejemplo 001: Herencia Accesos
Diagrama de Clases

16/12/2017 Prof. Carlos Vila / Jeny Castellares 10


Ejemplo 001: Herencia Accesos
Código Java
public class Persona {
public String nombre;
protected int edad;
private String codigo;

private void generarCodigo(){


this.codigo = nombre.substring(0,2).toUpperCase() + String.valueOf(edad);
}
public String obtenerDatos(){
generarCodigo();
return "Nombre: " + nombre + ", Edad: " + String.valueOf(edad) + ", Codigo: " + codigo;
}
}

public class Estudiante extends Persona {


public float nota01;
public float nota02;
private float promedio;

public void calcularPromedio(){


promedio = (nota01 + nota02)/2;
}

public float getPromedio(){


return this.promedio;
}
}
16/12/2017 Prof. Carlos Vila / Jeny Castellares 11
¿Qué no se Hereda?
o Ya sea por restricciones de acceso o efectos del comportamiento de la metodología de
orientación a objetos, no se heredan algunos elementos de las clases que serán
utilizadas como superclases tales como:
– Los miembros privados (datos y métodos).
– Los constructores.
– Los destructores.

16/12/2017 Prof. Carlos Vila / Jeny Castellares 12


Constructores en la Herencia
o Un constructor definido en la superclase debe estar coordinado con los de la subclase.
En particular, se debe considerar la forma en que el constructor de la superclase recibe
valores de la subclase para crear el objeto completo.
o La subclase debe definir un constructor que llama al constructor de la superclase,
proporcionándole los argumentos (valores) requeridos.
o Si un constructor se define para la superclase y otro para la subclase, la llamada del
constructor de la superclase se hace en el constructor de la subclase y por lo tanto, el
mismo se ejecutará primero; una vez que el constructor de la superclase termine sus
tareas, se ejecuta el constructor de la subclase.
o Al crear un objeto los constructores se ejecutan en orden de derivación:
– Desde la superclase a la subclase.

16/12/2017 Prof. Carlos Vila / Jeny Castellares 13


Ejemplo 00X: Herencia Constructores
o Ejemplo 002 demostrando el código en Java de la herencia y la declaración explicita de
constructores, tanto para el padre como el hijo.
– Constructores sin paso de parámetros
– Determinando la secuencia de ejecución de los constructores.
o Ejemplo 003 demostrando la sintaxis del código en Java de la herencia y la declaración
explicita de constructores.
– Constructores con paso de parámetros (padre e hijo).
– Sintaxis de codificación Java.

16/12/2017 Prof. Carlos Vila / Jeny Castellares 14


Ejercicio 001: Herencia
o Una empresa de ventas y servicios tiene empleados que forman parte de un equipo de
desarrollo. Estos empleados pueden ser contratados (por horas) o trabajadores de
planta (sueldo fijo). Desarrolle un programa que permita leer los datos de los
empleados, realizar el calculo de su remuneración mensual y los muestre por pantalla.
o Consideraciones:
– La superclase “Empleado” deberá tener el atributo privado nombrecompleto (valor
que será asignado únicamente desde el constructor) y el atributo publico edad.
– La subclase “Contratado” tendrá el atributo privados costoxhora (valor asignado
desde el constructor), atributo publico nrohoraslaboradas y el atributo privado
remuneracion valor que será calculado desde el método publico calcularpago().
– Crear una instancia (objeto) de la clase “Contratado” desde el método main() e
imprimir los valores en pantalla: nombres, edad y remuneración.

16/12/2017 Prof. Carlos Vila / Jeny Castellares 15


Polimorfismo
Programación Orientada a Objetos

16/12/2017 Prof. Carlos Vila / Jeny Castellares 16


Polimorfismo
o Polimorfismo proviene de dos raíces griegas: poli, múltiples y morfismo, formas.
o Esta característica es la capacidad que objetos similares tienen para responder de
diferentes formas al mismo mensaje, y permite al programador implementar múltiples
formas de un mismo método, dependiendo cada una de ellas de la clase sobre la que se
realice la implementación. Esto permite acceder a varios métodos distintos utilizando el
mismo medio de acceso (el mismo nombre).

16/12/2017 Prof. Carlos Vila / Jeny Castellares 17


Herencia y Polimorfismo
o El polimorfismo está muy relacionado con la herencia.

Polimorfismo

16/12/2017 Prof. Carlos Vila / Jeny Castellares 18


Ejemplo 004: Polimorfismo
Clase abstracta
abstract class Animal {
abstract void sonido();
abstract void velocidad();
}

Implementación
public class Perro extends Animal{
void sonido(){
System.out.println("El PERRO ladra: Guau, Guau, Guau, Guau, Guau, .... !!!");
}
void velocidad(){
System.out.println("El PERRO corre a: 20 Km/h");
}
}

public class Pato extends Animal{


void sonido(){
System.out.println("El PATO grasna: Cua, Cua, .... !!!");
}
void velocidad(){
System.out.println("El PATO corre a: 0.1 Km/h");
}
}
16/12/2017 Prof. Jennifer Pillaca / Prof. Carlos Vila 19
Ejercicio 002: Polimorfismo
En el Ejercicio 001, agregar el atributo público remuneracionneta a la superclase y el método
publico CalcularRemuneracionNeta(), el cual determinará que si el empleado es mayor de
edad, su remuneración será menor a 100 soles.
A. En la subclase “Contratado” aplicar el polimorfismo al método de cálculo de la
remuneración neta de la superclase y determinar la remuneración neta como el
costoxhora por nrohoraslaboradas todo incrementado en un 10% como bono por
objetivos cumplidos.
B. En la subclase “TrabajadoresDePlanta” aplicar el polimorfismo al método de cálculo de
la remuneración neta de la superclase y determinar la remuneración neta como 40
horas semanales x 4 semanas x 50 soles la hora, a ello descontar el AFP (12%)
(*) Tanto para los casos A y B, crear las instancias (objetos) desde la clase principal – main() –
e imprimir los valores: nombres, edad y remuneracionneta.

16/12/2017 Prof. Carlos Vila / Jeny Castellares 20


Ejercicios Propuestos
Programación Orientada a Objetos

16/12/2017 Prof. Carlos Vila / Jeny Castellares 21


o Olinda Velarde de Barra, Mitzi Murillo de Velasquez, Ludia
Gómez de Melendez, Felícita Castillo de Krol. Introducción
a la programación orientada a objetos. PEARSON
Educación. Primera Edición 2006. Pág. 11 – 12, Pág. 131
– 142.

Bibliografía
Programación Orientadas a Objetos

16/12/2017 Prof. Carlos Vila / Jeny Castellares 22


Preguntas
Programación Orientada a Objetos

16/12/2017 Prof. Carlos Vila / Jeny Castellares 23

Vous aimerez peut-être aussi