include "primitives.alh" include "object_operations.alh" include "modelling.alh" SimpleAttribute Action {} SimpleAttribute Boolean {} SimpleAttribute String {} SimpleAttribute Natural {} Class Diagram{ name : String author : String description : String lower_cardinality = 1 upper_cardinality = 1 } Class Class{ name : String constructor_body? : Action destructor? : Action default : Boolean external : Boolean } Association diagram_classes(Diagram, Class){ target_lower_cardinality = 1 } Class Attribute{ name : String } Association class_attributes(Class, Attribute){} Class Method{ name : String body : Action } Association association(Class, Class){ name : String source_upper_cardinality = 1 } Association inheritance(Class, Class){ priority ?: Natural source_upper_cardinality = 1 } Class State{ name : String } Class BasicState : State{ isInitial : Boolean onEntryScript? : Action onExitScript? : Action } Association onEntryRaise (BasicState, Raise) {} Association onExitRaise (BasicState, Raise) {} Association behaviour(Class, BasicState){ target_lower_cardinality = 1 target_upper_cardinality = 1 } Class Raise{ event : String scope? : String target? : String parameter? : Action } Association state_onentry_raises(BasicState, Raise){ order : Natural } Association state_onexit_raises(BasicState, Raise){ order : Natural } Class CompositeState : BasicState{} Association composite_children(CompositeState, State){ source_upper_cardinality = 1 } Class ParallelState : BasicState{} Association parallel_children(ParallelState, CompositeState){ source_upper_cardinality = 1 } Class HistoryState : State{} Association transition(State, State){ name: String cond? : Action script? : Action after? : Action event? : String source_upper_cardinality = 1 } Association transition_raises(transition, Raise){ order : Natural }