| |
Angenommene Spezifikation UML Ocl 2,0 31 Wie mit dem vorhergehenden Beispiel können wir eine Ansammlung Rückholwerte von einer Ansammlung von OclMessages auch zugänglich machen. Wenn message.hasReturned() ist, dann falsch message.result() ist unbestimmt. 7,7,3 Ein Beispiel Dieser Abschnitt zeigt ein Beispiel des Verwendens des OCL-Anzeigenausdruckes. Das Beispiel und das Problem Nehmen Sie an, daß wir Bau ein Bestandteil haben, der jede mögliche Gestalt des Einganges annimmt und sie in Abfall umwandelt (aka verschlüsselt ihn). Teil GarbageCan benutzt eine Schnittstelle UsefulInformationProvider welches von den Benutzern von eingeführt werden muß Bestandteil zum Bereitstellen des Einganges. Das Betriebs- getNextPieceOfGarbage von GarbageCan Dose dann wird benutzt, um zurückzuholen verstümmelte Daten. Tabelle 4 zeigt das Kategoriendiagramm des Bestandteils. Merken Sie, daß keine der Betriebe als Fragen gekennzeichnet werden. Tabelle 4 - Beispiel OclMessage Wenn wir den Bestandteil verkaufen, möchten wir nicht das Quellenprogramm geben unseren Kunden. Jedoch möchten wir spezifizieren Verhalten des Bestandteils so genau, wie möglich. So z.B. möchten wir spezifizieren, was getNextPieceOfGarbage . Merken Sie, daß wir nicht schreiben können: Kontext GarbageCan::getNextPieceOfGarbage(): Ganzzahl Pfosten : Resultat = (datasource.getNextPieceOfData() * 7683425 + 10000)/20 + 3 weil UsefulInformationProvider::getNextPieceOfData() nicht ist eine Frage (z.B., sie kann irgendeinen internen Zeiger erhöhen damit sie das folgende Stück von Daten am folgenden zurückbringen kann, benennen Sie). Noch möchten wir sagen etwas über, wie der Abfall ist abgeleitet von den ursprünglichen Daten. Die Lösung , um dieses Problem zu lösen, können wir ein OclMessage verwenden, um den Anruf zum getNextPieceOfData darzustellen . Dieses erlaubt uns, auf zu überprüfen das Resultat. Merken Sie, daß wir verlangen müssen, daß der Anruf zurückgegangen hat, bevor er das Resultat zugänglich machte: Kontext GarbageCan::getNextPieceOfGarbage(): Ganzzahl Pfosten : gelassen Anzeige: OclMessage = datasource^^getNextPieceOfData()->first() in message.hasReturned() und Resultat = (message.result() * 7683425 + 10000)/20 + 3 UsefulInformationProvider getNextPieceOfData(): Ganzzahl < < Schnittstelle > > GarbageCan setUsefulInformationProvider(uip: UsefulInformationProvider) getNextPieceOfGarbage(): Ganzzahl # datasource 0,,1 |  |
|
| |
|
|