[UML] Differenze tra questi tipi di associazioni?

di il
12 risposte

[UML] Differenze tra questi tipi di associazioni?

Salve, ho alcuni dubbi sulle differenze relative alle associazione del secondo e terzo caso.

Come faccio a capire quando utilizzare il secondo caso e quando la tabella ponte del terzo caso? 

In giro per web ho letto che nel secondo caso non si permette la ripetibilità mentre nel terzo si, cosa si intende con questo? 

Se convertiamo questa situazione in codice Java, in entrambi i casi avremo una classe Purchase con le istanze di User e Product?

Vi ringrazio in anticipo.

12 Risposte

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Uhm… il secondo lo hai capito?

  • Re: [UML] Differenze tra questi tipi di associazioni?

    12/02/2024 - sihsandrea ha scritto:


    Uhm… il secondo lo hai capito?

    Nel secondo caso definiamo degli attributi per l'associazione giusto?
    Ad esempio in purchase potrebbe esserci come attributo quantità, che ci permette di definire ordini che contengono più quantità dello stesso prodotto. Ma non potremmo fare la stessa cosa anche nel terzo caso?

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Non so dove hai preso l'immagine ma credo che siano step per spiegare una relazione molti a molti.

    Nel primo caso abbiamo *…* (Molti a molti)

    Ma non è possibile gestirla in quel modo, quindi interviene una tabella intermedia.

    Nella seconda figura si vede la tabella che deve permettere la relazione molti a molti. (Nota gli asterischi)

    Nel terzo caso si in escano le relazioni 1 a m e m a 1

    Significa che la tabella A può relazionarsi 1 a m con la tabella B e la tabella B può relazionarsi 1 a m con la tabella A.

    Nel caso di 1 a m serelazioniamo la tabella A alla B abbiamo un record della tabella a a fronte di n record della tabella B. Se invertiamo le tabelle otteniamo una relazione 1 a 1 cioè per un record della tabella B abbiamo un solo record della tabella A.

    La domanda è: non hai capito la differenza tra relazioni 1 a m e m a m on non hai capito quando utilizzare l'una o l'altra relazione?

  • Re: [UML] Differenze tra questi tipi di associazioni?

    13/02/2024 - sihsandrea ha scritto:


    Non so dove hai preso l'immagine ma credo che siano step per spiegare una relazione molti a molti.

    Nel primo caso abbiamo *…* (Molti a molti)

    Ma non è possibile gestirla in quel modo, quindi interviene una tabella intermedia.

    Nella seconda figura si vede la tabella che deve permettere la relazione molti a molti. (Nota gli asterischi)

    Nel terzo caso si in escano le relazioni 1 a m e m a 1

    Significa che la tabella A può relazionarsi 1 a m con la tabella B e la tabella B può relazionarsi 1 a m con la tabella A.

    Nel caso di 1 a m serelazioniamo la tabella A alla B abbiamo un record della tabella a a fronte di n record della tabella B. Se invertiamo le tabelle otteniamo una relazione 1 a 1 cioè per un record della tabella B abbiamo un solo record della tabella A.

    La domanda è: non hai capito la differenza tra relazioni 1 a m e m a m on non hai capito quando utilizzare l'una o l'altra relazione?

    Grazie per la risposta, non ho capito quando utilizzare l'una o l'altra relazione

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Una relazione 1 a molti

    Un cliente ha la sua fattura ed ha molte fatture.

    Non esiste che pippo Dario abbiano la stessa fattura mario avrà la fattura 1 e dario la fattura 2 anche se contengono gli stessi articoli.

    La relazione tra fatture e prodotti è di molti a molti perché la fattura 1 contiene spazzole e scope ma le scope possono appartenere anche alla fattura nr4 di giovanni.

    In pratica una relazione 1 a molti da tabella a verso tabella b e una relazione.1 a molti da tabella b verso tabella a

    Per fare ciò serve una terza tabella che ha come campi una chiave composta tra la chiave esterna della tabella a e la chiave esterna della tabella b.

    Ma la tua perplessità è su quando operare l'una o l'altra relazione supponendo che sai come creare la 1 a m e la m a m.

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Resta il fatto che l'immagine spiega perché interviene la terza tabella (quella al centro). 

    Non sta esponendo tre tipi di relazioni.

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Probabilmente ho posto io male la domanda, la foto l'ho trovata su internet ma avrei dovuto ritagliare il primo caso. In diversi diagrammi ho trovato sia l'utilizzo del secondo caso e sia l'utilizzo del terzo caso per rappresentare una relazione del tipo molti-a-molti tra due classi.

    Quindi mi chiedevo se entrambi i modi fossero corretti per rappresentare un'associazione di questo genere o se ci fossero delle differenze su quando utilizzare una o l'altra.

    Ad esempio ho letto che l'association class (secondo caso) non è una vera e propria classe ma è un modo per definire degli attributi di un'associazione tra due classi e che non è possibile associarla ad altre classi. 

    Inoltre nel video dell'immagine sotto, il professore parla del fatto che l'association class non può contenere una ripetizione, ovvero dice che se vogliamo impedire che una persona faccia lo stesso vaccino allora utilizziamo l'association class, mentre se vogliamo permettere ciò è più corretto utilizzare la classe intermedia (terzo caso) e decidiamo di utilizzare quest'ultima soprattutto se poi vogliamo associarla anche al medico che ha fatto la vaccinazione.

    Vorrei comprendere meglio questo concetto, grazie ancora per le risposte precdenti.
    (nel frame video successivo poi il professore ha cancellato la classe intermedia e tenuto la association class)

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Questo mi sembra più lineare…

    https://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Association+Class/

    Vedo se ne trovo altri.

    È lungo da spiegare. 

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Vedi anche questo…

    https://www.cs.sjsu.edu/~pearce/modules/lectures/uml/class/AssociationClasses.htm

    https://www.javatpoint.com/uml-association

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Grazie per i link li ho letti tutti e il primo è stato particolarmente utile, un'ultima cosa ancora non mi è chiara, il primo link dice che l'association 
    class non è adatta per modellare il caso in cui il datore di lavoro lasci e poi ritorni nuovamente nella stessa azienda perché appunto l'associazione tra azienda e persona deve essere unica o meglio può esserci una sola istanza della classe di associazione tra due oggetti partecipanti.
    Quello che mi chiedo è, se nell'association class è presente un attributo di tipo periodo:Date, se il datore di lavoro ritorna dopo tempo nella stessa azienda il record della tabella non sarà in ogni caso diverso? Perché appunto la data di ritorno è diversa? 

  • Re: [UML] Differenze tra questi tipi di associazioni?

    14/02/2024 - lucacar001 ha scritto:


    il primo link dice che l'association 
    class non è adatta per modellare il caso in cui il datore di lavoro lasci e poi ritorni nuovamente nella stessa azienda perché appunto l'associazione tra azienda e persona deve essere unica o meglio può esserci una sola istanza della classe di associazione tra due oggetti partecipanti.

    Sono spiegazioni su come fare un'associazione corretta.

    Non possono esserci due assunzioni contemporanee per la stessa azienda (in quel caso avresti un'associazione sbagliata perchè progettata per essere unica).

    Non puoi creare un'associazione unica tra dipendente e azienda perche' il dipendente potrebbe dimettersi o essere licenziato e poi riassunto.

    Come nella prima risposta, l'immagine mostra degli step per identificare il tipo di associazione corretto.

    in soldoni (molto soldoni):

    se filippo ha soltanto un lavoro e non puo' avere altri lavori e/o non puo' essere assunto piu' di una volta, allora vale la prima (1 a 1 ossia un oggetto di a va associato ad un solo oggetto di b).

    se filippo puo' fare due part-time (uso la stessa logica) allora per a posso associare n oggetti di b (cioe' lavora 4 ore da pippo e 4 ore da pluto).

    Per la terza mi prendo una licenza poetica. se filippo lavora per pippo (come programmatore) e pippo lavora per filippo (come amministratore) allora ho il terzo caso cioe' filippo e' sia dipendente che datore di lavoro di pippo e viceversa.

    in questo caso avremmo l'associazione filippo-pluto ma pluto-filippo non potrebbe esistere perchè sono gia' associati. allora interviene un'altra classe che mi permette di fare:

    filippo-a-pluto e pluto-b-filippo dove la terza classe ha come associazione a-b dive a si associa a filippo e b a pluto.

    14/02/2024 - lucacar001 ha scritto:


    Quello che mi chiedo è, se nell'association class è presente un attributo di tipo periodo:Date, se il datore di lavoro ritorna dopo tempo nella stessa azienda il record della tabella non sarà in ogni caso diverso? Perché appunto la data di ritorno è diversa?

    la terza classe e' appunto “periodo”. (cosa che non e' presente nel primo caso) quindi non e' associato direttamente ma tramite “periodo”.

    se ho solo dipendente e ditta, posso dire che filippo lavora o ha lavorato per pluto e basta.

    se inserisco la classe tempo (quindi persona, azienda e periodo) posso dire che filippo ha lavorato dal al presso pippo, dal al presso pippo e dal al presso pippo tre associazioni uniche (due costanti “filippo e pippo” ma una diversa “dal al”. e ti riporta nella seconda associazione della prima immagine.

    se anche pippo lavora o ha lavorato per filippo ti ritrovi nel terzo caso (sempre con molta molta fantasia).

    spero di non aver confuso le idee…

  • Re: [UML] Differenze tra questi tipi di associazioni?

    Salve, ora è tutto più chiaro, ti ringrazio per il tempo che hai dedicato alla mia domanda, ho anche trovato questa discussione: https://stackoverflow.com/questions/48328325/is-my-lecturer-correct-or-incorrect-about-association-classes

    In cui si espone proprio il mio quesito.

Devi accedere o registrarti per scrivere nel forum
12 risposte