Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

Problemas del polimorfismo

5/35
Recursos

En esta clase veremos como el polimorfismo, aunque es muy bueno, puede ocasionarnos problemas al momento de ejecutarse nuestro programa si hacemos un mal uso del casting.

Aportes 13

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Hubiese sido bueno el tema de upcasting y downcasting, aqui les dejo info para que investiguen un poco mas del tema.

Creo esta entendible => https://www.c-sharpcorner.com/article/polymorphism-up-casting-and-down-casting/

En mi opini贸n personal me parece un p茅simo ejemplo hablar de problemas de polimorfismo al querer castear objetos de diferentes clases, ese problema puede existir sin necesidad del polimorfismo y en realidad es una practica muy mala q solo se debe en usar en casos muy pero muy espec铆ficos.

no enga帽en a su sistema :v

En mi caso como programador he visto que el riesgo que se utiliza cuando se hace poliformismo es la concurrencia para modificar los objetos ya que se puede deformar,

Alguno conoce que problema mas causa el poliformismo?

Printer.WriteTitle("Pruebas de Polifomrfismo");

            var alumnoTest = new Alumno { Nombre = "Claire UnderWood" };

            Printer.WriteTitle("AlumnoTest");
            WriteLine($"Alumno: {alumnoTest.Nombre}");
            WriteLine($"Alumno: {alumnoTest.UniqueId}");
            WriteLine($"Alumno: {alumnoTest.GetType()}");

            ObjetoEscuelaBase ob = alumnoTest;
            Printer.WriteTitle("ObjetoEscuelaBase");
            WriteLine($"Alumno: {ob.Nombre}");
            WriteLine($"Alumno: {ob.UniqueId}");
            WriteLine($"Alumno: {ob.GetType()}");

            var objDummy = new ObjetoEscuelaBase() { Nombre = "Frank Underwood" };
            Printer.WriteTitle("bjDummy");
            WriteLine($"Alumno: {objDummy.Nombre}");
            WriteLine($"Alumno: {objDummy.UniqueId}");
            WriteLine($"Alumno: {objDummy.GetType()}");

            alumnoTest = (Alumno) ob;
            Printer.WriteTitle("AlumnoTest");
            WriteLine($"Alumno: {alumnoTest.Nombre}");
            WriteLine($"Alumno: {alumnoTest.UniqueId}");
            WriteLine($"Alumno: {alumnoTest.GetType()}");
            
            //GENERA ERROR EN TIEMPO DE EJECUCI脫N
            /* alumnoTest = (Alumno) objDummy;
            Printer.WriteTitle("AlumnoTest");
            WriteLine($"Alumno: {alumnoTest.Nombre}");
            WriteLine($"Alumno: {alumnoTest.UniqueId}");
            WriteLine($"Alumno: {alumnoTest.GetType()}"); */

            var evaluacion = new Evaluacion(){Nombre = "Evaluacion 1", Nota=4.5f};
            Printer.WriteTitle("evaluacion");
            WriteLine($"Alumno: {evaluacion.Nombre}");
            WriteLine($"Alumno: {evaluacion.UniqueId}");
            WriteLine($"Alumno: {evaluacion.Nota}");
            WriteLine($"Alumno: {alumnoTest.GetType()}");

            ob = evaluacion;
            Printer.WriteTitle("ObjetoEscuelaBase evaluacion");
            WriteLine($"Alumno: {ob.Nombre}");
            WriteLine($"Alumno: {ob.UniqueId}");
            WriteLine($"Alumno: {ob.GetType()}");

            // GENERA ERROR EN TIEMPO DE EJECUCI脫N
            // alumnoTest = (Alumno)(ObjetoEscuelaBase)evaluacion;

En pocas palabras no podemos transformar a un objeto hijo a un objeto de tipo padre ya que si bien el primero hereda, no significa que haga referencia absoluta al padre.

Osea el polimorfismo esla forma de ver un objeto como el objeto padre, siempre cuando compartan atributos???

Interesante

馃く

No aporto mucho al tema, pero no recuerdo que los flotantes se escribieran con una F al final. Nota = 31.52f por ejemplo.

En fin buena clase.

Antes del casteo se debe verificar el tipo de dato de los objetos aunque hereden de la misma clase padre

Buena Clase

excelente clase muy claro en el uso de polimorfismo en el codigo del proyecto !!!