
Originariamente inviata da
andbin
Avendo una classe Giudice i cui oggetti rappresentano i giudici, in Progetto si potrebbe tenere delle "mappe" del tipo:
private Map<Giudice,Punteggio> votiTecnica;
// ecc....
Pertanto, concettualmente, ogni progetto ha N punteggi per la tecnica, ciascuno associato ad un giudice. E così per le altre votazioni.
P.S. Se la mappa concreta utilizzata è HashMap, Giudice come "chiave" richiede la corretta implementazione di equals/hashCode.
Non so proprio utilizzare queste mappe... credo sia una cosa più avanzata rispetto a quel che sto facendo quindi proviamo a ritornare sul caso base.
L'esercizio mi chiede:
Si consideri la classe ProgettoScienzaPunteggio per giudicare un progetto scientifico. Questa classe userà la classe Punteggio descritta in precedenza. Gli attributi della nuova classe sono:
- nome del progetto;
- stringa identificativa del progetto;
- nome persona;
- un punteggio per abilità creativa (max 30)
- un punteggio per valore scientifico (max 30)
- un punteggio per completezza (max 30)
- un punteggio per chiarezza 15 (max 10)
La classe avrà metodi:
- ricevere numero di giudici
- ricevere tutti punteggi per un particolare progetto
- restituire il totale dei punteggi per un particolare progetto
allora la classe Punteggio è questa:
codice:
import java.util.Scanner;
public class Punteggio {
private String descrizione;
private int punteggiomax;
private int punteggio;
public void setPunteggio(){
Scanner tastiera = new Scanner(System.in);
System.out.println("Inserisci punteggio. Max "+ punteggiomax);
punteggio = tastiera.nextInt();
if (punteggio > punteggiomax){
System.out.println("Errore! Il punteggio non può superare quello massimo!");
punteggio = 0;
}
}
public void setPunteggioMax(int num){
punteggiomax = num;
}
public int getPunteggio(){
return punteggio;
}
public void stampaPunteggio(){
System.out.println("Il punteggio è: " + punteggio);
}
}
mentre la classe Progetto che ho pensato è questa:
codice:
import java.util.Scanner;
public class ProgettoDemo {
private static String nomeprogetto;
private static String idprogetto;
private static String nomestudente;
public void assegnaVoti(){
Scanner tastiera = new Scanner(System.in);
Punteggio creativita = new Punteggio();
creativita.setPunteggioMax(30);
creativita.setPunteggio();
Punteggio valorescientifico = new Punteggio();
valorescientifico.setPunteggioMax(30);
valorescientifico.setPunteggio();
Punteggio completezza = new Punteggio();
completezza.setPunteggioMax(15);
completezza.setPunteggio();
Punteggio tecnica = new Punteggio();
tecnica.setPunteggioMax(15);
tecnica.setPunteggio();
Punteggio chiarezza = new Punteggio();
chiarezza.setPunteggioMax(10);
chiarezza.setPunteggio();
}
public void datiProgetto(){
Scanner tastiera = new Scanner(System.in);
System.out.println("Inserisci nome progetto:");
nomeprogetto = tastiera.next();
System.out.println("Inserisci id progetto:");
idprogetto = tastiera.next();
System.out.println("Inserisci nome studente:");
nomestudente = tastiera.next();
}
}
Non so se invece del metodo datiProgetto() conviene fare una classe a parte per gestire anche l'aspetto dei giudici considerato che nomeprogetto, idprogetto e nomestudente dovrebbero non variare tra le varie istanze di voto.