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
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
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.
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
Analogo a "associazione" e "composizione" nei diagrammi delle classi UML. – mike