| Contacto | Chat | Foro |__
  
 
Principal Hoja de Vida Universidad Artículos Programas Descargas
 

Programa que ejemplifica el uso de polimorfismo


PROG00015 - C/C++

Programa que muestra el uso de polimorfismo en C++. Se crea una clase base a partir de la cual se derivan tres clases hijas, que al compartir el mismo ancestro, pueden utilizar métodos con nombre común.

class BaseDeDatos
{
   char autor[50];
   char titulo[50];
   char fecha[50];

   public:
   BaseDeDatos (char* quien,char* que,char* cuando);
   virtual void Mostrar (void);
};

BaseDeDatos::BaseDeDatos (char* quien,char* que,char* cuando)
{
   strcpy(autor,quien);
   strcpy(titulo,que);
   strcpy(fecha,cuando);
}

void BaseDeDatos::Mostrar (void)
{
   cout << endl << endl;
   cout << "Autor = " << autor << endl;
   cout << "Titulo= " << titulo << endl;
   cout << "Fecha = " << fecha << endl;
}

class Pintura: public BaseDeDatos
{
   int ancho,alto;

   public:
   Pintura (char* autor,char* titulo,char* fecha,int w,int h);
   virtual void Mostrar (void);
};

Pintura::Pintura (char* autor,char* titulo,char* fecha,int w,int h): BaseDeDatos(autor,titulo,fecha)
{
   ancho= w;
   alto = h;
}

void Pintura::Mostrar (void)
{
   BaseDeDatos::Mostrar();
   cout << "Tipo: Pintura" << endl;
   cout << "Tamaño: " << ancho << " x " << alto << endl;
}

class Musica: public BaseDeDatos
{
   char clave[40];

   public:
   Musica (char* autor,char* titulo,char* fecha,char* k);
   virtual void Mostrar (void);
};

Musica::Musica (char* autor,char* titulo,char* fecha,char* k): BaseDeDatos(autor,titulo,fecha)
{
   strcpy(clave,k);
}

void Musica::Mostrar (void)
{
   BaseDeDatos::Mostrar();
   cout << "Tipo: M£sica" << endl;
   cout << "Clave: " << clave << endl;
}

class DeCamara: public Musica
{
   int numero_de_musicos;

   public:
   DeCamara (char* autor,char* titulo,char* fecha,char* k,int
      nom);
   virtual void Mostrar (void);
};

DeCamara::DeCamara (char* autor,char* titulo,char* fecha,char* clave,int nom): Musica(autor,titulo,fecha,clave)
{
   numero_de_musicos= nom;
}

void DeCamara::Mostrar (void)
{
   Musica::Mostrar();
   cout << "Otro: Musica de Camara" << endl;
   cout << "Numero de Musicos: " << numero_de_musicos << endl;
}

void ImprimirInformacion (BaseDeDatos& D)
{
   D.Mostrar();
}

void main (void)
{
   Musica Sinfonia ("Beethoven, Luduiwg van",
                    "Novena Sinfonia",
                    "1824",
                    "Re Menor");

   Pintura Cuadro ("da Vinci, Leonardo",
                   "Mona Lisa",
                   "1503",
                   24,36);

   DeCamara Opus ("Mozart, Wolfgang Amadeus",
                  "Hoffmesiter",
                  "1786",
                  "Re Mayor",
                  4);

   ImprimirInformacion(Sinfonia);
   ImprimirInformacion(Cuadro);
   ImprimirInformacion(Opus);
}

Advertencia
Aunque no he escatimado esfuerzos en cuanto a proveer aplicaciones e información confiable y veraz, sin embargo no puedo garantizar que esté totalmente libre de errores; por esa razón, no asumo responsabilidad alguna por las consecuencias que se deriven de su empleo.




7-Zip

Descarga Adobre Reader

Descargar programa
  Copyright 2005 | Ramón Medina | Todos los derechos reservados | Última Actualización: Agosto del 2008 | webmaster@ramonmedina.name