Esercizio WebCAT: Ex5 (Polymorphism)
Esercizio WebCAT: Ex5 (Polymorphism)
Si considerino le classi Shape, Rectangle, Point, Polygon e Circle fornite nel file di esempio e se ne completino i metodi indicati con TODO. Si consiglia di testare le classi con un proprio programma di prova ispirandosi ai test forniti nel file di esempio.
Specifiche:
- nella classe Point implementare in modo inline i due metodi isNotNeg() e operator==. isNotNeg rende true se entrambe le coordinate del punto sono >=0
- nella classe Shape definire il distruttore. Si consideri che questa è una classe base che deve obbligare tutte le classi derivate (i.e. essere astratta) a implementare un metodo draw() che non ha argomenti e rende true se il disegno di una forma è possibile. Le classi che specializzano Shape devono essere polimorfiche ed usabili con un puntatore a classe base.
- nella classe Rectangle implementare il metodo draw() in modo tale che sia possibile disegnare il rettangolo solo se i punti topLeft e bottomRight hanno coordinate >= 0 (ovvero se isNotNeg() è true). Implementare costruttore e getter/setter er il punto bottomRight.
- nella classe Circle implementare il costruttore ed il metodo draw(), che disegna solo se le coordinate del punto topLeft sono non negative (usare isNotNeg())
- nella classe Polygon implementare il distruttore ed il costruttore. Il metodo draw disegna solo se ci sono almeno 2 punti che hanno coordinate non negative. Implementare anche i metodi getPoint(int index) e setPoint(...) che ritornano un puntatore nullo ne caso le coordinate del punto richiesto siano fuori dai margini dell'array (getPoint) o ritorna falso se si prova ad impostare un punto fuori dai margini dell'array (setPoint).
- Quando finito creare un file .zip contenente tutti i file .h e .cpp e tutti i file TestXXX.h forniti nel materiale dell'esercizio e caricare il file su Web-CAT.
- Correggere l'implementazione finché non vengono passati tutti i test riportati in "Results From Running Your Tests" (il cui codice è compreso in TestXXX.h) ed i test aggiuntivi riportati in "Estimate of Problem Coverage"
Per scaricare il file, fai click su questo link: WEBCAT-Ex5-AbstractPolymorphicClass.zip