4
POLIMORFISMO
PROGRAMACIÓN ORIENTADA A OBJETOS M.S.C. Raúl Mora Reyes
CONCEPTO Nos permite programar en forma general, en vez de programar de manera específica. En especial, nos permite escribir programas que procesen objetos que compartan la misma superclase en una jerarquía, como si todos fueran objetos de la superclase; esto puede simplificar la programación. M.S.C. Raúl Mora Reyes
EJEMPLO
•
Se crea un simulador de movimiento de varios animales. Las clases Pez, Rana y Ave representan los tres tipos de animales a simular. Las 3 extienden a la superclase Animal, en la que declaramos el método mover, pero no le damos contenido, ya que cada animal se mueve de diferente forma.
M.S.C. Raúl Mora Reyes
EJEMPLO
•
Posteriormente cada subclase deberá implementar el método mover, es decir indicar con código como se mueve cada tipo de animal: •
Pez: nada
•
Rana: da brincos
•
Ave: vuela
M.S.C. Raúl Mora Reyes
EJERCICIO ESCUELA
M.S.C. Raúl Mora Reyes
CONTEXTO: ESCUELA •
En una escuela se tienen diferentes tipos de Alumnos, y la información que se registra es la siguiente: •
Licenciatura: numero de control, nombre del alumno, carrera que cursa, semestre.
•
Maestría: numero de control, nombre del alumno, modalidad (Virtual o Presencial), créditos que cursa.
•
Doctorado: numero de control, nombre del alumno, título de su investigación, porcentaje de beca. M.S.C. Raúl Mora Reyes
CONTEXTO: ESCUELA •
Dependiendo del tipo de Alumno el cobro de inscripción se calcula de la siguiente manera: •
Licenciatura: para los semestres menores a 5 se les cobra $7500.00 en los otros casos $5600.00.
•
Maestría: por cada crédito que cursa se le cobra $478.90.
•
Doctorado: El costo de inscripción es de 10,700.00 y se le aplica el porcentaje correspondiente. M.S.C. Raúl Mora Reyes
SOLUCIÓN •
De acuerdo a lo anterior podemos determinar la siguiente jerarquía de herencia:
AlumnoLicenciatura
Alumno -numControl : String -nombre : String +inscripcion( ) : double
AlumnoMaestria
AlumnoDoctorado
-carrera : String -semestre : byte
-modalida : char -creditos : byte
-tituloInv : String -porcBeca : byte
+inscripcion( ) : double
+inscripcion( ) : double
+inscripcion( ) : double
M.S.C. Raúl Mora Reyes
SOLUCIÓN
•
Como podemos observar, la clase abstracta Alumno, declara el método “inscripción” pero no le podemos dar contenido ya que no tenemos información suficiente para calcular el resultado; por lo que cada clase hija tiene la obligación de implementar la lógica del método de acuerdo a cada caso.
M.S.C. Raúl Mora Reyes
CLASE: Alumno
M.S.C. Raúl Mora Reyes
CLASE: AlumnoLicenciatura
M.S.C. RaĂşl Mora Reyes
CLASE: AlumnoMaestria
M.S.C. RaĂşl Mora Reyes
CLASE: AlumnoDoctorado
M.S.C. RaĂşl Mora Reyes
APLICACIÓN
M.S.C. Raúl Mora Reyes