Sugerencia de diseño orientado a objetos
Aquí está mi código:
class Soldier {
public:
Soldier(const string &name, const Gun &gun);
string getName();
private:
Gun gun;
string name;
};
class Gun {
public:
void fire();
void load(int bullets);
int getBullets();
private:
int bullets;
}
Necesito llamar a todas las funciones miembro de Gun sobre un objeto Soldier. Algo como:
soldier.gun.fire();
o
soldier.getGun().load(15);
Entonces, ¿cuál es un mejor diseño? Ocultar el objeto de arma como miembro privado y acceder a él con la función getGun (). ¿O haciéndolo miembro público? O puedo encapsular todas estas funciones haría que la implementación sea más difícil:
soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()
Entonces, ¿cuál crees que es el mejor?