HERENCIA

14
HERENCIA Programación Orientada a Objetos

description

HERENCIA. Programación Orientada a Objetos. - PowerPoint PPT Presentation

Transcript of HERENCIA

Page 1: HERENCIA

HERENCIAProgramación Orientada a Objetos

Page 2: HERENCIA

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)

Page 3: HERENCIA

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.

Page 4: HERENCIA

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

 

Page 5: 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

Page 6: HERENCIA

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 ( )

Page 7: HERENCIA

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 ( )

Page 8: HERENCIA

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

Page 9: HERENCIA

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

Page 10: HERENCIA

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

Page 11: HERENCIA

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…

Page 12: HERENCIA

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 ( )

Page 13: HERENCIA

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

Page 14: HERENCIA

EJERCICIO – DIAGRAMA DE CLASES

Figura1

# nomFigura

establecerNomFigura()obtenerNomFigura()

Triangulo1

baseTriaalturaTriaareaTria

establecerBaseTria()establecerAlturaTria()

calcularAreaTria()obtenerAreaTria()

Rectangulo1

baseRectaalturaRectaareaRecta

Circulo1

radioCircareaCirc

Cuadrado1

ladoCuadareaCuad

EjecutaFigura1