PDF de programación - 07.- Polimorfismo - Programación Orientada a Objetos en C# .NET

Imágen de pdf 07.- Polimorfismo - Programación Orientada a Objetos en C# .NET

07.- Polimorfismo - Programación Orientada a Objetos en C# .NETgráfica de visualizaciones

Publicado el 17 de Febrero del 2019
492 visualizaciones desde el 17 de Febrero del 2019
1,1 MB
18 paginas
Creado hace 1a (15/08/2018)
Programación Orientada a Objetos en C# .NET

CAPÍTULO 7

POLIMORFISMO

2

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

1

Programación Orientada a Objetos en C# .NET

Preguntas detonadoras

¿Qué es y para qué sirve el polimorfismo?
¿Qué ventajas ofrece una aplicación polimórfica?
¿Qué conceptos debo dominar para implementar

polimorfismo?

¿Cuántos tipos de polimorfismo existen?
¿Cualquier método definido en una clase base puede
sobrescribirse en sus clases derivadas para provocar
comportamiento polimórfico?

¿Cuáles son las diferencias entre un método virtual,

uno abstracto y uno sobrescrito?

Pilares de la POO

3

4

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

2

Programación Orientada a Objetos en C# .NET

Polimorfismo

Es la habilidad que poseen los objetos para
reaccionar de modo diferente ante los mismos
mensajes.

El polimorfismo se refiere a la posibilidad de definir
múltiples clases con funcionalidad diferente, pero
con métodos o propiedades denominados de forma
idéntica, que pueden utilizarse de manera
intercambiable mediante código cliente en tiempo
de ejecución.
el

polimorfismo

En C#

está

íntimamente

relacionado con la sobrecarga y métodos virtuales.

Conceptos relacionados con
polimorfismo

Sobrecarga (overload)

Herencia

Sobrescritura (override)

5

6

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

3

Programación Orientada a Objetos en C# .NET

Sobrecarga [ Overload ]

La sobrecarga representa diferentes maneras de realizar

una misma acción.

En los programas se usa el mismo nombre en diferentes
métodos con diferentes firmas [número, orden y tipo de los
parámetros].

El código de programación asociado a cada sobrecarga

puede variar.

Ejemplos:

miEmpleado.Contratar(“Juan”, “Ventas”, 2500);
miEmpleado.Contratar(“Juan”);
miEmpleado.Contratar(“Juan”, 2500);

7

Ejemplo de Sobrecarga
[ Overload ]

miPuerta.Abrir ( Adentro, Afuera)

miPuerta.Abrir ( Afuera, Adentro)

miPuerta.Abrir ( )

8

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

4

Programación Orientada a Objetos en C# .NET

Herencia

Vehiculo

CaballosDeFuerza : int

Arrancar() : void
Detener() : void

Superclase
(Clase base)
(Clase padre)
(Clase madre)

Herencia

Automovil

Subclases
(Clases derivadas)
(Clases Hijas)

PalaMecanica

CantidadDePuertas : int

PesoMaximoDeLevante : int

Acelerar(int cuanto) : void

MoverPala(string direccion) : void

Herencia y sobrescritura

9

10

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

5

Programación Orientada a Objetos en C# .NET

Sobrescritura [ Overriding ]

Sucede

cuando una

“B” hereda
características de una clase “A”, pero la clase
“B” re-define las características heredadas de
“A”.

clase

Propiedades y métodos pueden heredarse de
Si estas propiedades y
una superclase.
métodos
clase
derivada, se dice que han sido “sobrescritos”.

son re-definidos

en la

11

Sobrescritura [ Overriding ]

Articulo_Academico
Propiedades:






Metodos:
Abrir ( )

...

Herencia

miLibro y miLaptop heredan el método
Abrir ( ) pero NO lo utilizan; sino que
cada uno lo implementa nuevamente de
manera distinta.

miLibro.Abrir( )

miLaptop.Abrir( )

Un libro y una Laptop se
abren de diferente manera.

12

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

6

Programación Orientada a Objetos en C# .NET

TIPOS

DE

POLIMORFISMO

Paramétrico

De sobrecarga

De subtipo

14

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

7

Programación Orientada a Objetos en C# .NET

15

Ejemplo de polimorfismo
paramétrico

Una clase define varios
métodos con el mismo
nombre pero diferente
firma (sobrecarga)

Se elige el método de

acuerdo a la firma
aplicada

La sobrecarga del
constructor es un
ejemplo de ello

16

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

8

Programación Orientada a Objetos en C# .NET

Otro ejemplo de polimorfismo
paramétrico

La misma clase tiene varios
métodos con el mismo
nombre pero diferentes
firmas con diferentes tipos
de datos

La sobrecarga de métodos no provoca polimorfismo

de sobrecarga, sino polimorfismo paramétrico

17

Ejemplo de polimorfismo de
sobrecarga (overload)

Diferentes clases

tienen un método con
el mismo nombre, pero
comportamiento
diferente

Se aplica el método de

acuerdo al objeto en
que se trabaje

18

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

9

Programación Orientada a Objetos en C# .NET

Ejemplo de polimorfismo de
subtipo (override)

Las clases derivadas redefinen los métodos y/o propiedades

heredados mediante la sobrescritura (override)

