1.-POLIMORFISMO

Descripción

polimorfismo dentro de programacion orientada a objetos
vaneruiz1496
Apunte por vaneruiz1496, actualizado hace más de 1 año
vaneruiz1496
Creado por vaneruiz1496 hace más de 8 años
14
0

Resumen del Recurso

Página 1

Polimorfismo. Métodos virtuales El polimorfismo indica que una variable pasada o esperada puede adoptar múltiples formas. Cuando se habla de polimorfismo en programación orientada a objetos se suelen entender dos cosas:1. La primera se refiere a que se puede trabajar con un objeto de una clase sin importar de qué clase se trata. Es decir, se trabajará igual sea cual sea la clase a la que pertenece el objeto. Esto se consigue mediante jerarquías de clases y clases abstractas. 2. La segunda suele referirse a la posibilidad de declarar métodos con el mismo nombre que pueden tener diferentes argumentos dentro de una misma clase.

Página 2

La capacidad de un programa de trabajar con más de un tipo de objeto se conoce con el nombre de polimorfismoSi tenemos, por ejemplo,void main(){ disco_musica d1(32,“EMI”,423,“CD”); disco * ptr = & d1;d1.imprimir_fabricante();//Invoca al de la clase derivada.ptr -> imprimir_fabricante();//Invoca al de la clase base.} Cuando se invoca un método de un objeto de la clase derivada mediante un puntero a un objeto de la clase base, se trata al objeto como si fuera de la clase base.Este comportamiento puede ser el deseado en ciertos casos, pero otras veces tal vez se desee que el comportamiento de la clase desaparezca por completo. Es decir, si el objeto de la clase disco_música se trata como un objeto de la clase disco, se quiere seguir conservando el comportamiento de la clase disco_música. Para ello se utiliza la palabra reservada virtual, si se quiere que el comportamiento de un método de la clase disco desaparezca se ha de declarar el método como virtual. Si queremos modificar la clase disco para que se pueda sobrecargar su comportamiento cuando se acceda a la clase disco_musica a través de un puntero a disco pondríamos: class disco{ protected: int capacidad;char * fabricante; int num_serie; public: disco (int c, char * f, int n){capacidad = c; strcpy(fabricante, f); num_serie=n;} void imprimir_capacidad(){ cout << capacidad;} virtual void imprimir_fabricante(){cout << fabricante; } void imprimir_num_serie(){ cout << num_serie;} };

Página 3

Los únicos métodos que no pueden ser declarados como virtuales son los constructores, los métodos estáticos, y los operadores new y delete. Clase virtual pura Hay veces en las que no va a ser necesario crear objetos de la clase base, o simplemente no se desea que quien utilice la clase pueda crear objetos de la clase base. Para ello existen lo que suele llamarse en POO clases abstractas. Esta clase define el interfaz que debe tener una clase y todas las clases que heredan de ella. En C++ el concepto de clases abstractas se implementa mediante funciones virtuales puras. Estas funciones se declaran igual que cualquier otra función anteponiendo la palabra virtual y añadiendo al final de la declaración =0. Para estas funciones no se proporciona implementación. En C++ la clase abstracta debe tener uno o más métodos virtuales puros. Dada una clase abstracta, no se pueden crear objetos de esa clase base. Se pueden crear punteros que a objetos de la clase base abstracta que realmente apunten a objetos de la clase derivada.

Mostrar resumen completo Ocultar resumen completo

Similar

Comunidades Autónomas de España y sus Capitales
maya velasquez
Países de Latinoamérica y sus Capitales
maya velasquez
Provincias de España
Diego Santos
BANDERAS de EUROPA...
JL Cadenas
Paisajes de España
Joaquín Ruiz Abellán
Capas de la Tierra
Diego Santos
Los ríos y aguas de España
Remei Gomez Gracia
El Relieve de España
Remei Gomez Gracia
Arte Egipcio
maya velasquez
Historia Contemporánea: Los fascismos
María Salinas
Primera Guerra Mundial
Diego Santos