Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110

    Istanza che richiama altra istanza che richiama altra istanza

    Ho creato una classe Punteggio che permette di assegnare un valore numerico a qualcosa.
    Devo poi creare una classe ProgettoScienze per giudicare il progetto scientifico usando la classe Punteggio.

    Fino a questo punto bene o male ci sono. La domanda è: qualora volessi che questo progetto di scienze venisse valutato da più giudici, come faccio?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    qualora volessi che questo progetto di scienze venisse valutato da più giudici, come faccio?
    Sicuramente ci saranno più oggetti Punteggio in gioco (uno per giudice, si presuppone). Ma il punto è: come modelli un giudice? Con una classe apposita? (e in tal caso un oggetto Giudice ha, possiede al suo interno un Punteggio?) O semplicemente già solo l'input di un punteggio è concettualmente correlato ad un giudice?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Ogni progetto è costituito da:
    - nome progetto
    - nome studente
    - voto tecnica
    - voto creatività
    - voto completezza

    quindi per ogni voto creo un'istanza di "Punteggio" in modo da poter assegnare il punteggio.
    ora bisogna capire come far si che si possa fare per tot giudici.
    l'idea che mi era venuta era di fare una classe Punteggio, un'altra votazioneProgetto e poi la terza con main che racchiude un ciclo for che istanzia un votazioneProgetto per ogni giudice.
    Quel che non so fare è però cambiare il nome nella creazione di ogni istanza votazioneProgetto in base al giudice e come lasciare statico e uguale nomeprogetto e nomestudente tra le varie istanze.
    non so se mi son spiegato...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Ogni progetto è costituito da:
    - nome progetto
    - nome studente
    - voto tecnica
    - voto creatività
    - voto completezza
    Quindi hai una classe es. Progetto che "modella" un progetto e contiene queste informazioni?
    Se sì, non "partire in quarta". Ragiona prima su questo aspetto: in un oggetto Progetto vuoi mantenere le informazioni su quali giudici hanno emesso il voto? Oppure in Progetto per ciascuna tipologia di voto c'è solo un punteggio complessivo?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Quindi hai una classe es. Progetto che "modella" un progetto e contiene queste informazioni?
    Se sì, non "partire in quarta". Ragiona prima su questo aspetto: in un oggetto Progetto vuoi mantenere le informazioni su quali giudici hanno emesso il voto? Oppure in Progetto per ciascuna tipologia di voto c'è solo un punteggio complessivo?
    La struttura che avevo pensato era questa ma di base l'esercizio mi da carta bianca richiedendomi solo di utilizzare una classe Punteggio precedentemente creata che permetteva di assegnare un punteggio numerico di valutazione a qualcosa.

    Guarda, penso sia più facile la prima opzione ma, essendo che sto studiando per imparare il linguaggio, direi la seconda opzione e quindi di mantenere tutte le informazioni di ogni voto di ogni giudice in modo tale da avere poi uno "storico" completo.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    direi la seconda opzione e quindi di mantenere tutte le informazioni di ogni voto di ogni giudice in modo tale da avere poi uno "storico" completo.
    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Quote Originariamente inviata da andbin Visualizza il messaggio
    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.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Intanto sto procedendo a sviluppare la classe per un solo giudice ma ho problema nel creare l'oggetto Punteggio e relativa visibilità.
    L'ho creato nella classe assegnaVoti() ma come faccio a richiamare i vari campi nel modulo stampaProgetto()?


    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);
            System.out.println("Creatività:");
            creativita.setPunteggio();
            
            
            Punteggio valorescientifico = new Punteggio();
            valorescientifico.setPunteggioMax(30);
            System.out.println("Valore scientifico:");
            valorescientifico.setPunteggio();
            
            
            Punteggio completezza = new Punteggio();
            completezza.setPunteggioMax(15);
            System.out.println("Completezza:");
            completezza.setPunteggio();
            
            
            Punteggio tecnica = new Punteggio();
            tecnica.setPunteggioMax(15);
            System.out.println("Tecnica:");
            tecnica.setPunteggio();
            
            
            Punteggio chiarezza = new Punteggio();
            chiarezza.setPunteggioMax(10);
            System.out.println("Chiarezza:");
            chiarezza.setPunteggio();
            
        }
        
        public void stampaProgetto(){
            System.out.println("Nome progetto: " + nomeprogetto);
            System.out.println("ID progetto: " + idprogetto);
            System.out.println("Nome Studente: " + nomestudente);
            System.out.println("Voto Creatività: " + creativita.stampaPunteggio());
            
        }
    
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            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();
    
    
            ProgettoDemo giudiceuno = new ProgettoDemo();
            
            giudiceuno.assegnaVoti();
        }
    
    
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Qualche anima pia che mi può aiutare? Vi portereste avanti per i dolci della Befana!

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Qualche anima pia che mi può aiutare?
    Non avevo più risposto più che altro perché non sapevo bene che rispondere, nel senso che ci sarebbero ancora un bel po' di cose da valutare e stabilire.

    Fino ad ora ti sei preoccupato molto (troppo ...) dell'input/output verso l'utente. Questo viene DOPO. Va bene ma è più importante fare PRIMA le valutazioni a livello di "design" delle classi e su come modellare le cose.
    Una volta fatto questo, l'input viene più o meno abbastanza naturale.

    Se non ti va bene un Map<Giudice,Punteggio> lo capisco e non c'è problema. Ci sono sicuramente altre soluzioni. Ma bisogna quindi PRIMA valutare come affrontare quella classe che il testo indica con il nome ProgettoScienzaPunteggio. Che presumo sia solo una classe che modella 1 progetto e NON fa alcun input o output verso l'utente.

    Ci sono però cose dubbie o perlomeno da valutare/stabilire.

    Dice: ricevere numero di giudici
    1) Il numero va tenuto nello "stato" degli oggetti? Perché non lo dice quando parla degli attributi
    2) Il numero di giudici è uguale per tutte le tipologie di punteggi? Oppure no?

    Dice: ricevere tutti punteggi per un particolare progetto
    Come? Con più metodi? C'è liberta nella scelta del modo di assegnare i punteggi?

    Quando negli attributi parla dei punteggi dice "un punteggio". Quindi il punteggio è già cumulativo di tutti quelli dei giudici per quella tipologia di punteggio?

    Insomma, dovessi farlo io lo riterrei un po' vago, da dover sicuramente chiedere spiegazioni o fare ulteriori valutazioni.
    Ripeto: bisogna prima concentrarsi sull'aspetto logico, POI solo dopo su come fare l'input.

    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Vi portereste avanti per i dolci della Befana!
    Già mangiati troppi ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.