2️⃣Trooper [12]

Si considerino le seguenti classi relative ai personaggi di un videogioco. Si scrivano le classi necessarie (Abstract Factory) a fare in modo che ad uno AssaultTrooper possa essere associato solo un AssaultRifle ed una Stamina, mentre ad uno Sniper siano associate solo SniperRifle e HoldBreath (10 punti).

Codice
class Weapon {
public:
virtual ~Weapon() = 0;
};
Weapon::~Weapon() {}
class AssaultRifle : public Weapon {
};
class SniperRfile : public Weapon {
};
class PhysicalFeature {
public:
virtual ~PhysicalFeature() = 0;
};
PhysicalFeature::~PhysicalFeature() {}
class Stamina : public PhysicalFeature {
};
class HoldBreath : public PhysicalFeature {
};
class Character {
public:
virtual ~Character() = 0;
void setPhysical(PhysicalFeature * aPF) { 
pf = aPF; }
void setWeapon(Weapon* aW) { 
 w = aW; }
protected:
PhysicalFeature * pf;
Weapon* w;
};
Character::~Character() {}
class AssaultTrooper : public Character {
public:
AssaultTrooper (int s) : 
 strength (s) {};
void doRun() {};
private:
int strength;
};
class Sniper : public Character {
public:
Sniper (int p) : 
precision(p) {};
void doSnipe() {};
private:
int precision;
};
Risposta
class AbstarctTrooper : public Character {
  public:
    virtual weapon()= *AssaultRifle;
    virtual ability()= *Stamina;
    virtual ~Character()=0;
}

class AbstarctSniper : public Character {
  public:
    virtual weapon()= *sniperRifle;
    virtual ability()= *holdBreath;
    virtual ~Character()=0;
}

Si disegni il diagramma UML di classe (2 punti).

Risposta

dove Q è abilità e 1 è arma

Last updated