Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ungleich <> Mengenoperation -> Union Intersection Includes gehört ein Objekt zu einer Menge (boolsch) Including setzt der Menge hinzu (vereinigung) C1.fahrzeug->inclusdes(f1) f4.auftrag->size() Keine Methoden nutzen -> bei Mengen Collect: sammelt Menge (sowie map) c1.fahrzeug -> collect(‚bla‘) c1.fahrzeug -> (collect(f: Fahrzeug |f.id) Bag = Multimenge c1.fahrzeug -> (collect(f |f.id)) c1.fahrzeug ->(collect(id)) c1.fahrzeug.id asSet = aus der Bag ein Set m.alleAuftraege -> forAll(beendet)m.alleAuftraege -> exists(beendet) m.alleAuftraege -> forAll(not ocllsTypeOf(inspection) implies beendet) m.alleAuftraege -> select(not ocllsTypeOf(inspection) -> forAll(beendet) m.alleAuftreage -> forAll(beender <> null implies beendet) Fahrzeuge.allInstances()->collect(f| f.typ)-> exists(t | t=“Fahrrad“) Fahrzeuge.allInstances()->collect(f| f.typ)-> includes(„Fahrrad“) Fahrzeuge.allInstances().id => Fahrzeug.allInstances().id->asSet() Fahrzeuge.allInstances().id => size() Fahrzeug.allInstances().id->asSet()->size() Fahrzeuge.allInstances().id -> forAll(Fahrzeug.allInstances().id->select() m.alleAuftraege-> collect(price <500) m.alleAuftraege-> select(price<500) m.alleAuftraege-> select(price>=500) ->size() =0 (Ergebnis boolscher Wert !) Ergebnis sollte keine Menge sein sondern boolscher Wert um Aussagen zu treffen OCL Iterate – Scala reduce m.alleAuftraege ->iterate(a;preis: Integer=0 | preis + a.price) Invarianten in use erstellen Constraints inv i1: true Normalerweise Context Kunde inv[n]: Inv a: self.id > 0 bei MitarbeiterDaten würde auch ohne self gehen
- Inv a2: mitarbeiterDaten->forAll(id>0) bei Mitarbeiter Inv b: name <> ‘‘Inv c: MitarbeiterDaten.allInstances().id->count(self.id)=1 Self ist wie this bei java Inv d: auftrag -> select(OclIsTypeOf(Inspektion)) -> select(not beendet) -> size() <2 Inv e : Fahrzeug -> forAll(f|f.kunde = self) Inv f: self.fahrzeug.auftrag > select(not beendet) -> collect(price) -> sum() <=10000 Inv g: oclIsTypeOf(Reparatr) or oclIsTypeOf(Inspektion) or iclIsTypeof(Reifenwechsel) Inv h: beendet implies beendet <> null Inv j : if typ = ‚‘jaguar‘ then auftrag -> forAll(price > 1000) else true endif Inv k : beendet implies fahrzeug.auftrag->exists(oclIsTypeOf(Repartur)) Pre: kName <> ‘‘ and adr <> ‘‘ and tel <> ‘‘pre: not Kunde-> allInstances() -> exists(k)| k.name = kName) Vorparameter: prüfe systemzustand (prüfen vorm ausführen) post: self.kunde-> exists(k|k.name = kName and k.adress = adr and k.telefon = tel and k.oclIsNew() and Kunde.allInstances->select(k1:Kunde | k1.id = k.id) -> size() =1) Nachbedingung :
Advertisement
Add Comment
Please, Sign In to add comment