View Single Post
Old 03-02-2016, 02:49   #2
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Cittā: San Francisco, CA, USA
Messaggi: 13826
Quote:
Originariamente inviato da mistergks Guarda i messaggi
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);

    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?
Onestamente io non creerei mai un nuovo tipo e userei un metodo virtuale per fare una cosa del genere ...

Detto questo pero' questo e' un esercizio ... a volte bisogna capire anche cosa l'esercizio vuole che tu faccia.
Se credi che nella risoluzione tu debba almeno usare una funzione virtuale e creare almeno una classe derivata allora la tua soluzione puo' tenere (anche se mi pare che il valore dipenda solo dal ruolo e non dal ruolo e l'eta') .

Detto questo se e' cosi' e' un esercizio del cappero
__________________
GPU Compiler Engineer
AnonimoVeneziano č offline   Rispondi citando il messaggio o parte di esso