Estoy desarrollando un programa, y se esta volviendo un poco spaghetti, es un sistema de e-learning:
Tengo el siguiente escenario (para resumirlo):
Código:
class A{
B objetoB;
std::vector<C> objetosC;
};
class B{
X objetoX;
std::vector<Y> objetosY;
};
class C { ...}
class X {...}
class Y {
std::string palabra = "Hola";
}
//singleton.h
std::vector<A> todos_los_objetos_A;
std::vector<B> todos_los_objetos_B;
En mi caso son mas clases pero expuse esto para aislar mi duda...
encontrar un subobjeto Y y acceder a la variable "palabra" desde fuera se esta volviendo tremendamente tedioso... .. tan solo para modificar la palabra "Hola" a "Hello" (por ejemplo).. debo escribir lo siguiente:
Código:
singleton s;
s.todos_los_objetosA[0].objetoB.objetosY[2].palabra = "Hello";
Imaginar que el vector tiene 20 elementos al menos y que el total de clases son 10... y por si fuera poco, cada indice de vector debo calcularlo previamente tambien, luego una vez encontrado, debo excavar demasiado para modificar el bisnieto de una clase... no se si hay alguna solucion para evitar esto, ya que es propenso a confusión y errores.... estuve pensando en deshacer las composiciones y dejar todos los vectores en singleton.h
Código:
//singleton.h
std::vector<A> todos_los_objetos_A;
std::vector<B> todos_los_objetos_B;
std::vector<C> todos_los_objetos_C;
std::vector<Y> todos_los_objetos_Y;
.. y acceder a los objetos de los subindices directamente en la raiz de la clase singleton... esto rompe un poco el paradigma orientado a objetos pero me da la impresion de que es menos confusion...
Que harian en mi caso? estoy usando base de datos.
Saludos.