Objektorientierte Programmierung und Modellierung (Fach) / Algebraische Spezifikation (Lektion)
In dieser Lektion befinden sich 5 Karteikarten
Zusammenfassung WS 2015/2016
Diese Lektion wurde von RouHim erstellt.
- Zwischen welchen Typen muss bei der Algebraische Spezifikation unterschieden werden? Sorts Functions Predicates Properties
- In welcher Form werden "Sorts" spezifiziert? sort <SortName> Beispiel: sort Company sort Employee
- In welcher Form werden "Functions" spezifiziert? function <name> : <Parameter> x <Paramter> x ... -> <Rückgabewert> Bsp.: function setSalary : Company x Employee x Nat -> Companyfunction getAllEmployees : Company -> Employee*function findEmployeeWithNumber : Company x Nat -> Employee? AchtungDer * bedeutet das es sich um mehrere Employees handelt.Das ? bedeutet das ein oder kein Employee zurückgegeben wird.
- In welcher Form werden "Predicates" spezifiziert? Predicates sind gleich zu "Functions", nur das sie immer als Rückgabewert einen booleschen Wert haben. Dieswer wird jedoch nicht explizit aufgeschrieben. predicate <name> : <Parameter> x <Parameter> Bsp.: predicate isMale : Company x Employeepredicate hasEmployees : Company
- In welcher Form werden "Properties" spezifiziert? Eine "Property" bestehen grundsätzlich aus vier Teilen: Eigenschaften / Beschreibung der Property Vorbedingung die für diese Eigenschaft gelten soll. "Ausführung" der function für die, die Property gelden soll. Nachbedinung welche nach der function gelten soll Bsp.: property setzeGehalt(c, e) : Company, Employee isInCompany(c,e) ^ not hasSalary(c, e) => let c1 = setSalary(c, e, n) in hasSalary(c1, e) ^ getSalary(c1, e) = n
