1 / 14

HERENCIA

HERENCIA. Programación Orientada a Objetos.

Download Presentation

HERENCIA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HERENCIA Programación Orientada a Objetos

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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.

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

More Related