Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

[Duda] Duda sobre polimorfismo

Hasta el Momento estoy mas o menos entendiendo los conceptos de polimorfismo, pero llegue a un punto en el que no entiendo para que el instructor utiliza dos metodos con el mismo nombre, controlBonificaciones(Funcionario funcionario) y luego en la misma clase crea ese misme metodo pero ahora para la clase hija controlBonificaciones(Gerente gerente), eso es polimorfismo? recree paso a paso lo que estaba saliendo en el video, solo que yo no implemente estos metodos en la clase controlDeBonificaciones, y al usarlo dentro de testBonficaciones, de todas maneras funciono como en el video. clase controlBonificacionesal aplicar el metodo solo para las clases funcionario y gerente me arrojo la misma cantidad que al instructor, esto se debe a la herencia? Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad P.d: la suma a final esta mal, deben ser 10600 ya lo corregi pero mi duda sifue siendo la misma.

3 respuestas

Buenas tardes, te explico lo que yo entendi por Polimorfismo, pero aun no llegaste a ver las clases abstractas asi que tu duda se va a responder cuando llegues a esa parte del curso

Funcion registrarSalario, recibe como parametro un Funcionario y a su vez para calcular las bonificaciones se utiliza la funcion abstracta getBonificacion (las funciones abstractas no llevan cuerpo y la clase que extienda de una clase abstracta esta obligada a sobreescribir el metodo) que se encuentra en la clase abstracta Funcionario, cuando esta funcion se ejecuta funcionario pasa a "transformarse" (Polimorfismo) en la clase que necesita registrar el salario por ejemplo en la clase Gerente que tiene implementada su funcion con cuerpo que le indica que es lo que tiene que hacer, lo que esta ahi le falta explicacion que te la van a dar mas adelante, pero una clase abstracta JAMAS se puede instanciar.

Si, de hecho ya resolvi la duda en el discord igual me explicaron y si en teoria lo que se hizo sobre utilizar un mismo metodo pero con diferentes parametros se le conoce como polimorfismo de sobrecarga, donde dos metodos con la misma firma, utilizan parametros de entrada diferentes para que puedan ser usados de manera distinta dependiendo de la entrada del mismo. gracias por tu respuesta igualemente.

solución!

Hola Edgar, espero que estés bien.

Hiciste una excelente pregunta! =]

El Polimorfismo de hecho es un contenido de la orientación a objetos que requiere mucha práctica. Solo así logrará a ver las ventajas.

"...el instructor utiliza dos metodos con el mismo nombre, controlBonificaciones(Funcionario funcionario) y luego en la misma clase crea ese misme metodo pero ahora para la clase hija controlBonificaciones(Gerente gerente)" - --> aunque tengan los mismos nombres, ¡tienen parámetros diferentes! Entonces hay una especialidad.

public double registrarSalario(Funcionario funcionario) { ... }

public double registrarSalario(Gerente gerente) { ... }

de esta forma, el tipo Gerente es un tipo diferente a Funcionario, por lo que si llamas al método registrarSalario que recibe un tipo Gerente y pone como argumento un objeto de tipo Funcionario, generará un error en tu código.

En el minuto [08:42] el profe dijo "comenzamos aquí a registrar un patrón no muy amigable" - el código fue desarrollado para que los alumnos vean que hay repetición en de código y luego él enseña una mejor manera de hacer: a través de la Herencia.

El polimorfismo permite que las clases derivadas de una sola clase base puedan invocar métodos que, aunque tengan la misma firma, se comporten de manera diferente para cada una de las clases derivadas.. Con polimorfismo, los mismos atributos y objetos se pueden usar en diferentes objetos, sin embargo, con diferentes implementaciones lógicas.

Espero haberte quedado claro, cualquier duda estaremos aquí para ayudarte =)

¡Un saludo!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios