Академический Документы
Профессиональный Документы
Культура Документы
Polimorfismo significa muchas formas y en ciencias de la computacin en particular se refiere a la capacidad de asociar diferentes definiciones a un mismo nombre, de modo que el contexto determine cul corresponde usar.
En el contexto de la programacin orientada a objetos el polimorfismo est relacionado con variables, asignaciones y mtodos.
Introduccin a la Programacin Orientada a Objetos
Polimorfismo
Dada la siguiente jerarqua de clases: Persona
Cliente
Empleado
Ejecutivo
Introduccin a la Programacin Orientada a Objetos
<<atributos de instancia>> basico : real Al salario bsico se le suma cantHijos : entero $100 si tiene entre 10 y 15 aos fechaIngreso : Fecha de antigedad y $200 si tiene <<Constructores>> ms de 15 aos de antigedad. <<Comandos>> A este valor se le suma $mh por establecerBasico(b:real) cada hijo. aumentarBasico (a:real) <<Consultas>> toString () : String Una semana cuando cumple 1 ao, 2 semanas cuando cumple masAntiguo(Empleado e) : booleano 5 aos y 3 semanas cuando su sueldoNeto (mh: real) : real antigedad es mayor a 10 aos. diasVacaciones () : entero
20 das
Polimorfismo
Una variable polimrfica puede quedar asociada a objetos de diferentes clases.
Persona unaPersona; unaPersona = new Persona(); unaPersona Persona unaPersona = new Empleado(); unaPersona Empleado
Introduccin a la Programacin Orientada a Objetos
Polimorfismo
Dado que una variable puede estar asociada a objetos de diferentes tipos, distinguiremos entre:
Polimorfismo
Una asignacin polimrfica liga un objeto de una clase a una variable declarada de otra clase
Persona unaPersona; Empleado unEmpleado = new Empleado(); Ejecutivo unEjecutivo = new Ejecutivo(); Son vlidas las siguientes asignaciones polimrficas: unaPersona = unEmpleado; unaPersona = unEjecutivo; unEmpleado = unEjecutivo; Y tambin: unaPersona = new Empleado(); unaPersona = new Ejecutivo();
Introduccin a la Programacin Orientada a Objetos
Polimorfismo
Persona unaPersona; Empleado unEmpleado = new Empleado(); unaPersona = unEmpleado;
unaPersona
unaEmpleado Empleado 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.
Introduccin a la Programacin Orientada a Objetos
Polimorfismo
Empleado unEmpleado = new Empleado(); Empleado otroEmpleado = new Ejecutivo ();
Polimorfismo
El pasaje de parmetros tambin puede ser polimrfico:
Empleado unEmpleado = new Empleado(); Ejecutivo unEjecutivo = new Ejecutivo();
Overiding
Empleado unEmpleado = new Empleado(); Empleado otroEmpleado = new Ejecutivo(); Ejecutivo unEjecutivo = new Ejecutivo(); unEmpleado.sueldoNeto(100); Se liga al mtodo definido en Empleado otroEmpleado.sueldoNeto(100); Se liga al mtodo definido en Ejecutivo unEjecutivo.sueldoNeto(100); Se liga al mtodo definido en Ejecutivo
Introduccin a la Programacin Orientada a Objetos
Chequeo de Tipos
El polimorfismo es un mecanismo que favorece la reusabilidad pero debe restringirse para brindar confiabilidad Los chequeos de tipos en compilacin garantizan que no van a producirse errores de tipo en ejecucin El chequeo de tipos establece restricciones sobre: las asignaciones polimrficas
nuevo.aumentarPresupuesto(100);
Introduccin a la Programacin Orientada a Objetos
Persona
Cliente
Empleado
PlantaEmpleados
Ejecutivo
PlantaEmpleados
PlantaEmpleados
Ejecutivo
bt = bt+T[i].obtenerBasico();
} return bt; }
El mtodo obtenerBasico() es el mismo para todos los empleados, est implementado en la clase Empleado.
Introduccin a la Programacin Orientada a Objetos
int c = 0; for (int i = 0; i <cantElementos();i++) { if (T[i].diasVacaciones() >= d) c++; } return c; } La ligadura con el mtodo diasVacaciones() se establece de acuerdo a la clase del objeto referenciado por T[i]
Introduccin a la Programacin Orientada a Objetos
} return c; }
}
} return c; }
La asignacin no es vlida Error en compilacin
Los errores ms peligrosos son los que saltean los controles y pasan desapercibidos.
Introduccin a la Programacin Orientada a Objetos