Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - digimikeh

#41
hola Engel.

La idea es que en algun momento un modulo pueda obtener informacion de otro a modo de informacion o de traslado de activo.

No me ha quedado claro, dices que no seria problema crear esa cantidad de tablas ?

Como info adicional, estaré utilizando QODBC (ODBC).

El algoritmo del cliente es asi:
1) Un usuario que pertenece al modulo X abre el programa, selecciona su region y luego selecciona el modulo X.
2) El programa verifica si existen las tablas con el sufijo X en el servidor
3) Si no existen, las crea, si existen las lee y traspasa la informacion a las vistas.

Cada cliente hace esto, por lo que la creacion de las 1300 tablas seria un proceso automatico y rapido, aun asi, no se si es lo suficientemente práctico.

#42
Hola amigos..

Tengo que diseñar un programa que será un cliente hecho en Qt C++, se debe conectar a una base de datos alojada en un servidor.

La situacion es que son 13 regiones, cada region tiene 15 modulos, y cada modulo utiliza 7 tablas independientes, entonces como verana son muchas muchas tablas (ese es mi concepto, posiblemente este equivocado), cada modulo ingresa informacion separada del resto, por eso pienso que son cientos de tablas...

Que se hace en este caso?

1) Crear una sola base de datos gigante que tenga 1365 tablas (13 x 15 x 7) y distinguirlas con un prefijo, ejemplo:  table_region0_modulo0_usuarios, table_region0_modulo0_direcciones, etc

2) Crear 13 bases de datos y 105 tablas por cada db..

3) Otra ...

All final, la idea es que cada modulo ejecute su cliente del programa, y se conecte al indice de su propio modulo y lea la informacion segun ese sufijo...


Como les he comentado, los registros de usuarios del modulo 0 no son los mismos que los del modulo 1.. por eso pense en crear muchas tablas..

Que hacer en este caso?
saludos y gracias.
#44
oh eso esta muy bueno, tiene mucho sentido el imponer reglas cuando hay mas programadores.

Gracias a todos por las respuestas.
#45
Gracias por responder.

Aunque de todas formas con el ejemplo que me das (que es valido) aun no le hallo sentido a tener que escribir una linea (funcion virtual pura) mas en la super clase ya que siempre en las subclases la tendré que declarar (override) y definir...  Veo a las funciones puras como una interfaz mas que nada, ejemplo:


class Animal{
protected:
     virtual void emitir_sonido() const = 0;

};



class Canario : protected Animal{
protected:
     void emitir_sonido() override{ std::cout << "piop piop"; }
};



class Arana: protected Animal{
protected:
     //nada
};


No sería mejor esto?


class Animal{
protected:
     //nada
};



class Canario : protected Animal{
protected:
     void emitir_sonido(){ std::cout << "piop piop"; }
};



class Arana: protected Animal{
protected:
    //nada
};


De esta forma, de igual forma no necesito funcion virtual pura para hacer callar a la araña y para hacer cantar al canario...o no?
#46
Hola!

Hago esta pregunta desde la ignorancia, entiendo que virtual/override ayuda mucho a no tener que redefinir trozos de codigo de una función, sin embargo no entiendo cual es el fin de las funciones virtuales puras, es decir, no implementan nada, solo veo que ocupan un espacio en el archivo de cabecera, al fin y al cabo de todas formas tendrás que volver a declararlas y definirlas en las subclases como override...



class A{
protected:
    virtual void hacer_algo() = 0;     //Esto me parece que estuviera de más.....
    //otras cosas..

};



class B : public A{
protected:
    void hacer_algo() override;   //.... si aqui tengo que estar escribiendolo nuevamente.

};


Por qué no directamente?:


class A{
protected:
    //otras cosas
};



class B : public A{
protected:
    void hacer_algo();
};

#47
Programación C/C++ / enums heredados ?
5 Octubre 2019, 04:44 AM
Buenas noches:

De la misma forma que se puede virtualizar una función y sobreemontarla en alguna clase hija... me pregunto si es posible hacer lo mismo con los enums....

por ejemplo:


class padre{

protected:
    virtual enum mis_objetos{    //virtual aqui?
         objPrincipal = 99
    };

    virtual void una_funcion(mis_objetos mo){
         //hacer algunas cosas previas que sirven para todas las subclases//
    }

}



class hija1 : public padre{

protected:
    enum mis_objetos override{
         obj0 = 0,
         obj1
    };

    void una_funcion(ms_objetos mo) override;
}




class hija2 : public padre{

protected:
    enum mis_objetos override{
         obj50 = 3,
         obj55
    };

    void una_funcion(ms_objetos mo) override;
}


Como verán, cada clase tiene sus propios elementos enum, sin embargo, para que la función una_funcion(mis_objetos) pueda sobremontarse, es necesario que el enum exista en el padre..

Es posible hacer esto? (con el codigo estoy especulando, lo mas seguro que tenga errores)

Gracias.
#48
Programación C/C++ / Re: Variables estaticas...
2 Septiembre 2019, 01:14 AM
Muy bien ya me ha quedando claro...
:o

Gracias..
#49
ok, entiendo, pero yo tenía entendido que cuando tu definías algo, estas usando el constructor... o es que extern es la excepción?

Alpha.h
Código (cpp) [Seleccionar]

class Alpha{
     int x;
public:
     Alpha() : x{5}{}
     //hacer otras cosas
}


main.cpp
Código (cpp) [Seleccionar]

#include "Alpha.h"

int main (){
     Alpha a;            //Nota (a)
}


Nota (a) : A pesar de estar declarando un objeto llamado a de tipo Alpha se estaría inicializando el campo privado x y valdría 5... (es asi como yo tengo en mi programa el objeto Sesion inicializa sus campos privados a un string "NA".

Sin embargo, acabo de darme cuenta que incializar y definir no son la misma cosa...


#50
De acuerdo, me parece lógico...

Bueno, en este caso he querido usar un int como ejemplo para describir mi duda, en el programa que estoy intentando hacer, lo que quiero usar como variable global es un tipo propio que se inicializa con un constructor.  En el constructor de ese tipo propio (que se llama Sesion) se inicializan los campos privados, por lo que ...

Código (cpp) [Seleccionar]

extern Sesion s;


...estaría inicializando dichos campos automáticamente, aún asi debo volver a definir tal como lo hiciste cuando escribiste esta linea ? :

Código (cpp) [Seleccionar]

int x::num = 10; // definida aquí o en cualquier otro cpp


O es que al escribir extern Sesion s en realidad no estoy ejecutando el constructor con su inicialización?

Saludos! y gracias por las respuestas... han sido de mucha ayuda @std::string Manolo y @Loretz.