La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras.

Presentaciones similares


Presentación del tema: "0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras."— Transcripción de la presentación:

1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras polimóficas Dr. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

2 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO El concepto de polimorfismo es central en la programación orientada a objetos. En el contexto de la programación orientada a objetos el polimorfismo está relacionado con variables, asignaciones y métodos. Introducción a la Programación Orientada a Objetos IPOO - 2015 2 Polimorfismo significa muchas formas y en ciencias de la computación en particular se refiere a “la capacidad de asociar diferentes definiciones a un mismo nombre, de modo que el contexto determine cuál corresponde usar”.

3 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO Introducción a la Programación Orientada a Objetos IPOO - 2015 3 Una variable polimórfica puede quedar asociada a objetos de diferentes clases. Una asignación polimórfica liga un objeto de una clase a una variable declarada de otra clase. Un método polimórfico incluye una o más variables polimórficas como parámetro.

4 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: NÓMINA DE EMPLEADOS Persona > nombre : String calleNro : String telefono : String email : String > … > establecerCalleNro(d: String)… > obtenerCalleNro(): String toString(): String Introducción a la Programación Orientada a Objetos IPOO - 2015 4

5 Empleado > basico: real cantHijos: entero fechaIngreso: Fecha >… > establecerBasico(b: real) aumentarBasico(a: real)… > toString(): String masAntiguo(e: Empleado): booleano sueldoNeto(mh: real): real diasVacaciones(): entero Al salario básico se le suma $1000 si tiene entre 10 y 15 años de antigüedad y $2000 si tiene más de 15 años de antigüedad. A este valor se le suma $mh por cada hijo. Una semana cuando cumple 1 año, 2 semanas cuando cumple 5 años y 3 semanas cuando su antigüedad es mayor a 10 años. Retorna verdadero si el empleado que recibe el mensaje es más antiguo que el argumento

6 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: NÓMINA DE EMPLEADOS Ejecutivo > productividad: real presupuesto: real viaticos: real > establecerPresupuesto(p: real ) aumentarPresupuesto(a: real )… > obtenerPresupuesto(): real sueldoNeto(mh: real): real diasVacaciones(): entero 6 20 días A partir del sueldo neto de cualquier empleado, se suma la productividad

7 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO Introducción a la Programación Orientada a Objetos IPOO - 2015 7 Persona Cliente Empleado Ejecutivo Dada la siguiente jerarquía de clases:

8 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 VARIABLES POLIMÓRFICAS 8 Persona unaPersona; unaPersona = new Persona(); Una variable polimórfica puede quedar asociada a objetos de diferentes clases. : Persona unaPersona unaPersona = new Empleado(); : Empleado unaPersona

9 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO Dado que una variable puede estar asociada a objetos de diferentes tipos, distinguiremos entre: El tipo estático de una variable, es el tipo que aparece en la declaración. El tipo dinámico de una variable se determina en ejecución y corresponde a la clase a la que corresponde el objeto referenciado. Introducción a la Programación Orientada a Objetos IPOO - 2015 9 El tipo estático de una entidad determina el conjunto de tipos dinámicos a los que puede quedar asociada.

10 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO Son válidas las siguientes asignaciones polimórficas: Y también: 10 El tipo estático de una entidad determina el conjunto de tipos dinámicos a los que puede quedar asociada. Persona unaPersona; Empleado unEmpleado = new Empleado(); Ejecutivo unEjecutivo = new Ejecutivo(); unaPersona = unEmpleado; unaPersona = unEjecutivo; unEmpleado = unEjecutivo; unaPersona = new Empleado(); unaPersona = new Ejecutivo();

11 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO La variable unaPersona puede quedar ligada a objetos de clase Persona, Cliente, Empleado o Ejecutivo. La variable unEmpleado puede quedar ligada a objetos de clase Empleado o Ejecutivo. 11 Persona unaPersona; Empleado unEmpleado = new Empleado(); unaPersona = unEmpleado; : Empleado unaPersona unEmpleado Introducción a la Programación Orientada a Objetos IPOO - 2015

12 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO 12 Empleado unEmpleado = new Empleado(); Empleado otroEmpleado = new Ejecutivo (); Ejecutivo unEjecutivo = new Ejecutivo (); Introducción a la Programación Orientada a Objetos IPOO - 2015 unEmpleado.aumentarBasico(100); otroEmpleado.aumentarBasico(100); unEjecutivo.aumentarBasico(100);

13 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO El pasaje de parámetros también puede ser polimórfico: El método definido en la clase Empleado como: Puede usarse con un argumento de clase Ejecutivo : 13 Empleado unEmpleado = new Empleado(); Ejecutivo unEjecutivo = new Ejecutivo(); Introducción a la Programación Orientada a Objetos IPOO - 2015 public boolean masAntiguo(Empleado e){ … } unEmpleado.masAntiguo(unEjecutivo);

