Upload
william-parks
View
27
Download
1
Embed Size (px)
DESCRIPTION
HERENCIA. Programación Orientada a Objetos. - PowerPoint PPT Presentation
Citation preview
HERENCIAProgramación Orientada a Objetos
HERENCIA
La idea fundamental de la POO es identificar los objetos presentes en nuestro problema y sus relaciones, para formar una jerarquía de objetos, algo similar a un árbol genealógico; es decir, primero identificar al objeto más genérico de la especie, y luego identificar otros objetos derivados de este primer objeto, y así sucesivamente, de esos nuevos objetos identificar otros objetos derivados de ellos
Los objetos derivados son objetos descendientes que heredan las características y comportamiento, de lo que se llama, objetos ancestros (o sus ascendientes)
EJEMPLO
Los empleados de cierta empresa se dividen en dos tipos: empleados por horas, a los que se les paga de acuerdo con el número de horas trabajadas y a una cuota por hora. El otro tipo son los empleados asalariados a quienes se les paga de acuerdo con un sueldo fijo mensual
Un objeto es EmpleadoPorhoras, con los datos:
nombreEmp nombre del empleado.deptoEmp departamento en el que labora.puestoEmp puesto que desempeña.horasTrab número de horas que trabajo.cuotaHora cuota que se le paga por hora.sueldoQnaHoras sueldo quincenal del empleado por horas;
calculado con horas trabajadas y cuota por hora.
EJEMPLO
Y el otro objeto es EmpleadoAsalariado, con los datos: nombreEmp nombre del empleado.deptoEmp departamento en el que labora.puestoEmp puesto que desempeña.suledoMensual sueldo fijo mensual que se le paga.SueldoQnaAsal sueldo quincenal del empleado asalariado;
calculado con el sueldo mensual.
Podemos apreciar que los objetos EmpleadoPorhoras y EmpleadoAsalariado tiene en común los datos: nombreEmp, deptoEmp y puestoEmp. El resto de los datos son diferentes
Cuando se tiene una situación como la expuesta, podemos utilizar el
mecanismo de herencia, mediante un proceso de abstracción en el que definimos un objeto más abstracto que contenga lo que es común a los demás objetos, para que, a partir de ese, derivar a los otros objetos mediante el mecanismo de herencia
EJEMPLO HERENCIA
Como se puede observar, se ha formado una jerarquía de clases, donde tenemos una primera clase, la clase principal o más general: la clase Empleado, a la cual se le conoce como la superclase. Luego, de la superclase Empleado se derivan dos clases, a las que se les llama subclases, por que son clases que se derivan de otra clase, éstas son: la clase EmpleadoPorHoras y la clase EmpleadoAsalariado.
Empleado
EmpleadoPorHoras EmpleadoAsalariado
Y aplicando el concepto de diseñar la estructura de cada clase, nos queda el siguiente diagrama de clase.
Empleado11
# nombreEmp# deptoEmp# puestoEmp
establecerNombreEmp ( )establecerDeptoEmp ( )establecerPuestoEmp ( )obtenerNombreEmp ( )obtenerDeptoEmp ( )obtenerPuestoEmp ( )
EjecutaEmpleado11
EmpleadoPorHoras1
horasTrabcuotaHorasueldoQnaHoras
establecerHorasTrab ( )establecerCuotaHora ( )calcularSueldoQnaHoras ( )obtenerSueldoQnaHoras ( )
EmpleadoAsalariado1
SueldoMensualSueldoQnaAsal
establecerSueldoMensual ( )calcularSueldoQnaAsal ( )obtenerSueldoQnaAsa ( )
SUPERCLASES Y SUBCLASES
Las superclases no se usan para ser instanciadas, es decir, no se usan para generar objetos a partir de ellas. Las superclases se utilizan para derivar otras clases (subclases), formando jerarquías de clases a través del mecanismo de herencia.
En nuestro ejemplo, Empleado11 es una superclase que se utiliza para derivar las subclases EmpleadoPorHoras1 y EmpleadoAsalariado1; en consencuencia, la clase Empleado11, no se usa para generar objetos; solo se generan objetos de las subclases EmpleadoPorHoras1 y EmpleadoAsalariado1. Así, al generar un objeto de la clase EmpleadoPorHoras1, tendrá la siguiente estructura:
objEmpleado
nombreEmpJuan
deptoEmpCaballeros
puestoEmpVendedor
horasTrab40
cuotaHora50.00
sueldoQnaHoras2000.00
establecerNombreEmp ( )establecerDeptoEmp ( )establecerPuestoEmp ( )establecerHorasTrab ( )establecerCuotaHora ( )calcularSueldoQnaHoras ( )obtenerNombreEmp ( )obtenerDeptoEmp ( )obtenerPuestoEmp ( )obtenerSueldoQnaHoras ( )
DISEÑO DE ALGOTIMOS OO USANDO HERENCIA
Algoritmo CALCULAR SUELDO DE VARIOS EMPLEADOSClase Empleado11 1. Declaraciones
Datos # nombreEmp: Cadena
# deptoEmp: Cadena# puestoEmp: Cadena
2. Método establecerNombreEmpl (nom: Cadena)
a. nombreEmp = nom b. Fin método establecerNombreEmp
3. Método establecerDeptoEmp (dep: Cadena) a. deptoEmp = dep b. Fin método establecerDeptoEmp
4. Método establecerPuestoEmp (pue: Cadena)
a. puestoEmp = pue b. Fin método establecerPuestoEmp
DISEÑO DE ALGOTIMOS OO USANDO HERENCIA
5. Método obtenerNombreEmp ( ): Cadena a. return nombreEmp b. Fin método obtenerNombreEmp
6. Método obtenerDeptoEmp ( ): Cadena
a. return deptoEmp b. Fin método obtenerDeptoEmp
7. Método obtenerPuestoEmp ( ): Cadena
a. return puestoEmp b. Fin método obtenerPuestoEmp
Fin Clase Empleado11
DISEÑO DE ALGOTIMOS OO USANDO HERENCIA
Clase EmpleadoPorHoras1 hereda de Empleado11 1. Declaraciones Datos
horasTrab: EnterocuotaHora: RealsueldoQnaHoras: Real
2. Método establecerHorasTrab (horasTr: Entero)
a. horasTrab = horarTrb. Fin método establecerHorasTrab
3. Método establecerCuotaHora (cuotaHr: Real)
a. horasTrab = horarTrb. Fin método establecerCuotaHora
DISEÑO DE ALGOTIMOS OO USANDO HERENCIA
4. Método calcularSueldoQnaHoras ( )a. sueldoQnaHoras = horasTrab*cuotaHorab. Fin método calcularSueldoQnaHoras
5. Método obtenerSueldoQnaHoras ( ): Real
a. return sueldoQnaHorasb. Fin método obtenerSueldoQnaHoras
Fin Clase EmpleadoPorHoras1
Clase EmpleadoAsalariado1 hereda de Empleado11…Clase EjecutaEmpleado11…
RESUMEN
Cada vez que entra al ciclo procesa un empleado, pregunta si es empleado por horas o asalariado. Si el tipo de empleado es por horas, genera un objeto llamado objEmpleado, este objeto se generará tomando como base la subclase EmpleadoPorHoras1; misma que a su vez, hereda de Empleado11, quedando un objeto con la siguiente estructura
Es decir, con los datos y métodos definidos tanto en la subclase EmpleadoPorHoras1, como los definidos en la clase Empleado11, que es la superclase de la cual hereda EmpleadoPorHoras1.
Por el contrario, si el tipo de empleado es asalariado, genera un objeto llamado objEmpleado, tomando como base la subclase EmpleadoAsalariado1
objEmpleado
nombreEmpJuan
deptoEmpCaballeros
puestoEmpVendedor
horasTrab40
cuotaHora50.00
sueldoQnaHoras2000.00
establecerNombreEmp ( )establecerDeptoEmp ( )establecerPuestoEmp ( )establecerHorasTrab ( )establecerCuotaHora ( )calcularSueldoQnaHoras ( )obtenerNombreEmp ( )obtenerDeptoEmp ( )obtenerPuestoEmp ( )obtenerSueldoQnaHoras ( )
EJERCICIO
Elaborar un diagrama de clases y codificar en Java que ofrezca un menú de opciones, mediante el cual se pueda escoger calcular el área de las figuras geométricas: triángulo, cuadrado, rectángulo y círculo. Una vez seleccionada la opción, que permita solicitar y leer el nombre de la figura y los datos necesarios para calcular el área correspondiente e imprimir el nombre de la figura y el área.
Área de triángulo = (Base x Altura) / 2Área de cuadrado = Lado2
Área de círculo = pi.r2
Área de rectángulo = Base x Altura
ÁREA DE FIGURAS
1. Triángulo2. Cuadrado3. Rectángulo4. Círculo5. Fin
OPCIÓN
EJERCICIO – DIAGRAMA DE CLASES
Figura1
# nomFigura
establecerNomFigura()obtenerNomFigura()
Triangulo1
baseTriaalturaTriaareaTria
establecerBaseTria()establecerAlturaTria()
calcularAreaTria()obtenerAreaTria()
Rectangulo1
baseRectaalturaRectaareaRecta
Circulo1
radioCircareaCirc
Cuadrado1
ladoCuadareaCuad
EjecutaFigura1