| <?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 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"> </span><span |
| class="ec-lmtt-9">ActorClass2</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">ActorClass1</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-127004r2"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Structure</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-127005r3"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">ActorRef</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ActorReference</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ActorClass2</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-127006r4"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </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 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"> </span><span |
| class="ec-lmtt-9">ActorClass1</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129003r2"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Interface</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129004r3"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Port</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port1</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ProtocolClass1</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129005r4"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Port</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port4</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ProtocolClass1</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129006r5"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129007r6"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Structure</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129008r7"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">external</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Port</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port1</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129009r8"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">conjugated</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Port</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port2</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ProtocolClass1</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129010r9"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">conjugated</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Port</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port3</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ProtocolClass1</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129011r10"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">ActorRef</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ActorRef_A</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ActorClass2</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129012r11"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">ActorRef</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ActorRef_B</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">ActorClass3</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129013r12"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Binding</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port2</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">and</span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-129014r13"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Binding</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port3</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">and</span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-129015r14"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Binding</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">and</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">port4</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-129016r15"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Binding</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">and</span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-129017r16"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">ActorClass3</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-130002r2"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Structure</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-130003r3"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Attribute</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">attribute1</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">int32</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">//</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">attribute</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">of</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">primitive</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">type</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-130004r4"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Attribute</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">attribute2</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">attribute</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">of</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">DataClass</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">type</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-130005r5"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">ActorClass4</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131002r2"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Behavior</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131003r3"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">//</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">no</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">arguments</span><span |
| class="ec-lmtt-9">,</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">no</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">return</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">value</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131004r4"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Operation</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">void</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131005r5"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-131006r6"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131007r7"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">//</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">argument</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">of</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">primitive</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">type</span><span |
| class="ec-lmtt-9">,</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">return</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">value</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">of</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">primitive</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">type</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131008r8"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Operation</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">int32</span><span |
| class="ec-lmtt-9">,</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">Param2</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">uint16</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">{</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131009r9"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-131010r10"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131011r11"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">//</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">arguments</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">and</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">return</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">value</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">by</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">value</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131012r12"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Operation</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">int32</span><span |
| class="ec-lmtt-9">,</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">Param2</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </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"> </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"> </span><br /><span class="label"><a |
| id="x19-131013r13"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-131014r14"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131015r15"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">//</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">arguments</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">and</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">return</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">value</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">by</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">reference</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">except</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">for</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">primitive</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">types</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131016r16"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">Operation</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">int32</span><span |
| class="ec-lmtt-9">,</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">Param2</span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">DataClass1</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">DataClass1</span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-131017r17"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </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"> </span><br /><span class="label"><a |
| id="x19-131018r18"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </span><br /><span class="label"><a |
| id="x19-131019r19"></a></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </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> |