14 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 LIGADURA DINÁMICA DE CÓDIGO Polimorfismo, overriding (redefinición de métodos) y ligadura dinámica de código son conceptos fuertemente ligados. La posibilidad de que una variable pueda referenciar a objetos de diferentes clases y de que existan varias definiciones para una misma signatura, brinda flexibilidad al lenguaje siempre que además exista ligadura dinámica de código. Introducción a la Programación Orientada a Objetos IPOO - 2015 14 La ligadura dinámica de código es la vinculación en ejecución de un mensaje con un método.

15 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO, DEROGACIÓN Y LIGADURA DINÁMICA 15 Empleado unEmpleado = new Empleado(); Empleado otroEmpleado = new Ejecutivo(); Ejecutivo unEjecutivo = new Ejecutivo(); unEmpleado.sueldoNeto(100); otroEmpleado.sueldoNeto(100); unEjecutivo.sueldoNeto(100); Introducción a la Programación Orientada a Objetos IPOO - 2015 Se liga al método definido en Empleado Se liga al método definido en Ejecutivo

16 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO, DEROGACIÓN Y LIGADURA DINÁMICA 16 Empleado unEmpleado = new Empleado(); Empleado otroEmpleado = new Ejecutivo(); System.out.println(unEmpleado.toString()); System.out.println(otroEmpleado.toString()); Introducción a la Programación Orientada a Objetos IPOO - 2015 Se liga al método definido en Empleado Se liga al método definido en Ejecutivo

17 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CHEQUEO DE TIPOS El polimorfismo es un mecanismo que favorece la reusabilidad pero debe restringirse para brindar confiabilidad. En Java el polimorfismo y la ligadura dinámica quedan restringidos por el chequeo de tipos. Los chequeos de tipos en compilación previenen errores de tipo en ejecución. Introducción a la Programación Orientada a Objetos IPOO - 2015 17

18 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CHEQUEO DE TIPOS El chequeo de tipos establece restricciones sobre: –las asignaciones polimórficas –los mensajes que un objeto puede recibir Introducción a la Programación Orientada a Objetos IPOO - 2015 18

19 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO Y CHEQUEO DE TIPOS Una variable polimórfica puede referenciar a objetos de su clase o de alguna de las clases derivadas. El compilador reporta ERROR en las siguientes asignaciones: 19 Persona unaPersona; Empleado unEmpleado = new Empleado(); Ejecutivo unEjecutivo = new Ejecutivo(); Introducción a la Programación Orientada a Objetos IPOO - 2015 unEmpleado = unaPersona; unEjecutivo = unaPersona; unEjecutivo = unEmpleado;

20 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO Y CHEQUEO DE TIPOS Una variable polimórfica determina los mensajes que un objeto puede recibir, aunque el objeto determina la implementación específica del comportamiento que se ejecuta en respuesta a los mensajes. Son válidos los mensajes: 20 Empleado unEmpleado ; Ejecutivo unEjecutivo = new Ejecutivo (…); unEmpleado = unEjecutivo; Introducción a la Programación Orientada a Objetos IPOO - 2015 unEmpleado.establecerBasico (1500); unEjecutivo.establecerPresupuesto(200);

21 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO Y CHEQUEO DE TIPOS El compilador reporta ERROR en los siguientes mensajes: 21 Empleado unEmpleado ; Empleado nuevo ; Ejecutivo unEjecutivo = new Ejecutivo (…); unEmpleado = unEjecutivo; nuevo = new Ejecutivo (…); Introducción a la Programación Orientada a Objetos IPOO - 2015 unEmpleado.establecerPresupuesto(100); nuevo.aumentarPresupuesto(100);

22 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO, DEROGACIÓN CHEQUEO DE TIPOS Y LIGADURA DINÁMICA 22 Empleado unEmpleado = new Empleado(); Empleado otroEmpleado = new Ejecutivo(); unEmpleado.diasVacaciones(); otroEmpleado.diasVacaciones(); Introducción a la Programación Orientada a Objetos IPOO - 2015 Se liga al método definido en Empleado Se liga al método definido en Ejecutivo

23 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 POLIMORFISMO, DEROGACIÓN CHEQUEO DE TIPOS Y LIGADURA DINÁMICA El objeto referenciado por unEmpleado sólo podrá recibir los mensajes que corresponden al comportamiento de la clase Empleado. Sin embargo, si un método está redefinido en la clase Ejecutivo, la ligadura se establece con el método provisto por Ejecutivo. 23 Introducción a la Programación Orientada a Objetos IPOO - 2015 Empleado unEmpleado = new Ejecutivo();

24 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS La empresa mantiene la información referida a sus empleados en una colección. La colección brinda servicios para insertar, eliminar y buscar elementos y además para calcular: - Total de Salarios básicos. - Contar los empleados que tienen más de d días de vacaciones. - Total de Salarios netos. -Total de Salarios básicos de los ejecutivos. -Total de los presupuestos asignados a los Ejecutivos. 24 Introducción a la Programación Orientada a Objetos IPOO - 2015

