20

Quando si creano riferimenti tra entità ECore esiste la possibilità di contrassegnare un riferimento come "contenimento". Qualcuno può spiegarmi con parole facili qual è la differenza tra un semplice riferimento e un contenimento? Le definizioni e le spiegazioni che ho trovato finora non hanno fatto il trucco per me.Qual è la differenza in ECore tra contenimento e riferimento?

risposta

42

Riferimento: Un riferimento è un semplice "A knows B" relazione. I riferimenti separati non si influenzano a vicenda. A può sapere che B e B possono sapere C. Quindi, se hai A, puoi andare a C su B. Se rimuovi il riferimento, A, B e C continueranno a esistere, semplicemente non si conoscono più .

contenimento: A contenimento è il "A ha B" tipo di relazione. Solitamente utilizzato per elenchi, ad es. "A ha più B". ECore/EMF può quindi eseguire comandi atomici su tali raccolte, come spostare tutti gli oggetti da un contenimento all'altro. Può anche applicare vincoli, come una quantità minima di oggetti contenuti o una quantità massima di oggetti contenuti, o assicurare che l'oggetto contenuto non sia contenuto in nessun altro contenimento.

Esempio:

Si supponga di avere un oggetto chiamato ShoppingCart con un riferimento chiamato Customer e un contenimento chiamato OrderedProducts. OrderedProducts ha un riferimento a Product.

Cosa ti dice questo modello?

  • È possibile assegnare un cliente alla ShoppingCart. Se si rimuove il Cliente dalla ShoppingCart, l'oggetto Cliente stesso continuerà a esistere (ad es. Nel database)
  • Gli oggetti OrderedProduct richiedono l'esistenza di una ShoppingCart. Se ne rimuovi uno dalla ShoppingCart, cesserà di esistere.
  • Ogni prodotto Ordered ha un riferimento a un prodotto esistente nel database. Se si rimuove uno dei OrderedProducts dal ShoppingCart, il Prodotto nel database sarà ancora lì - solo l'ordine di tale prodotto per quel cliente specifico è andato
+0

Grazie mille. Penso che un vero esempio come il tuo ShoppingCart era tutto ciò di cui avevo bisogno per capovolgere l'interruttore nel mio cervello. – Kosi2801

+0

Analogo a "associazione" e "composizione" nei diagrammi delle classi UML. – mike

5

Riferimento: può essere come associazione in UML

contenimento: è il rapporto di composizione da UML

anche questo può essere visto nel diagramma EMF, se si imposta il containment true, la linea avrà un lato riempito, mostrando il contenimento/composizione. Questo è ciò che ho osservato.

Problemi correlati