Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.c++
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 23-11-2007, 21:58:48
Javier M Mora
 
Mensajes: n/a
Predeterminado Implementando un polimorfismo.


Tengo una jerarquÃ***a muy simple con una clase base abstracta y "n" clases
derivadas. Tanto la clase base como las derivadas tienen una función
"Pinta". Y en principio quiero que cuando se pinte una clase hija
tambien se ejecute el "Pinta" de la clase base.

Se me ocurre dos formas distintas de hacerse. En una primera la clase
derivada llama a la clase base: (en pseudocódigo)

class Base { Pinta(){Lo comun a cada clase; }
clase Hija1: Base {Pinta(){base.Pinta(); mas lo especÃ***fico de Hija1 }
clase Hija2: Base {Pinta(){base.Pinta(); mas lo especÃ***fico de Hija2 }
....

Esta tiene el incoveniente de que hay que acordarse de incorporar la
llamada a la función de la clase base.

El segundo sistema es cargar la clase base:
class Base{ Pinta(){Lo común a cada clase; Pintando()}
Pintando()=0 // pintando es abstracto y se ejecuta por
// polimorfismo}
class Hija1: Base {Pintando(){lo especifico de Hija1}
class Hija2: Base {Pintando(){lo especifico de Hija2}
....

El incoveniente de este es que quizás sea menos claro a la hora de
entender la lógica del programa.

¿qué solución encontrais más práctica o recomendable?
Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 25-11-2007, 22:38:34
Bartomeu
 
Mensajes: n/a
Predeterminado Re: Implementando un polimorfismo.

Te recomiendo la segunda opción, mejorándola con el uso de 'private' para
forzar el uso correcto de las clases derivadas
class Base {
public:
void Pinta() {/*lo común*/; PintaEspecializado();}
private:
virtual void PintaEspecializado()=0;
// virtual pura, para que tengan que definirla
// privada para obligarles a llamar siempre a Pinta(), nunca a
PintaEspecializado()
};

class Hija : public Base{
private:
void PintaEspecializado();
// privada para que no se pueda llamar por error.
}

Responder Con Cita
  #3 (permalink)  
Antiguo 25-11-2007, 22:38:34
Bartomeu
 
Mensajes: n/a
Predeterminado Re: Implementando un polimorfismo.

Te recomiendo la segunda opción, mejorándola con el uso de 'private' para
forzar el uso correcto de las clases derivadas
class Base {
public:
void Pinta() {/*lo común*/; PintaEspecializado();}
private:
virtual void PintaEspecializado()=0;
// virtual pura, para que tengan que definirla
// privada para obligarles a llamar siempre a Pinta(), nunca a
PintaEspecializado()
};

class Hija : public Base{
private:
void PintaEspecializado();
// privada para que no se pueda llamar por error.
}

Responder Con Cita
  #4 (permalink)  
Antiguo 25-11-2007, 22:38:34
Bartomeu
 
Mensajes: n/a
Predeterminado Re: Implementando un polimorfismo.

Te recomiendo la segunda opción, mejorándola con el uso de 'private' para
forzar el uso correcto de las clases derivadas
class Base {
public:
void Pinta() {/*lo común*/; PintaEspecializado();}
private:
virtual void PintaEspecializado()=0;
// virtual pura, para que tengan que definirla
// privada para obligarles a llamar siempre a Pinta(), nunca a
PintaEspecializado()
};

class Hija : public Base{
private:
void PintaEspecializado();
// privada para que no se pueda llamar por error.
}

Responder Con Cita
  #5 (permalink)  
Antiguo 25-11-2007, 22:38:34
Bartomeu
 
Mensajes: n/a
Predeterminado Re: Implementando un polimorfismo.

Te recomiendo la segunda opción, mejorándola con el uso de 'private' para
forzar el uso correcto de las clases derivadas
class Base {
public:
void Pinta() {/*lo común*/; PintaEspecializado();}
private:
virtual void PintaEspecializado()=0;
// virtual pura, para que tengan que definirla
// privada para obligarles a llamar siempre a Pinta(), nunca a
PintaEspecializado()
};

class Hija : public Base{
private:
void PintaEspecializado();
// privada para que no se pueda llamar por error.
}

Responder Con Cita
  #6 (permalink)  
Antiguo 25-11-2007, 22:38:34
Bartomeu
 
Mensajes: n/a
Predeterminado Re: Implementando un polimorfismo.

Te recomiendo la segunda opción, mejorándola con el uso de 'private' para
forzar el uso correcto de las clases derivadas
class Base {
public:
void Pinta() {/*lo común*/; PintaEspecializado();}
private:
virtual void PintaEspecializado()=0;
// virtual pura, para que tengan que definirla
// privada para obligarles a llamar siempre a Pinta(), nunca a
PintaEspecializado()
};

class Hija : public Base{
private:
void PintaEspecializado();
// privada para que no se pueda llamar por error.
}

Responder Con Cita
  #7 (permalink)  
Antiguo 25-11-2007, 22:38:34
Bartomeu
 
Mensajes: n/a
Predeterminado Re: Implementando un polimorfismo.

Te recomiendo la segunda opción, mejorándola con el uso de 'private' para
forzar el uso correcto de las clases derivadas
class Base {
public:
void Pinta() {/*lo común*/; PintaEspecializado();}
private:
virtual void PintaEspecializado()=0;
// virtual pura, para que tengan que definirla
// privada para obligarles a llamar siempre a Pinta(), nunca a
PintaEspecializado()
};

class Hija : public Base{
private:
void PintaEspecializado();
// privada para que no se pueda llamar por error.
}

Responder Con Cita
  #8 (permalink)  
Antiguo 25-11-2007, 22:38:34
Bartomeu
 
Mensajes: n/a
Predeterminado Re: Implementando un polimorfismo.

Te recomiendo la segunda opción, mejorándola con el uso de 'private' para
forzar el uso correcto de las clases derivadas
class Base {
public:
void Pinta() {/*lo común*/; PintaEspecializado();}
private:
virtual void PintaEspecializado()=0;
// virtual pura, para que tengan que definirla
// privada para obligarles a llamar siempre a Pinta(), nunca a
PintaEspecializado()
};

class Hija : public Base{
private:
void PintaEspecializado();
// privada para que no se pueda llamar por error.
}

Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Polimorfismo en Herencia daniel Newsgroup microsoft.public.es.vc 6 20-03-2008 01:55:14
Polimorfismo en Java Alexandre Vazquez Newsgroup es.comp.lenguajes.java 35 23-11-2006 07:46:50
herencia y polimorfismo pete Newsgroup es.comp.lenguajes.java 56 07-07-2006 11:52:25
Un problema implementando un modelo en access: puede ayudarme alguien? feanor Newsgroup es.comp.bd.ms-access 0 13-05-2005 07:40:05
Polimorfismo elevado al cuadrado. DeiF Newsgroup es.comp.lenguajes.c++ 24 29-01-2004 12:54:50





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.