El término polimorfismo hace referencia a la capacidad de adoptar diversas formas, por lo tanto un objeto polimorfo es aque que tendra la capacidad de tener diversos aspectos.
El polimorfismo permite que un mismo metodo adquiera distintos contenidos declarando funciones o métodos virtuales en la clase base y otras formas de los mismos en las clases derivadas.
Por medio del polimorfismo se puede definir un solo metodo para objetos diferentes. En c++ el polimorfismo se define a través de funciones virtuales.
FUNCIONES VIRTUALES
Las funciones o metodos virtuales se usan en las clases base para indicar que puede haber multiples formas de ellos y las clases derivadas. Para indicar que un metodo es virtual, se hace uso de la palabra reservada 'virtual'.
Sintaxis:
Virtual<tipo> (nombre_función)(lista parametros)
Si la funcion no se define exactamente con el mismo tipo de retorno y numero y tipo de parametros de la clase base, no se conseidera como la misma funcion, si no como una funcion superpuesta.
//Ejercicio 1
class persona
{
protected:
char nombre[30];
public:
persona(char*num);
virtual void vernombre();
};
persona::persona (char*nom)
{strcpy (nombre,nom);}
void persona::vernombre()
{
cout<<"Nombre "<<nombre<<endl;
}
class empleado:public persona
{
public:
empleado(char*nom):persona(nom){};
void vernombre();
};
void empleado::vernombre()
{
cout<<"Empleado "<<nombre<<endl;
}
class estudiante:public persona
{
public:
estudiante (char*nom):persona(nom){};
void vernombre();
};
void estudiante::vernombre()
{
cout<<"Estudiante "<<nombre<<endl;
}
void usapolimorfismo()
{
persona*estud=new estudiante ("John");
persona*emp=new empleado ("Carlos");
estud->vernombre();
emp->vernombre();
system ("PAUSE");
}
int main ()
{
usapolimorfismo();
return 0;
}
//Ejercicio 2
class volumen
{
protected: char nombre[30];
public: volumen(char*n){strcpy(nombre, n);}
virtual void imprime(){cout<<"Volumen: "<<nombre<<endl;}
};
class libro:public volumen
{
protected:int AnioED;
public:
libro(char*n, int an):volumen(n){AnioED=an;};
void imprime()
{
cout<<"Libro: "<<nombre<<endl;
cout<<"Año edicion: "<<AnioED<<endl;
}
};
class revista:public volumen
{
protected: int numRev;
public: revista(char*n, int num):volumen(n){numRev=num;};
void imprime()
{
cout<<"Revista: "<<nombre<<endl;
cout<<"Numero de Revista: "<<numRev<<endl;
}
};
void UsaPolimorfismo()
{
volumen*lib= new libro("Poli ", 2005);
volumen*rev= new revista("Morfismo ",1);
lib->imprime();
rev->imprime();
system("PAUSE");
}
int main(){
UsaPolimorfismo();
return 0;
No hay comentarios.:
Publicar un comentario