19

Otro ejemplo de polimorfismo de
subtipo (override)

Se sobrescribe el método heredado Mover() según

lo requiera la pieza del ajedrez

20

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

10

Programación Orientada a Objetos en C# .NET

Diferencia entre Polimorfismo y
Sobrecarga

Un método está sobrecargado si dentro de una clase
existen dos o más declaraciones de dicho método con el
mismo nombre pero con parámetros distintos.

En definitiva: La sobrecarga se resuelve en tiempo de
compilación utilizando los nombres de los métodos y los
tipos de sus parámetros; el polimorfismo se resuelve en
tiempo de ejecución del programa, esto es, mientras se
ejecuta, en función de la clase a la que pertenece el
objeto.

21

Polimorfismo

POLI = Múltiples MORFISMO = Formas

ObjetoEnFormaDeCaja

miRefrigerador.Abrir( “Puerta de Abajo” )
miRefrigerador.Abrir( “Puerta de Arriba” , “Mitad” )

miRegalo.Abrir( ) miCofre.Abrir( )

22

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

11

Programación Orientada a Objetos en C# .NET

Métodos virtuales

Son métodos en la clase base pensados para ser sobrescritos

por subclases.

Para declararlos, se utiliza la palabra reservada “virtual”;

para sobrescribirlos, en la subclase se utiliza la palabra
reservada “override”.

Un método virtual “PUEDE” ser sobrescrito, o utilizarse tal

como está.

Solo se puede utilizar “override” si el método en la clase base

está marcado como “virtual”, “abstract” u “override”.

El método “override” debe mantener el mismo nivel de

acceso que el método “virtual” correspondiente

23

Método virtual

class ClaseBase

{

// Método virtual (preparado para ser modificado

en una clase derivada)

public virtual void Metodo()

. . . .

{

}

}

24

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

12

Programación Orientada a Objetos en C# .NET

Método sobrescrito

class ClaseDerivada : ClaseBase

{

}

// Sobrescritura del método heredado

public override void Metodo()

{

}

. . . .

25

Ejemplo
virtual…override

class Vehiculo
{ public virtual void Arrancar()

{ System.Console.WriteLine("Arrancar...Clase Vehiculo");
}

}

class Carro: Vehiculo
{ public override void Arrancar()

{ System.Console.WriteLine("Arrancar....Clase Carro");
}

}

class Programa
{ static void Main()

{ Carro miCarro = new Carro();

miCarro.Arrancar();
System.Console.ReadLine();

}

}

Ejecución del programa…
Arrancar....Clase Carro

26

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

13

Programación Orientada a Objetos en C# .NET

Ejemplo virtual…override
(Polimorfismo en Tiempo de ejecución)

class Vehiculo
{ public virtual void Arrancar()

{ System.Console.WriteLine("Arrancar...Clase Vehiculo");
}

}

class Carro : Vehiculo
{ public override void Arrancar()

{ System.Console.WriteLine("Arrancar....Clase Carro");
}

}

class Programa
{ static void Main()

Vehiculo v;
v = new Vehiculo();
v.Arrancar();
v = new Carro();
v.Arrancar();
System.Console.ReadLine();

{

}

}

En una variable
tipo “Vehiculo”
se almacenan
objetos tipo
“Vehiculo” y tipo
“Carro”.
Al invocar el
mismo método
para el mismo
objeto,
se observa
una conducta
diferente,
apropiada para
cada objeto.

Ejecución del programa…
Arrancar...Clase Vehiculo
Arrancar....Clase Carro

27

override sealed

Agregar “sealed” a un método “override” impide la

futura sobrescritura de ese método, proporcionando
una implementación final.

class Aparato
{ public virtual void Prender()

{ System.Console.WriteLine(" Prendiendo el Aparato ");
}

}

class TV : Aparato
{

public override sealed void Prender()
{ System.Console.WriteLine(" LA TV SE ESTA PRENDIENDO ");
}

}
class TVColor : TV
{ public override void Prender()

ERROR!!!...El método ya
no se puede sobrescribir.

{ System.Console.WriteLine(" La tele a color se esta prendiendo");
}

}

28

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

14

Programación Orientada a Objetos en C# .NET

Ocultar métodos heredados

Es posible ocultar un método heredado e introducir uno

nuevo a la jerarquía de clases. El método antiguo (heredado)
es reemplazado por otro nuevo, diferente, pero con el mismo
nombre y la misma firma.

class Vehiculo
{

public void Arrancar()
{

System.Console.WriteLine(" Clase Vehiculo. Metodo Arrancar ");

}

}
class Automovil : Vehiculo
{

public new void Arrancar()
{

System.Console.WriteLine(" Clase Automovil. Metodo Arrancar ");

}

}

Ejercicio

29

30

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

15

Programación Orientada a Objetos en C# .NET

Diseño de la forma

Diagramas de flujo de los métodos

Empleado.CalcularSalario() : double

Método Virtual

return( HorasTrabajadas * SueldoPorHora )

31

32

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

16

Programación Orientada a Objetos en C# .NET

Diagramas de flujo de lo
  • Links de descarga
http://lwp-l.com/pdf15275

Comentarios de: 07.- Polimorfismo - Programación Orientada a Objetos en C# .NET (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad