Objektorientierter Designvorschlag
Hier ist mein Code:
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;
}
Ich muss alle Member-Funktionen von Gun über ein Soldier-Objekt aufrufen. So etwas wie
soldier.gun.fire();
ode
soldier.getGun().load(15);
Also welches ist ein besseres Design? Versteckt das Waffenobjekt als privates Mitglied und greift mit der Funktion getGun () darauf zu. Oder es zu einem öffentlichen Mitglied machen? Oder ich kann alle diese Funktionen kapseln, würde die Implementierung erschweren:
soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()
So welches denkst du ist das beste?