Sto svolgendo un esercizio in C++ per la programmazione orientata agli oggetti.
Traccia:
Un giocatore ha nome, età e un valore che dipende dal ruolo del giocatore e dall'età.
Progettare la classe Giocatore fornendo solo la definizione (Giocatore.h) tenendo presente che il sistema deve essere flessibile all'aggiunta di un nuovo ruolo.
Inserire nella classe Giocatore tutti i metodi che si ritengono opportuni motivandone l'aggiunta.
Ho risolto cosi':
file Giocatore.h
Codice:
#ifndef GIOCATORE_h
#define GIOCATORE_H
class Giocatore{
protected:
string nome;
int eta;
int valore;
public:
string getNome() const;
int getEta() const;
int getValore() const;
void setNome(string n);
void setEta(int e);
void setValore(int v);
virtual int calcolaValore()=0;
};
#endif // GIOCATORE_h
file Difensore.h
Codice:
#ifndef DIFENSORE_H
#define DIFENSORE_H
#include "Giocatore.h"
class Difensore: public Giocatore{
public:
int calcolaValore(){ return v;}
};
#endif // DIFENSORE_H
In pratica ho creato la classe Giocatore come classe astratta e ho messo come metodo virtuale puro calcolaValore() che ho poi definito nella classe Difensore che eredita Giocatore.
Il mio dubbio è va bene questa scelta?
L'ereditarietà è public?