E N D
HERENCIA Programación Orientada a Objetos
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) HERENCIA
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
Empleado EmpleadoPorHoras EmpleadoAsalariado • 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. EJEMPLO HERENCIA
Empleado11 # nombreEmp # deptoEmp # puestoEmp establecerNombreEmp ( ) establecerDeptoEmp ( ) establecerPuestoEmp ( ) obtenerNombreEmp ( ) obtenerDeptoEmp ( ) obtenerPuestoEmp ( ) EjecutaEmpleado11 EmpleadoAsalariado1 SueldoMensual SueldoQnaAsal establecerSueldoMensual ( ) calcularSueldoQnaAsal ( ) obtenerSueldoQnaAsa ( ) EmpleadoPorHoras1 horasTrab cuotaHora sueldoQnaHoras establecerHorasTrab ( ) establecerCuotaHora ( ) calcularSueldoQnaHoras ( ) obtenerSueldoQnaHoras ( ) • Y aplicando el concepto de diseñar la estructura de cada clase, nos queda el siguiente diagrama de clase.
objEmpleado nombreEmp Juan deptoEmp Caballeros puestoEmp Vendedor horasTrab 40 cuotaHora 50.00 sueldoQnaHoras 2000.00 establecerNombreEmp ( ) establecerDeptoEmp ( ) establecerPuestoEmp ( ) establecerHorasTrab ( ) establecerCuotaHora ( ) calcularSueldoQnaHoras ( ) obtenerNombreEmp ( ) obtenerDeptoEmp ( ) obtenerPuestoEmp ( ) obtenerSueldoQnaHoras ( ) • 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: SUPERCLASES Y SUBCLASES
Algoritmo CALCULAR SUELDO DE VARIOS EMPLEADOS Clase 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. returnnombreEmp b. Fin método obtenerNombreEmp 6. Método obtenerDeptoEmp ( ): Cadena a. returndeptoEmp b. Fin método obtenerDeptoEmp 7. Método obtenerPuestoEmp ( ): Cadena a. returnpuestoEmp b. Fin método obtenerPuestoEmp Fin Clase Empleado11 DISEÑO DE ALGOTIMOS OO USANDO HERENCIA
Clase EmpleadoPorHoras1 hereda de Empleado11 1. Declaraciones Datos horasTrab: Entero cuotaHora: Real sueldoQnaHoras: Real 2. Método establecerHorasTrab (horasTr: Entero) a. horasTrab= horarTr b. Fin método establecerHorasTrab 3. Método establecerCuotaHora (cuotaHr: Real) a. horasTrab= horarTr b. Fin método establecerCuotaHora DISEÑO DE ALGOTIMOS OO USANDO HERENCIA
4. Método calcularSueldoQnaHoras ( ) a. sueldoQnaHoras= horasTrab*cuotaHora b. Fin método calcularSueldoQnaHoras 5. Método obtenerSueldoQnaHoras ( ): Real a. returnsueldoQnaHoras b. Fin método obtenerSueldoQnaHoras Fin Clase EmpleadoPorHoras1 Clase EmpleadoAsalariado1 hereda de Empleado11 … Clase EjecutaEmpleado11 … DISEÑO DE ALGOTIMOS OO USANDO HERENCIA
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 nombreEmp Juan deptoEmp Caballeros puestoEmp Vendedor horasTrab 40 cuotaHora 50.00 sueldoQnaHoras 2000.00 establecerNombreEmp ( ) establecerDeptoEmp ( ) establecerPuestoEmp ( ) establecerHorasTrab ( ) establecerCuotaHora ( ) calcularSueldoQnaHoras ( ) obtenerNombreEmp ( ) obtenerDeptoEmp ( ) obtenerPuestoEmp ( ) obtenerSueldoQnaHoras ( ) RESUMEN
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 • Triángulo • Cuadrado • Rectángulo • Círculo • Fin • OPCIÓN EJERCICIO
Figura1 # nomFigura establecerNomFigura() obtenerNomFigura() Triangulo1 baseTria alturaTria areaTria establecerBaseTria() establecerAlturaTria() calcularAreaTria() obtenerAreaTria() Rectangulo1 baseRecta alturaRecta areaRecta Circulo1 radioCirc areaCirc Cuadrado1 ladoCuad areaCuad EjecutaFigura1 EJERCICIO – DIAGRAMA DE CLASES