Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Accoppiamento classi

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33

    Accoppiamento classi

    Ciao a tutti!
    Devo realizzare un programma che gestisce i libretti universitari.
    Un libretto è visto come una successione di esami,in più è intestato allo studente.
    L'esame (record)ha 4 campi di esemplare,mentre lo studente ha 3 campi.

    Ho creato quindi 3 classi,Studente,Esame e infine Libretto.
    Quando però creo librfetto,non so come fare interagire lo studente associandogli gli esami.Come posso fare secondo voi?Non è melgio eliminare la classe studente e includerla nel file LIbretto.java ?

    Cmq ora posto il mio file Libretto:
    codice:
    import java.util.ArrayList;
    public class Libretto {
    
    	//COSTRUTTORE
    	public Libretto(){
    		esami = new ArrayList<Esame>();
    	}
    	
    	
    	//METODI
    	public void aggiungi(String titolo,String data,int voto,int cfu){
    		Esame es = new Esame(titolo,data,voto,cfu);
    		esami.add(es);
    		
    	}
    	
    	//CAMPI DI ESEMPLARE
    	private ArrayList<Esame> esami;
    	private Studente studente;
    	
    	
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Accoppiamento classi

    Originariamente inviato da z0rk
    Quando però creo librfetto,non so come fare interagire lo studente associandogli gli esami.
    Metti in Libretto il costruttore in modo che riceva un Studente che poi assegna al campo 'studente'.
    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
    Jan 2008
    Messaggi
    33

    Re: Re: Accoppiamento classi

    Originariamente inviato da andbin
    Metti in Libretto il costruttore in modo che riceva un Studente che poi assegna al campo 'studente'.
    GRazie per l'aiuto.

    IL problema è che la classe studente per ora è questa:
    codice:
    public class Studente {
    	
    	//COSTRUTTORE
    	public Studente(String nome,String cognome,int matricola){
    		this.nome=nome;
    		this.cognome=cognome;
    		this.matricola=matricola;
    	}
    
    	
    	//CAMPI DI ESEMPLARE
    	private String nome;
    	private String cognome;
    	private int matricola;
    }
    e se assegno studente come mi hai consigliato eclipse mi da errore.
    codice:
    public Libretto(){
    		esami = new ArrayList<Esame>();
    		studente = new Studente(nome,cognome,matricola);
    	}
    Potrei usare la classe scanner o mettere io stessi i valori giusti,ma se faccio ciò mischio la classe Scanner con la classe Libretto.Sarebbe come mettere System.out che provocherebbe l'effetto collaterale.

    Come posso risolvere?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Accoppiamento classi

    Originariamente inviato da z0rk
    Come posso risolvere?
    No, forse non hai capito. Il costruttore di Libretto dovrebbe avere un parametro Studente che assegna direttamente al campo interno.
    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
    Jan 2008
    Messaggi
    33
    Quindi verrebbe cosi:
    codice:
    	//COSTRUTTORE
    	public Libretto(Studente studente){
    		esami = new ArrayList<Esame>();
    		this.studente = studente;
    	}
    IN questo modo è sicuro che posso far interagire il record esami,con l'oggetto studente.
    In questo caso non è saggio rendere studente un record oppure è indifferente?Perchè se lo faccio diventare record a Studente,non avrebbe senso dato che poi devo fare un ArrayList.O non è necessario?

    Lo dico perchè siccome sto all'inizio del programma,questa è una fase piuttosto delicata e se sbaglio ora potrei ravvedermi dell'errore troppo tardi... :berto:

  6. #6
    In questo caso non è saggio rendere studente un record oppure è indifferente?Perchè se lo faccio diventare record a Studente,non avrebbe senso dato che poi devo fare un ArrayList.O non è necessario?
    Non capisco cosa intendi, puoi spiegarti meglio? Grazie ...


    Saluti

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33
    Originariamente inviato da Ciccio17
    Non capisco cosa intendi, puoi spiegarti meglio? Grazie ...


    Saluti
    Effettivamente ciò che ho scritto è delirante...me ne rendo conto.

    In realtà il Libretto è formato intrinsecamente da 2 record:
    -esame
    -studente

    Con la differenza che possiamo avere un solo record studente,e tanti record esame

  8. #8
    Ok, e qual'è il problema?

    Nella classe Libretto avrai due variabili d'istanza, una sarà un oggetto e una un "multi-oggetto" ossia una collezione(ad esempio una Lista o un Set).

    Avrai una cosa di questo tipo

    codice:
    class Libretto {
    
    private Studente stud;
    private List<Esame> listaEsami;
    
       public Libretto(Studente s) {
       this.stud=s;
       listaEsami = new LinkedList(); //inizializzi la lista di esami con una lista vuota
    }
    
    //altri metodi
    }
    Ti è chiaro ora?Hai altri dubbi?


    Ciao ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33
    In effetti il problema principale,è capire se creare o no la classe Studente,anche se è in ogni caso il problema si risolve.
    UN libretto è fatto da una serie id esami,e fin qui ci siamo avremmo come variabile d'istanza la raccolta di esami;ma è anche formato dall'oggetto studente.
    Però io ho deciso di NON creare la classe studente perchè inutile.
    Il concetto di studente è inutile,in quanto è qualcosa presente solo nella realtà,ma se applichiamo una astrazione questo concetto scompare,perchè le 3 caratteristiche dello studente sono perfettamente intrinseche all'oggetto LIbretto(dato che sono campi unici e obbligatori).
    Facendo cosi inoltre si riduce il l'accoppiamento tra le classi.

    Vorrei sapere se il mio ragionamento è corretto,grazie!

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.