Rieccomi ragazzi.
Ho provato a implementare le varie classi della traccia.
Pensando di fare così :
1) la classe che mi fornisce la traccia l'ho trascritta cosi com'è.
2) Ho scritto la classe AccessibleOS1 e AccessibleOS2 ereditando da OperatingSystem. Quindi ho:
enum TipoSO { OS1=0, OS2 };
enum User { A=0, U, G};
class AccessibleOS1 : public OperatingSystem {
public:
virtual list<string> listFiles(string path) ;
virtual bool removeFile (string path) ;
virtual string openFile (string path) ;
virtual bool createDirectory (string path) ;
virtual bool runCommand (string command) ;
virtual bool installPackage (string pkgName) ;
// ho aggiunto la funzione getOperating.. qui nel public ( mi turbano però gli argomenti che prende la funzione , User e TipoSO... non ho capito bene come usarli )
OperatingSystem* getOperatingSystem ( User u, TipoSO tipo );
// ho pensato di aggiungere nel private un puntatore di tipo OperatingSystem, che restituirò con la famosa funzione getOperatingSystem
private:
OperatingSystem *os;
};
la classe AccessibleOS2 è scritta identica.
La traccia ora dice: - fornire l'implementazione completa di una massimo di 3 nuove classi che sfruttino il polimorfismo per proteggere o sovrascrivere (overiding) il comportamento delle classi AccessibleOS1 e AccessibleOS2. Poi ci sono le varie tipologie ( User, Administrator e Guest)
Io avevo pensato di scrivere appunto queste 3 classi sovrascrivendo solo le varie funzioni che mi servono ( ad esempio in administrator servono tutte).
La cosa che però non capisco proprio è come usare la funzione getOperatingSystem cioè riceve un tipo User e un tipo TipoSO. Se non sbaglio il prof ha detto che questi potevo considerarli come due enum, e in base al caso far scegliere correttamente al sistema quali permessi dare. Quindi non so se è necessario creare le 3 classi ti tipologia degli utente o baste l'enum User..
Voi avete qualche piccola idea? grazie in anticipo a chi risponderà