Programmazione e Progettazione Software Compito 24/01/2012
1) a) Si implementi una classe Lista (con templates, senza usare la classe STL di libreria) che permetta le operazioni di:
◦ Aggiunta elemento in posizione N
◦ Eliminazione di tutti gli elementi (metodo Clear())
b) Spiegare se si ritiene necessario fornire un copy costructor e operator= per la classe Lista c) Fornire un unittest per la classe realizzata.
2) Realizzare una classe Classifier che implementa un classificatore di testo che deriva da una classe astratta ClassifierBase. ClassifierBase definisce l'interfaccia del classificatore. Il costruttore della classe Classifier prende un insieme di parole chiave in input che sono tipiche dei documenti di tale classe.
a) Definire un opportuna interfaccia in ClassifierBase.
b) Rendere qualsiasi classificatore copiabile usando il Design Pattern Prototype.
c) Implementare in modo efficiente un metodo di classificazione che dato un documento, rappresentato tramite un vettore di parole, decide se esso appartiene alla classe se almeno 3 parole chiave sono in esso contenute.
d) Fornire un metodo Print() che stampa le parole chiave in ordine alfabetico inverso (da z ad a).
3) a) Si realizzi una classe Timer che permetta di
◦ effettuare il Reset() del conteggio
◦ ottenere il conteggio attuale (tempo trascorso dall'ultimo Reset)
◦ Si tenga traccia dei 10 conteggi più alti in modo efficiente
◦ Si tenga traccia del conteggio massimo mai ritornato da una qualsiasi istanza