Bei der Erstellung von Referenzen zwischen ECore-Entitäten besteht die Möglichkeit, eine Referenz als "Containment" zu kennzeichnen. Kann mir jemand in einfachen Worten erklären, was ist der Unterschied zwischen einer einfachen Referenz und einem Containment? Die Definitionen und Erklärungen, die ich bisher gefunden habe, haben mir nicht geholfen.Was ist der Unterschied in ECore zwischen Containment und Referenz?
Antwort
Referenz: Eine Referenz ist eine Ebene "A kennt B" Beziehung. Getrennte Referenzen beeinflussen sich nicht gegenseitig. A kann wissen, B und B können C. Wenn du also A hast, kannst du zu C über B gehen. Wenn du den Verweis entfernst, existieren A, B und C noch, sie kennen sich einfach nicht mehr .
Contain: A Containment ist die Art der Beziehung "A B". Wird normalerweise für Listen verwendet, z. "A hat mehrere B". ECore/EMF kann dann atomare Befehle für solche Sammlungen ausführen, z. B. alle Objekte von einem Containment in ein anderes verschieben. Es kann auch Einschränkungen erzwingen, z. B. eine Mindestanzahl enthaltener Objekte oder eine maximale Anzahl enthaltener Objekte, oder sicherstellen, dass das enthaltene Objekt nicht in einer anderen Einschließung enthalten ist.
Beispiel:
Angenommen, Sie haben ein Objekt ShoppingCart
mit einer Referenz genannt Customer
und eine Eindämmung genannt genannt OrderedProducts
. Die OrderedProducts
hat eine Bezugnahme auf eine Product
.
Was sagt Ihnen dieses Modell?
- Sie können dem ShoppingCart einen Kunden zuweisen. Wenn Sie den Kunden aus dem ShoppingCart entfernen, ist das Kundenobjekt selbst noch vorhanden (z. B. in der Datenbank).
- Die OrderedProduct-Objekte benötigen ein ShoppingCart-Objekt. Wenn Sie ein Produkt aus dem ShoppingCart entfernen, wird es nicht mehr existieren.
- Jedes OrderedProduct hat einen Verweis auf ein vorhandenes Produkt in der Datenbank. Wenn Sie eine der OrderedProducts vom ShoppingCart entfernen, wird das Produkt in der Datenbank noch da sein - nur die Reihenfolge dieses Produkts für die jeweilige Kunde gegangen ist
Referenz: kann wie Verein in UML seine
Contain: ist die Zusammensetzung Beziehung von UML
auch kann dies in der EMF-Diagramm zu sehen ist, wenn Sie die containment
auf true gesetzt, dann ist die Linie eine gefüllte Seite haben, die Eindämmung/Zusammensetzung zeigt. Das habe ich beobachtet.
Vielen Dank. Ich denke, ein echtes Beispiel wie Ihr ShoppingCart war alles, was ich brauchte, um den Schalter in meinem Kopf zu drehen. – Kosi2801
Analog zu "Assoziation" und "Zusammensetzung" in UML-Klassendiagrammen. – mike