| |
Angenommene Spezifikation UML Ocl 2,0 27 Ansammlungs->reject(Boolesch-ausdruck) Als Beispiel spezifizieren Sie daß die Ansammlung aller Angestellten, die sind nicht verbunden leer: Kontext Firma inv : self.employee->reject(isMarried)->isEmpty() Der Ausschußbetrieb ist- in OCL für Bequemlichkeit vorhanden, weil jeder Ausschuß als auserwähltes mit erneut dargestellt werden kann verneint worden Ausdruck. Folglich sind die folgenden zwei Ausdrücke identisch: Ansammlung->reject(V: Art|Boolesch-Ausdruck-mit-v) Ansammlung->select(V: Art| nicht (Boolesch-Ausdruck-mit-v)) 7,6,2 Sammeln Sie Betrieb Wie im vorhergehenden Abschnitt gezeigt, weisen die auserwählten und Resultat der Betriebe immer in einer Vor-Ansammlung der Vorlage zurück Ansammlung. Wenn wir eine Ansammlung spezifizieren möchten, die von irgendeiner anderer Ansammlung abgeleitet wird, aber die enthält unterschiedliche Gegenstände von der ursprünglichen Ansammlung (d.h., es ist nicht eine Vor-Ansammlung), können wir sammeln verwenden Betrieb. Sammeln Betrieb verwendet die gleiche Syntax wie das auserwählt und weist zurück und wird als ein von geschrieben: Ansammlung->collect(V: Art|Ausdruck-mit-v) Ansammlung->collect(V|Ausdruck-mit-v) Ansammlungs->collect(ausdruck) Der Wert des Ausschußbetriebes ist- die Ansammlung der Resultate aller Auswertungen von Ausdruck-mit-v . Ein Beispiel: spezifizieren Sie die Ansammlung von Geburtstagen für alle Angestellten im Kontext einer Firma. Dieses kann in geschrieben werden Kontext eines Firmagegenstandes als ein von: self.employee->collect(geburtstag) self.employee->collect(person|person.birthDate) self.employee->collect(person: Person|person.birthDate) Eine wichtige Ausgabe hier ist, daß die resultierende Ansammlung nicht ein Satz ist, aber ein Beutel. Wenn mehr als ein Angestellter hat der gleiche Wert für Geburtstag ist dieser Wert ein Element des resultierenden Beutels mehr als einmal. Der Beutel, resultierend aus sammeln Sie Betrieb hat immer die gleiche Größe wie die ursprüngliche Ansammlung. Es ist möglich, einen Satz vom Beutel zu bilden, indem man die Werteigenschaft auf dem Beutel verwendet. Die folgenden Ausdrucksresultate in Satz von unterschiedlichem Geburtstage von allen Angestellten einer Firma: self.employee->collect(geburtstag)->asSet() Stenographie für sammeln Weil Navigation durch viele Gegenstände sehr allgemein ist, gibt es eine Stenographiedarstellung für sammeln, das bildet Ocl-Ausdrücke lesbarer. Anstelle von self.employee->collect(birthdate) wir können auch schreiben: self.employee.birthdate Im allgemeinen wenn wir eine Eigenschaft an einer Ansammlung Gegenständen anwenden, dann wird es automatisch als sammeln gedeutet rüber die Mitglieder der Ansammlung mit der spezifizierten Eigenschaft. Für irgendein propertyname das wird als Eigenschaft auf den Gegenständen in einer Ansammlung, die folgenden zwei Ausdrücke sind definiert identisch: |  |
|
| |
|
|