Associazione molti a molti

di il
6 risposte

Associazione molti a molti

Salve a tutti,
da poco mi sono avvicinata al mondo della programmazione e sto imparando ad utilizzare il linguaggio Java.
Nella realizzazione di un programma mi sono imbattuta nel seguente problema: due classi, Classe1 e Classe2, sono in associazione molti a molti. Per implementare tale associazione dovrei introdurre una nuova classe avente per attributi ArrayList<Classe1> p e ArrayList<Classe2> t oppure dovrei semplicemente introdurre in Classe1 un attributo ArrayList<Classe2>p e in Classe2 un attributo ArrayList<Classe1>t ? Ci sono soluzioni migliori?

Grazie per il vostro aiuto!

6 Risposte

  • Re: Associazione molti a molti

    Due domande:

    1) Che vuoi dire per "associazione molti a molti"?
    2)Per "attributi" intendi "variabili di istanza"( anche chiamate "campi di esemplare")?
  • Re: Associazione molti a molti

    Buongiorno,

    grazie per avermi risposto.

    Con il termine associazione indico una relazione tra classi. Per associazione molti a molti (many to many) tra due classi indico che una istanza di una classe è associata a molte istanze dell'altra classe e viceversa. Ad esempio: se avessi una classe Viaggio e una classe Persona, ad una istanza della classe Persona corrispondono molte istanze della classe Viaggio , ovvero una persona può compiere molti viaggi, e ad una istanza della classe Viaggio corrisponde una istanza della classe Persona, ovvero un viaggio può essere effettuato da molte persone.

    Si, con il termine attributo intendo una variabile di istanza.
  • Re: Associazione molti a molti

    1)introdurre una nuova classe avente per attributi ArrayList<Classe1> p e ArrayList<Classe2> t

    2)introdurre in Classe1 un attributo ArrayList<Classe2>p e in Classe2 un attributo ArrayList<Classe1>t

    3)soluzioni migliori?

    Allora, introdurre una nuova classe con variabili di istanza ArrayList<Class1> p, ArrayList<Class2> t
    mi sembra un soluzione migliore della 2.
    Perchè la seconda introduce più dipendenza e se un giorno modificherai il programma (aggiornandolo ad esempio), sarà più complicato farlo se scegli la soluzione 2 (cioè quella di introdurre in Classe1 un attributo ArrayList<Classe2>p e in Classe2 un attributo ArrayList<Classe1>t).
    Questa scelta è anche quella verso la quale mi ha indirizzato l'università e i libri che ho letto.

    Poi ci sono soluzioni migliori?
    Credo che dipenda da programma a programma.. mi spiego meglio, un'altra soluzione che mi viene in mente è di seguire il modello dell' ADT (Abstract Data Types) cioè riorganizzare il tutto in interfacce, classi astratte e infine classi concrete. Ma siccome sono due classi, non conviene se invece è un programma che andrai a sviluppare nel tempo, questa è un opzione da considerare.
    A conti fatti, ti consiglio la soluzione 1)
    Per qualsiasi dubbio o critica, posta pure!
    ciao
  • Re: Associazione molti a molti

    Ciao

    si, infatti implementando la seconda soluzione ho riscontrato una dipendenza circolare tra le classi che non riesco a risolvere.

    Anche a me la prima soluzione sembra migliore.
    Per ricapitolare, dovrei creare una nuova classe, che chiamerò Classe3, in cui introdurre un attributo ArrayList<Classe1>p e uno ArrayList<Classe2>t, ma nella classe1 e nella classe2 dovrei inserire un riferimento alla classe3? Nel caso affermativo, non dovrei avere una dipendenza circolare?

    Grazie!
  • Re: Associazione molti a molti

    Nella classe 3 metterai attributi delle classi 1 e 2.
    Nelle classi 1 e 2 non metterai attributi della 3.
    In questo modo, le classi 1 e 2 sono indipendenti, possono essere gestite più facilmente e riusate in maniera efficiente
  • Re: Associazione molti a molti

    Proverò così!! Grazie!!
    Ciao
Devi accedere o registrarti per scrivere nel forum
6 risposte