blob: 1332e641c4068bb726e2e4075ec4c47055e83420 [file] [log] [blame]
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
<html xmlns="http://www.w3.org/1999/xhtml"
>
<head><title>Actors</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<!-- xhtml,3,next,html -->
<meta name="src" content="etrice-doc.tex" />
<meta name="date" content="2015-06-30 18:08:00" />
<link rel="stylesheet" type="text/css" href="etrice-doc.css" />
</head><body
>
<!--l. 8--><div class="crosslinks"><p class="noindent">[<a
href="etrice-docse13.html" >next</a>] [<a
href="etrice-docch5.html" >prev</a>] [<a
href="etrice-docch5.html#tailetrice-docch5.html" >prev-tail</a>] [<a
href="#tailetrice-docse12.html">tail</a>] [<a
href="etrice-docch5.html#etrice-docse12.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">5.1 </span> <a
id="x19-1240001"></a>Actors</h3>
<a
id="x19-124001r143"></a>
<h4 class="subsectionHead"><span class="titlemark">5.1.1 </span> <a
id="x19-1250001"></a>Description</h4>
<!--l. 12--><p class="noindent" >The actor is the basic structural building block for building systems with ROOM. An actor can be refined hierarchically and
thus can be of arbitrarily large scope. Ports define the interface of an actor. An actor can also have a behavior usually defined
by a finite state machine.
<a
id="x19-125001r149"></a>
</p>
<h4 class="subsectionHead"><span class="titlemark">5.1.2 </span> <a
id="x19-1260002"></a>Motivation</h4>
<ul class="itemize1">
<li class="itemize">Actors enable the construction of hierarchical structures by composition and layering
</li>
<li class="itemize">Actors have their own logical thread of execution
</li>
<li class="itemize">Actors can be freely deployed
</li>
<li class="itemize">Actors define potentially re-usable blocks</li></ul>
<a
id="x19-126001r150"></a>
<h4 class="subsectionHead"><span class="titlemark">5.1.3 </span> <a
id="x19-1270003"></a>Notation</h4>
<div class="table">
<!--l. 30--><p class="noindent" ><a
id="x19-127001r1"></a></p><hr class="float" /><div class="float"
>
<div class="caption"
><span class="id">Table&#x00A0;5.1: </span><span
class="content">Actor Class Notation</span></div><!--tex4ht:label?: x19-127001r1 -->
<div class="tabular"> <table id="TBL-3" class="tabular"
cellspacing="0" cellpadding="0" rules="groups"
><colgroup id="TBL-3-1g"><col
id="TBL-3-1" /></colgroup><colgroup id="TBL-3-2g"><col
id="TBL-3-2" /></colgroup><colgroup id="TBL-3-3g"><col
id="TBL-3-3" /></colgroup><tr
class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"
class="td11"> <span
class="ec-lmssbx-10">Element </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-2"
class="td11"> <span
class="ec-lmssbx-10">Graphical Notation </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-3"
class="td11"> <span
class="ec-lmssbx-10">Textual Notation </span></td>
</tr><tr
class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"
class="td11"> ActorClass </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"
class="td11"> <img
src="images/040-ActorClassNotation.png" alt="PIC"
/> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-3"
class="td11"> <!--l. 36--> <!--l. 36--><p class="noindent" ><div class="lstlisting" id="listing-30"><span class="label"><a
id="x19-127002r1"></a></span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass2</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{}</span>
</div> </p> </td>
</tr><tr
class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"
class="td11"> ActorRef </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"
class="td11"> <img
src="images/040-ActorReferenceNotation.png" alt="PIC"
/> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-3"
class="td11"> <!--l. 41--> <!--l. 41--><p class="noindent" ><div class="lstlisting" id="listing-31"><span class="label"><a
id="x19-127003r1"></a></span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-127004r2"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Structure</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-127005r3"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorReference</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass2</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-127006r4"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-127007r5"></a></span><span
class="ec-lmtt-9">}</span>
</div> </p> </td>
</tr><tr
class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"
class="td11"> </td></tr></table></div>
</div><hr class="endfloat" />
</div>
<a
id="x19-127008r151"></a>
<h4 class="subsectionHead"><span class="titlemark">5.1.4 </span> <a
id="x19-1280004"></a>Details</h4>
<a
id="Q1-19-154"></a>
<h5 class="likesubsubsectionHead"><a
id="x19-1290004"></a>Actor Classes, Actor References, Ports and Bindings</h5>
<!--l. 57--><p class="noindent" >An <span id="textcolor1"><span
class="ec-lmssbx-10">ActorClass</span></span> defines the type (or blueprint) of an actor. Hierarchies are built by <span id="textcolor2"><span
class="ec-lmssbx-10">ActorClass</span></span>es that contain
<span id="textcolor3"><span
class="ec-lmssbx-10">ActorRef</span></span>erences which have another <span id="textcolor4"><span
class="ec-lmssbx-10">ActorClass</span></span> as type. The interface of an <span id="textcolor5"><span
class="ec-lmssbx-10">ActorClass</span></span> is always defined by <span id="textcolor6"><span
class="ec-lmssbx-10">Port</span></span>s. The
<span id="textcolor7"><span
class="ec-lmssbx-10">ActorClass</span></span> can also contain <span id="textcolor8"><span
class="ec-lmssbx-10">Attribute</span></span>s, <span id="textcolor9"><span
class="ec-lmssbx-10">Operation</span></span>s and a finite <span id="textcolor10"><span
class="ec-lmssbx-10">StateMachine</span></span>.
</p><!--l. 63--><p class="noindent" >External <span id="textcolor11"><span
class="ec-lmssbx-10">Port</span></span>s define the external interface of an actor and are defined in the <span id="textcolor12"><span
class="ec-lmssbx-10">Interface</span></span> section of the <span id="textcolor13"><span
class="ec-lmssbx-10">ActorClass</span></span>.
</p><!--l. 66--><p class="noindent" >Internal <span id="textcolor14"><span
class="ec-lmssbx-10">Port</span></span>s define the internal interface of an actor and are defined in the <span id="textcolor15"><span
class="ec-lmssbx-10">Structure</span></span> section of the <span id="textcolor16"><span
class="ec-lmssbx-10">ActorClass</span></span>.
</p><!--l. 69--><p class="noindent" ><span id="textcolor17"><span
class="ec-lmssbx-10">Binding</span></span>s connect <span id="textcolor18"><span
class="ec-lmssbx-10">Port</span></span>s inside an <span id="textcolor19"><span
class="ec-lmssbx-10">ActorClass</span></span>.
</p><!--l. 71--><p class="noindent" >Let us have a look at example <a
href="#x19-129001r2">5.2<!--tex4ht:ref: tab:actor_class_example --></a>:
</p>
<div class="table">
<!--l. 74--><p class="noindent" ><a
id="x19-129001r2"></a></p><hr class="float" /><div class="float"
>
<div class="caption"
><span class="id">Table&#x00A0;5.2: </span><span
class="content">Actor Class Example</span></div><!--tex4ht:label?: x19-129001r2 -->
<div class="tabular"> <table id="TBL-4" class="tabular"
cellspacing="0" cellpadding="0" rules="groups"
><colgroup id="TBL-4-1g"><col
id="TBL-4-1" /></colgroup><colgroup id="TBL-4-2g"><col
id="TBL-4-2" /></colgroup><colgroup id="TBL-4-3g"><col
id="TBL-4-3" /></colgroup><tr
class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"
class="td11"> <span
class="ec-lmssbx-10">Graphical Notation </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"
class="td11"> <span
class="ec-lmssbx-10">Textual Notation </span></td>
</tr><tr
class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"
class="td11"> <img
src="images/040-ActorClass.png" alt="PIC"
/> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"
class="td11"> <!--l. 80--> <!--l. 80--><p class="noindent" ><div class="lstlisting" id="listing-32"><span class="label"><a
id="x19-129002r1"></a></span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129003r2"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Interface</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129004r3"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Port</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ProtocolClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129005r4"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Port</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port4</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ProtocolClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129006r5"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129007r6"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Structure</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129008r7"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">external</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Port</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129009r8"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">conjugated</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Port</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port2</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ProtocolClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129010r9"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">conjugated</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Port</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port3</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ProtocolClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129011r10"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorRef_A</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass2</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129012r11"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorRef_B</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass3</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129013r12"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Binding</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port2</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">and</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorRef_A</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">port5</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129014r13"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Binding</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port3</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">and</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorRef_B</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">port6</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129015r14"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Binding</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorRef_B</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">port7</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">and</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">port4</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129016r15"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Binding</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorRef_A</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">port8</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">and</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorRef_B</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">port9</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129017r16"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-129018r17"></a></span><span
class="ec-lmtt-9">}</span>
</div> </p> </td>
</tr><tr
class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"
class="td11"> </td></tr></table></div>
</div><hr class="endfloat" />
</div>
<ul class="itemize1">
<li class="itemize"><span
class="ec-lmsso-10">ActorClass1 </span>contains two <span id="textcolor20"><span
class="ec-lmssbx-10">ActorRef</span></span>erences (of ActorClass2 and ActorClass3)
</li>
<li class="itemize"><span
class="ec-lmsso-10">port1 </span>is an <span
class="ec-lmsso-10">external end port</span>. Since it connects external actors with the behavior of the <span id="textcolor21"><span
class="ec-lmssbx-10">ActorClass</span></span>, it is
defined in the <span id="textcolor22"><span
class="ec-lmssbx-10">Interface</span></span> section and the <span id="textcolor23"><span
class="ec-lmssbx-10">Structure</span></span> section of the <span id="textcolor24"><span
class="ec-lmssbx-10">ActorClass</span></span>.
</li>
<li class="itemize"><span
class="ec-lmsso-10">port2 </span>and <span
class="ec-lmsso-10">port3 </span>are <span
class="ec-lmsso-10">internal end ports </span>and can only be connected to the ports of contained <span id="textcolor25"><span
class="ec-lmssbx-10">ActorRef</span></span>erences.
Internal end ports connect the behavior of an <span id="textcolor26"><span
class="ec-lmssbx-10">ActorClass</span></span> with its contained <span id="textcolor27"><span
class="ec-lmssbx-10">ActorRef</span></span>erences.
</li>
<li class="itemize"><span
class="ec-lmsso-10">port4 </span>is a relay port and connects external Actors to contained <span id="textcolor28"><span
class="ec-lmssbx-10">ActorRef</span></span>erences. This port can not be accessed
by the behavior of the <span id="textcolor29"><span
class="ec-lmssbx-10">ActorClass</span></span>.
</li>
<li class="itemize"><span
class="ec-lmsso-10">port5 </span>through <span
class="ec-lmsso-10">port9 </span>are ports of contained actor references. <span
class="ec-lmsso-10">port8 </span>and <span
class="ec-lmsso-10">port9 </span>can communicate without
interference with the containing actor class.
</li>
<li class="itemize"><span id="textcolor30"><span
class="ec-lmssbx-10">Binding</span></span>s can connect ports of the actor class and its contained actor references.</li></ul>
<a
id="Q1-19-157"></a>
<h5 class="likesubsubsectionHead"><a
id="x19-1300004"></a>Attributes</h5>
<!--l. 120--><p class="noindent" ><span id="textcolor31"><span
class="ec-lmssbx-10">Attribute</span></span>s are part of the <span id="textcolor32"><span
class="ec-lmssbx-10">Structure</span></span> of an actor class. They can be of a <span id="textcolor33"><span
class="ec-lmssbx-10">PrimitiveType</span></span> or a <span id="textcolor34"><span
class="ec-lmssbx-10">DataClass</span></span>.
</p><!--l. 123--><p class="noindent" >Example:
</p>
<!--l. 126-->
<div class="lstlisting" id="listing-33"><span class="label"><a
id="x19-130001r1"></a></span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass3</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-130002r2"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Structure</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-130003r3"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Attribute</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">attribute1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">int32</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">//</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">attribute</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">of</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">primitive</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">type</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-130004r4"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Attribute</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">attribute2</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">DataClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">//</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">attribute</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">of</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">DataClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">type</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-130005r5"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-130006r6"></a></span><span
class="ec-lmtt-9">}</span>
</div>
<a
id="Q1-19-159"></a>
<h5 class="likesubsubsectionHead"><a
id="x19-1310004"></a>Operations</h5>
<!--l. 137--><p class="noindent" ><span id="textcolor35"><span
class="ec-lmssbx-10">Operation</span></span>s are part of the <span id="textcolor36"><span
class="ec-lmssbx-10">Behavior</span></span> of an actor class. Arguments and return values can be of a <span id="textcolor37"><span
class="ec-lmssbx-10">PrimitiveType</span></span> or a
<span id="textcolor38"><span
class="ec-lmssbx-10">DataClass</span></span>. Data classes can be passed by value (implicit) or by reference (<span id="textcolor39"><span
class="ec-lmssbx-10">ref</span></span>).
</p><!--l. 140--><p class="noindent" >Example:
</p>
<!--l. 144-->
<div class="lstlisting" id="listing-34"><span class="label"><a
id="x19-131001r1"></a></span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">ActorClass4</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131002r2"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Behavior</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131003r3"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">//</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">no</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">arguments</span><span
class="ec-lmtt-9">,</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">no</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">return</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">value</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131004r4"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Operation</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">operation1</span><span
class="ec-lmtt-9">()</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">void</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131005r5"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131006r6"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131007r7"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">//</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">argument</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">of</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">primitive</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">type</span><span
class="ec-lmtt-9">,</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">return</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">value</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">of</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">primitive</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">type</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131008r8"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Operation</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">operation2</span><span
class="ec-lmtt-9">(</span><span
class="ec-lmtt-9">Param1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">int32</span><span
class="ec-lmtt-9">,</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">Param2</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">float64</span><span
class="ec-lmtt-9">)</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">uint16</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131009r9"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131010r10"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131011r11"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">//</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">arguments</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">and</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">return</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">value</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">by</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">value</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131012r12"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Operation</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">operation3</span><span
class="ec-lmtt-9">(</span><span
class="ec-lmtt-9">Param1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">int32</span><span
class="ec-lmtt-9">,</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">Param2</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">DataClass1</span><span
class="ec-lmtt-9">)</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">DataClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131013r13"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131014r14"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131015r15"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">//</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">arguments</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">and</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">return</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">value</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">by</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">reference</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">except</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">for</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">primitive</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">types</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131016r16"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Operation</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">operation4</span><span
class="ec-lmtt-9">(</span><span
class="ec-lmtt-9">Param1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">int32</span><span
class="ec-lmtt-9">,</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">Param2</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">DataClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ref</span><span
class="ec-lmtt-9">)</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">DataClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ref</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131017r17"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131018r18"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131019r19"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x19-131020r20"></a></span><span
class="ec-lmtt-9">}</span>
</div>
<!--l. 167--><div class="crosslinks"><p class="noindent">[<a
href="etrice-docse13.html" >next</a>] [<a
href="etrice-docch5.html" >prev</a>] [<a
href="etrice-docch5.html#tailetrice-docch5.html" >prev-tail</a>] [<a
href="etrice-docse12.html" >front</a>] [<a
href="etrice-docch5.html#etrice-docse12.html" >up</a>] </p></div>
<!--l. 167--><p class="noindent" ><a
id="tailetrice-docse12.html"></a></p>
</body></html>