Information Technology Reference
In-Depth Information
For any of the defined actions, the monotonicity (1) and conjunctivity (2)
properties hold:
( p
q )=
( wp ( A, p )
wp ( A, q ))
(1)
wp ( A, P )
wp ( A, Q )
wp ( A, P
Q )
(2)
In addition, we require an action to be bounded non-deterministic. The parallel
composition of two action systems is done by joining all actions and variables.
(Some variables may be shared between the systems.) As an example, the parallel
composition AS 1
AS 2 of two action systems
AS 1 =
[ var X : T 1 = I 1 ;
do A 1
|
A 1
m
: u 1
...
od ]
|
AS 2 =
[ var Z : T 2 = I 2 ;
do A 1
|
A 2
n
: u 2
...
od ]
|
yields AS 1 2 :
AS 1 2 =
[ var X : T 1 = I 1 ; Z : T 2 = I 2 ;
do A 1
|
A 1
m
...
A 1
A 2
n
...
od
:( u 1
u 2 )
( v 1
v 2 )
|
\
]
where v i denotes all variables used (exported) from action system AS i .
3.2 Object Orientation
We use the work of Bonsangue et al. [4] as the basis for object-oriented action
systems: in particular we share the transformation step from object-oriented
action systems to action systems. We differ in the notion of named actions and
procedures and we add the ability to prioritize objects of a particular class
with respect to objects of another class. Within our methodology, we use a very
simple form of inheritance: A class C 2 is a valid subclass of C 1 if and only if the
(syntactic) superposition (cf. [7]) refinement holds between the classes. Roughly
speaking this means that C 2 may introduce additional variables and actions.
However, none of the additional actions may have any effect on the variables of
C 1 , it must be guaranteed that when only considering the new actions and the
initial state the system terminates, and the exit condition of C 2 must imply the
exit condition of C 1 . The subclass C 2 may override (refine) actions of C 1 in a
way that the guard is strengthened and values to the additional variables are
assigned.
Like most object-oriented programming languages, objects are constructed at
runtime from classes with the help of a constructor statement o := new ( C ),
where o represents the instance (object) and C stands for some class. Similar
to [4], a class C is a named type and can be represented as tuple C = df ( C n ,C b )
 
Search WWH ::




Custom Search