Foros del Web » Programación para mayores de 30 ;) » Programación General »

Mas dudas sobre clases derivadas en C++

Estas en el tema de Mas dudas sobre clases derivadas en C++ en el foro de Programación General en Foros del Web. Hola. Bueno, pues sigo aprendiendo a dominar C++. Y aun tengo muchas dudas, sobretodo con esto de las clases derivadas. Bueno, tengo una clase principal ...
  #1 (permalink)  
Antiguo 21/06/2005, 14:46
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Mas dudas sobre clases derivadas en C++

Hola. Bueno, pues sigo aprendiendo a dominar C++. Y aun tengo muchas dudas, sobretodo con esto de las clases derivadas.

Bueno, tengo una clase principal que tiene variables y funciones miembro.
Tambein tengo las famosas clases derivadas de esta principal que lo que hacen es bueno tareas adicionales a las de la clase principal, dando el resultado a las variables miembro de la clase principal.

Bueno, si en el main escribo algo como

main(..)
{
clase_derivada_a ca;
clase_derivada_b cb;
}

Segun me dice Eternal Idol, cada clase derivada tiene su "propia clase principal", bueno, me refiero a que si escribo datos con una clase a la clase princiapl, no estan ahi cuando los intento leer desde otra clase derivada.
Segun Eternal Idol debo usar static para que el valor se conserve.

Pero porque?

Lo que yo necesitaba era crear la clase principal, a la que las clases derivadas dieran su resultado para que esta clase pudiese ponerlo en pantalla. Tengo que usar forzosamente el static en todas mis variables miembro de la clase principal?
O debo definir la derivada dentro de la clase principal, haciendola a esta no derivada y mas bien como otro miembro de la clase.

Esta medio extraño, pero entonces que ventaja tendrian las clases derivadas?

Saludos
  #2 (permalink)  
Antiguo 21/06/2005, 15:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
No es que sea segun lo que digo yo, si queres poder compartir la informacion entre diferentes objetos esa es una manera.

Yo creo que el principal problema es, y ya te lo dije en otro hilo, que el diseño falla por todas partes. Ahora estas dudando entre herencia o composicion.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 21/06/2005, 16:18
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Si, posiblemente.
Creo que lo mencione, lo que necesito hacer es: voy a poner un ejemplo.
Cita:
class clase_principal{
protected:
char mensaje[10];
public:
void mostrar_mensaje(void){printf("%s", mensaje);};
};

class clase_derivada_a:public clase_principal{
public:
void escribir_mensaje(char *mensaje);
};

class clase_derivada_b:public clase_principal{
public:
void limpiar_mensaje(void){memset(&mensaje, 0, sizeof(mensaje));};
};

int main(void)
{
clase_derivada_a ca;
clase_derivada_b cb;

ca.escribir_mensaje("Hola");
cb.limpiar_mensaje();
ca.escribir_mensaje("Otra vez hola\n");
cb.mostrar_mensaje();
return 0;
}
Este es un ejemplo sencillo de lo que intento hacer,que es, que la salida de este programa sea "Otra vez Hola".
Posiblemente estoy mal en algunos conocimientos o en la forma de implementarlo, pero pues si la unica manera es declarar mensaje como static, pues que remedio.

Saludos
  #4 (permalink)  
Antiguo 21/06/2005, 16:23
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
No veo el sentido y viola totalmente la encapsulacion. ¿Para que tener tres clases en este modelo?

¿Cual seria el beneficio de tener una subclase con el metodo escribir y otra con el metodo limpiar? ¿No seria mas logico que fueran metodos de la clase principal?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 21/06/2005, 16:35
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Es un ejemplo simple.
Mi proyecto es una engine para juegos en 2D.
Y tengo la clase de graficos principal, que como variables miembro tengo la pantalla y el buffer trasero y otros.
En sus funciones miembro pues estan para dibujar en la pantalla, actualizarla, o modificarla en cualquier sentido.
Ahora, como clase derivada tego una engine de tiles(baldosas) que pues te da funciones para manipular las tiles y luego pintarlas en la pantalla de la clase principal usando las funciones miembro de la clase principal, pero la diferencia es que la clase derivada tiles manipula a su modo las tiles, las puede rotar, las separa, las numera y luego te las deja listas para que puedan ser pintadas con las clase principal.
Ahora tambien tengo otra clase derivada que se encarga de los sprites, esta clase pues mide el tiempo entre animaciones, muestra el grafico correcto, etc etc, que finalmente se pintal en pantalla, ese es el verdadero proyecto, una serie de clases que ayudan a la programacion de videojuegos, y claro, hehas por mi porque son solo para mi y para quien las entienda.

Entonces en la funcion main, quiero poner pues tiles como fondo y sprites como el personaje que manejas, con una sola clase que declare dentro del main con esa ya puedo tener los sprites que quiera, o si no, pues poner varios objetos sprites uno para cada tipo de sprites que quier hacer.

Ahora que ya expuse mi idea, que piensan, estoy utilizando un metodo que no deberia utilizar o que?

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:45.