1. Premessa
Leggete bene tutte le istruzioni! In particolare i paragrafi 4. Modalità e 5. Raccomandazioni.2. Introduzione
Si richiede di implementare un programma che permetta di leggere da file e visualizzare in forma aggregata i voti di una classe di studenti, in modo semplificato.3. Descrizione del lavoro
Il programma deve visualizzare un'interfaccia utente grafica contenente almeno 3 pulsanti e 3 aree di testo. La figura 1 illustra un possibile aspetto dell'interfaccia. La finestra del programma deve essere ridimensionabile e i componenti devono scalare automaticamente quando l'utente modifica le dimensioni della finestra.Figura 1
Meni 2 Cino 3 Dino 7 Gino 9 Cino 5 Lino 4 Mino 10 Cino 1 Nino 1 Pino 7 Pino 5 Cino 3 Rino 7 Dino 8 Gino 10 Tino 9 Meni 10 Meni 5 Pino 5 Cino 4 Vino 7 Leo 9 Cino 1 Pino 2 Meo 4 Neo 7 Cino 2 Teo 5 Pino 8 Meni 2 Toni 4 Cino 2 Pino 3 Meni 8 Cino 6 Lino 3 Mino 8 Cino 2 Nino 1 Pino 7 Meo 7 Meo 5 Pino 6 Meo 6 Neo 6 Cino 6
Figura 2
Quando poi l'utente clicca sul pulsante "Calcola", il programma deve calcolare le medie di ogni studente e visualizzarle nell'area di testo centrale, e calcolare e visualizzare un istogramma "verticale" (non orizzontale) con il numero di occorrenze ricevuto per ogni singolo voto nell'area di testo a destra. Con i dati visti in precedenza, il risultato è quello illustrato in figura 3.
Figura 3
java NomeProgramma FileConVoti FileMedie FileIstogrammaSi noti che l'area di testo a destra usa un font monospaziato per la visualizzazione corretta dell'istogramma. Fate riferimento alla classe
java.awt.Font
. Anche il metodo java.lang.Integer.parseInt(String)
vi potrebbe essere molto utile…Il programma deve essere composto almeno delle seguenti classi:
GUI
(con eventuali classi interne per gli ascoltatori. Potete comunque implementare gli ascoltatori anche come classi "normali".)Istogramma
(con un metodotoString
)RegistroVoti
Progetto
4. Modalità
Il livello di complessità del programma prodotto può essere deciso liberamente dagli studenti; ovviamente, progetti più articolati e complessi otterranno una valutazione migliore di progetti più semplici, ma si consiglia di fare "poco e bene" piuttosto che "tanto e male": progetti semplici possono comunque ottenere il massimo punteggio, purché ben fatti (leggete bene le raccomandazioni!). La durata prevista del lavoro, considerando un gruppo di 3 persone che lavorano a tempo pieno, è di una settimana al massimo.Il progetto va realizzato in gruppi di 3 persone (a meno di accordi particolari con il docente, possibili solo in casi di reale e comprovata necessità), e tutti i componenti di un gruppo devono conoscere tutti i dettagli del progetto, come se l'avessero realizzato da soli.
Va preparata una breve relazione, preferibilmente (ma non necessariamente) in XHTML + CSS, sul lavoro effettuato. La relazione deve contenere:
- Una breve analisi del problema ed una descrizione intuitiva della vostra soluzione (meno di 2 pagine!).
- Le eventuali semplificazioni apportate rispetto alla versione completa richiesta (poche righe). Le semplificazioni vanno adeguatamente motivate. Ovviamente, le semplificazioni porteranno a valutazioni inferiori, e in alcuni casi (quando le semplificazioni sono eccessive) a progetti insufficienti.
- Eventuali aggiunte (cose in più non richieste; ad esempio uso di componenti dell'AWT non spiegati a lezione, uso delle Swing, aggiunta di funzionalità non richieste, aggiunta di menu, ecc. ecc.). Prima di aggiungere qualsiasi cosa, pensate a fare bene quello che è richiesto.
- Le motivazioni di tutte le scelte effettuate (ad esempio, perché avete apportato una semplificazione, perché avete deciso di usare certi componenti grafici e non altri, perché avete fatto certe scelte di progetto piuttosto che altre, e così via).
- Il listato completo del programma, con commenti (in javadoc, ma non solo), scritto in font non proporzionale (come questo: la "i" e la "m" occupano la stessa larghezza) e opportunamente incolonnato ("indentato").
- Una "prova di esecuzione" (di circa 3 pagine) che illustri il funzionamento del programma: una spiegazione con testo e figure del modo in cui il programma funziona (aspetto dell'interfaccia utente, esempio di esecuzione adeguatamente spiegato, ecc.)
- deve essere inviato dal proprio indirizzo email ufficiale su spes (messaggi da fiorellino88@gmail.com o simili non verranno presi in considerazione),
- deve avere come destinatari i tre indirizzi stefano.mizzaro, eddy.maddalena e marco.pavan tutti al mail server @uniud.it,
- deve avere in CC tutti i componenti del gruppo,
- deve avere come oggetto "Progetto per Programmazione [TWM]",
- deve contenere nel corpo i nomi dei componenti del progetto e,
- deve avere in allegato ("attach"), in un unico file compresso (ad es. zippato), la relazione, il codice sorgente (i file ".java") e il bytecode (i ".class").
NOTA Questo progetto è valido per chi intende sostenere l'appello del 6, 9 settembre 2016, e va quindi consegnato entro la scadenza. Non si accetteranno ritardi per nessun motivo. Per gli appelli successivi saranno predisposti altri progetti.
5. Raccomandazioni
Alla valutazione del progetto concorrono vari aspetti (rilevanza delle semplificazioni apportate, qualità della relazione, ecc.), ma è di prioritaria importanza la qualità del programma prodotto, soprattutto per quanto concerne le caratteristiche di leggibilità, modificabilità... Esempi di criteri per ottenere una valutazione positiva:- Il programma funziona?
- Resiste agli errori di interazione con l'utente?
- Si riescono ad apportare piccole modifiche nel comportamento senza riscrivere molto codice?
- L'interfaccia utente grafica è ridimensionabile? (ossia: non avete usato
setResizable(false)
)? E quindi la si può usare su schermi di varie dimensioni? - Avete usato i layout manager?
- Il codice è scritto correttamente, e avete seguito i principi della programmazione strutturata, dell'occultamento delle informazioni e dell'object oriented?
- Il codice è commentato? Ci sono abbastanza commenti? Non ci sono troppi commenti? I commenti non sono scontati? I tre tipi di commenti disponibili in Java sono stati usati in modo corretto?
- Avete rispettato le convenzioni sui nomi degli identificatori in Java?
- La relazione è chiara?
- Le variabili d'istanza e di classe non possono essere ridefinite come variabili locali?
- ecc. ecc.
- Non dichiarate una variabile se poi la usate una sola volta. Potete sicuramente scrivere un programma analogo senza quella variabile.
- Non copiare scriteriatamente il codice trovato su Internet: chiunque può scrivere su Internet e non è detto che sappia cosa sta facendo.
- Evitate al massimo
setPreferredSize
. Piuttosto pensate ad un layout che funzioni con qualsiasi dimensione sensata. - Evitate commenti del tipo
x = 2; //assegno 2 a x
: qualunque programmatore sa cosa vuol direx=2;
!! - Non usate
static
solo perché il compilatore dà errore. Usatelo solo se serve veramente. - Non usate
public
solo perché il compilatore dà errore. Usatelo solo se serve veramente.
Nessun commento:
Posta un commento