2009-05-23 12 views
6

Ich bin auf einige Fragen über OCL-Ausdrücke gestoßen. Nachdem ich einige Uni-Folien gelesen und gegoogelt habe, kann ich es immer noch nicht richtig verstehen.Kennt jemand eine gute Object Constraint Language (OCL) -Tutorial?

Ich frage mich, ob jemand von euch wissen, keine gute Ressourcen, die ich dieses Zeug verstehen lesen sollte.


Constraints die mich stören:

  1. Jeder in der Abteilung arbeiten hat den gleichen Manager.
  2. niemand im Unternehmen ist der Manager ihn/sie selbst.
  3. niemand im Unternehmen verdient mehr als sein Manager.

Für die erste, die ich habe:

Kontext Abteilung

inv self.stuff -> forAll (Manager = self.staff.manager)

2. ein:

Kontext Firma

inv self.employee -> select (Manager = manager.manager) -> isEmpty()

3. ein:

Kontext Firma

inv self.employee -> select (Gehalt> manager.salary) -> isEmpty()

aber ich glaube nicht, dass diese richtig sind. Was ich am meisten unsicher bin, ist, ob in Beispiel 2 und 3 tatsächlich einzelne Mitarbeiter mit ihrem tatsächlichen Manager-/Managergehalt verglichen werden.

Antwort

2

Eine schnelle Lösung für die Einschränkungen:

Kontext Abteilung inv: self.staff -> forAll (s1, s2 | s1.manager = s2.manager)

Kontext Firma inv: Selbst. mitarbeiter-> forAll (e | e.Manager <> e)

Kontext Firma inv: self.employee-> forAll (e | e.salary < = e.manager.salary)

Btw, ich sehe nicht wirklich die Notwendigkeit, die Firmenklasse (wie viele Objekte vom Typ Firma haben Sie im System?). Wenn die Bedingungen zwei und drei für alle Unternehmen gelten, können sie auf diese Weise mit Person als Kontext ausgedrückt werden (zB mit Nummer 2): Kontext Person inv: self.manager <> self)

Wir können auch Prüfungen hinzufügen ob der Arbeitnehmer einen Manager hat, bevor der Vergleich tun

+0

Es ist kein tatsächliches System. Es ist eine der Revisionsfragen für die Prüfung :) Ich bin selbst umhergewandert, warum es eine Unternehmensklasse gibt ... Vielen Dank für Ihre Hilfe. – Artur

4

Für Anfänger würde ich dieses Buch empfehlen: Die Object Constraint Language: Ihre Modelle bereit für MDA von Jos Warmer und Anneke Kleppe (Jos war einer der Hauptschöpfer der OCL).

Es gibt auch diese kostenlos OCL tutorial (pdf + Dias)

ich auch wie viel die offizielle Spezifikation, die Sie bereits gefunden (speziell das Kapitel eine informelle Beschreibung der Sprache anbieten).

+0

ich die Frage bearbeitet und hinzugefügt Zwänge ich bin nicht sicher. – Artur

3

der Link zur PDF-Datei von @Artur geschrieben hat sich geändert, hier neue Verbindung http://www.omg.org/spec/OCL/2.0/PDF/

+0

Danke, dass Sie mich wissen lassen. Ich habe den Link in meinem Post aktualisiert. +1 für dich;) – Artur

Verwandte Themen