2009-05-23 13 views
6

Natknąłem się na kilka pytań dotyczących wyrażeń OCL. Po przeczytaniu kilku uniwersyteckich slajdów i googlowaniu nadal nie mogę tego właściwie zrozumieć.Czy ktoś zna dobry samouczek języka Object Constraint Language (OCL)?

Zastanawiam się, czy ktokolwiek z was zna jakieś dobre zasoby, które powinienem przeczytać, aby zrozumieć te rzeczy.


Ograniczenia że przeszkadza mi:

  1. Wszyscy pracujący w wydziale ma tego samego menedżera.
  2. Nikt w firmie nie jest menedżerem firmy.
  3. Nikt w firmie nie zarabia więcej niż jego menedżer.

Dla 1st jeden mam:

Departamentu kontekstowego

inw self.stuff -> forall (kierownik = self.staff.manager)

2 jeden:

kontekst Firma

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

3-ty jeden:

kontekst Firma

inw self.employee -> select (pensja> manager.salary) -> isEmpty()

ale nie sądzę że są w porządku. Najbardziej nie jestem pewien, czy w przykładzie 2 i 3 rzeczywiście porównywam poszczególnych pracowników z ich faktyczną pensją menedżera/menedżera.

Odpowiedz

2

Szybkie rozwiązanie na ograniczenia:

kontekst Departament inw: self.staff -> forall (s1, s2 | s1.manager = s2.manager)

kontekst inw firmy: siebie. employee-> forAll (e | e.menedżer <> e)

kontekst inw firmy: self.employee-> forall (e | e.salary < = e.manager.salary)

Btw, ja naprawdę nie widzę potrzeby dla Klasa przedsiębiorstwa (ile obiektów typu firma posiadasz w systemie?). Jeśli ograniczenia dwa i trzy są prawdziwe dla wszystkich firm, wówczas można je wyrazić przy użyciu Person jako kontekstu w ten sposób (np. Z numerem 2): context Person inv: self.manager <> self)

Możemy również dodać kontrole do sprawdzić, czy pracownik ma menedżera przed wykonaniem porównania

+0

To nie jest rzeczywisty system. To jedno z pytań do powtórki na egzaminie :) Błądziłem sobie, dlaczego jest klasa firmy ... Wielkie dzięki za pomoc. – Artur

4

dla początkujących polecam to książka: Object Constraint Language: Przygotowanie modeli do MDA przez Jos'a Warmera i Anneke Kleppe (Jos był jednym z głównych twórców OCL).

Jest to również darmowe OCL tutorial (pdf + slajdy)

lubię też wiele oficjalnej specyfikacji już stwierdzono (specjalnie rozdziale oferując nieformalny opis języka).

+0

edytowany pytanie i dodaje ograniczenia jestem pewny. – Artur

Powiązane problemy