A Brief Introduction To OOPNs

The OOPN formalism is characterized by a Smalltalk-based object-orientation enriched with concurrency and polymorphic transition execution, which allow for message sending, waiting for and accepting responses, creating new objects, and performing primitive computations.

OOPNs are based on viewing objects as active servers which offer reentrant services to other objects. Services provided by objects, as well as independent activities of objects, are described by Petri nets - services by method nets, object activities by object nets. Tokens in nets represent references to objects.


\begin{figure}
\begin{center}
\epsfig{file=OOPN.eps, width=9.5cm} \end{center}\end{figure}

An OOPN consists of Petri nets organized in classes. Every class consists of an object net describing the internal activity of objects of this class and a set of dynamically instantiable method nets describing how these objects respond to messages. All method nets of a given class share access to the appropriate object net (places of the object net are accessible for transitions of method nets). Each method net has parameter places and a return place. Class inheritance is defined by the inheritance of object nets (Inherited transitions and places identified by their names can be redefined and new places or transitions can be added.), together with sets of method nets (The implementation of inherited methods can be changed and new methods can be added.). Classes can also contain special methods called synchronous ports which allow for synchronous interactions of objects.

Every object is either trivial (e.g. a number or a string) or it is an instance of some Petri net-described class consisting of one instance of the appropriate object net and several currently running instances of method nets. When an object receives a message, a new instance of the corresponding method net is created, parameters are put into the parameter places and the instance of the method net is being executed concurrently with all other net instances until the return place receives a token. Then the value of the token in the return place is passed to the message sender as the result of the requested service, and the instance of the method net is deleted. Message sending and object creations are specified as actions attached to transitions. Execution of transitions is polymorphic - invoked methods depend on classes of message receivers which are unknown at the compile time.

Summary



Vladimir Janousek
2001-01-15