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.
- 1. Qual è la differenza tra un riferimento __weak e __block?
- 2. Qual è la differenza tra oggetto e riferimento?
- 3. Qual è la differenza tra Class.questo e questo in Java
- 4. Qual è la differenza tra = e: =
- 5. Qual è la differenza tra `##` e `hashCode`?
- 6. Qual è la differenza tra dict() e {}?
- 7. qual è la differenza tra:.! e: r !?
- 8. Qual è la differenza tra Verilog! e ~?
- 9. Qual è la differenza tra ("") e (null)
- 10. Qual è la differenza tra? : e ||
- 11. qual è la differenza tra [[], []] e [[]] * 2
- 12. Qual è la differenza tra $ e $$?
- 13. Qual è la differenza tra " " e ""?
- 14. Qual è la differenza tra {0} e ""?
- 15. Qual è la differenza tra {0} e +?
- 16. Qual è la differenza tra .ToString() e + ""
- 17. Qual è la differenza tra IDREF e IDREFS in XSD?
- 18. Qual è la differenza tra withTransaction e withSession in grails?
- 19. Qual è la differenza tra Width e ActualWidth in WPF?
- 20. Qual è la differenza tra strtok_r e strtok_s in C?
- 21. In MsBuild, qual è la differenza tra PropertyGroup e ItemGroup
- 22. Qual è la differenza tra l'interfaccia e @interface in java?
- 23. Qual è la differenza tra passaggio per riferimento e chiamata per riferimento?
- 24. Qual è la differenza tra riferimento debole breve e riferimento debole lungo?
- 25. Qual è la differenza tra "in fp" e "in fp.readlines()"?
- 26. angolare 2.0 - Qual è la differenza tra @ViewQuery e @query
- 27. Qual è la differenza tra printf ("% i") e printf ("% d")
- 28. Qual è la differenza tra filtro (| x |) e filtro (| & x |)?
- 29. Qual è la differenza tra copia e clonazione?
- 30. Qual è la differenza tra i pacchetti android.opengl e javax.microedition.khronos.opengles?
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