25 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS 25 Persona ClienteEmpleado Ejecutivo PlantaEmpleados PlantaE mpleados es una colección.

26 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS Empleado > PlantaEmpleados Empleado [] t cantEmpleados: entero … > insertar(a: Empleado) … > existeEmpleado(a: Empleado): boolean…

27 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS Empleado > PlantaEmpleados Empleado [] t cantEmpleados: entero > basicoTotal() : real contarMasVacaciones(d: entero): entero basicoEjecutivos(): real presupuestoEjecutivos(): real netoTotal(h: real): real Cuenta la cantidad de empleados que tienen más de d días de vacaciones

28 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS import java.util.*; class PlantaEmpleados{ private Empleado[] t; private int cantEmpleados; } 28 El arreglo mantiene referencias a objetos de clase Empleado o de alguna de sus subclases. Introducción a la Programación Orientada a Objetos IPOO - 2015

29 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS 29 :Empleado :Ejecutivo t Introducción a la Programación Orientada a Objetos IPOO - 2015

30 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS El arreglo t está constituido por una colección de variables polimórficas. Cuando una componente del arreglo reciba un mensaje su comportamiento dependerá de la clase a la que pertenezca esta componente. 30 Introducción a la Programación Orientada a Objetos IPOO - 2015

31 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public float basicoTotal (){ float bt = 0; for (int i = 0; i < cantElementos(); i++){ bt = bt + t[i].obtenerBasico(); } return bt; } 31 El método obtenerBasico () es el mismo para todos los empleados, está implementado en la clase Empleado. Introducción a la Programación Orientada a Objetos IPOO - 2015

32 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public int contarMasVacaciones(int d){ int c = 0; for (int i = 0; i < cantElementos(); i++){ if (t[i].diasVacaciones() >= d) c++; } return c; } 32 La ligadura con el método diasVacaciones() se establece de acuerdo a la clase del objeto referenciado por t[i]. Introducción a la Programación Orientada a Objetos IPOO - 2015

33 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public double netoTotal(float h){ float c = 0; for (int i = 0; i <cantElementos();i++) { c = c + t[i].sueldoNeto(h); } return c; } 33 Introducción a la Programación Orientada a Objetos IPOO - 2015

34 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public double basicoEjecutivos(){ float be = 0; for (int i = 0; i < cantElementos(); i++){ if (t[i] instanceof Ejecutivo){ be = be + t[i].obtenerBasico(); } } return be; } 34 Introducción a la Programación Orientada a Objetos IPOO - 2015

35 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public double presupuestoEjecutivos(){ float c = 0; for (int i = 0; i < cantElementos(); i++){ if (t[i] instanceof Ejecutivo) { c = c + t[i].obtenerPresupuesto(); } return c; } 35 Introducción a la Programación Orientada a Objetos IPOO - 2015 El mensaje no es válido Error en compilación

36 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public double presupuestoEjecutivos(){ float c = 0; Ejecutivo eje; for (int i = 0; i < cantElementos(); i++){ if (t[i] instanceof Ejecutivo){ eje = t[i]; c = c + eje.obtenerPresupuesto(); } return c; } 36 Introducción a la Programación Orientada a Objetos IPOO - 2015 La asignación no es válida Error en compilación

37 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public double presupuestoEjecutivos(){ float c = 0; Ejecutivo eje; for (int i = 0; i < cantElementos(); i++){ if (t[i] instanceof Ejecutivo){ eje = (Ejecutivo) t[i]; c = c + eje.obtenerPresupuesto(); } return c; } 37 –El casting relaja el control del compilador, el programador asegura que no va a haber errores.

38 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS public double presupuestoEjecutivos(){ float c = 0; Ejecutivo eje; for (int i = 0; i < cantElementos(); i++){ eje = (Ejecutivo) t[i]; c = c + eje.obtenerPresupuesto(); } return c; } 38 Introducción a la Programación Orientada a Objetos IPOO - 2015 Error en ejecución EXCEPCIÓN :Empleado t

39 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS Una excepción indica que se ha producido un evento inesperado en ejecución, con frecuencia un error. Algunas excepciones provocan que el programa termine anormalmente. Cuando Java intenta hacer un cast sobre un objeto y su clase no corresponde con el operador se produce una excepción y se genera un objeto de clase ClassCastException. Los errores más peligrosos son los que saltean los controles y pasan desapercibidos. 39 Introducción a la Programación Orientada a Objetos IPOO - 2015

40 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: PLANTA DE EMPLEADOS El uso de instanceof está desaconsejado por la Programación Orientada a Objetos. Si el diseño está bien elaborado no debería ser necesario. Sin embargo, al cambiar los requerimientos, las clases pueden modificarse y las nuevas funcionalidades se implementan con instanceof. 40 Introducción a la Programación Orientada a Objetos IPOO - 2015


Descargar ppt "0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras."

Presentaciones similares


Anuncios Google