blob: 8d4e91467f74ef3b0dec2e145376454c53b82471 [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>DataClass</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="2013-10-21 12:44:00" />
<link rel="stylesheet" type="text/css" href="etrice-doc.css" />
</head><body
>
<!--l. 450--><div class="crosslinks"><p class="noindent">[<a
href="etrice-docse22.html" >next</a>] [<a
href="etrice-docse20.html" >prev</a>] [<a
href="etrice-docse20.html#tailetrice-docse20.html" >prev-tail</a>] [<a
href="#tailetrice-docse21.html">tail</a>] [<a
href="etrice-docch4.html#etrice-docse21.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">4.4 </span> <a
id="x27-1180004.4"></a>DataClass</h3>
<!--l. 452--><p class="noindent" >
</p>
<h4 class="subsectionHead"><span class="titlemark">4.4.1 </span> <a
id="x27-1190004.4.1"></a>Description</h4>
<!--l. 454--><p class="noindent" >The <span id="textcolor47"><span
class="ec-lmssbx-10">DataClass</span></span> enables the modeling of hierarchical complex data types and operations on them. The data class is the
equivalent to a class in languages like Java or C++, but has less features. The content of a data class can always be sent via
message between actors (defined as message data in a <span id="textcolor48"><span
class="ec-lmssbx-10">ProtocolClass</span></span>).
</p><!--l. 458--><p class="noindent" >
</p>
<h4 class="subsectionHead"><span class="titlemark">4.4.2 </span> <a
id="x27-1200004.4.2"></a>Notation</h4>
<!--l. 460--><p class="noindent" >Example: DataClass using PrimitiveTypes
</p>
<!--l. 462-->
<div class="lstlisting" id="listing-36"><span class="label"><a
id="x27-120001r1"></a></span><span
class="ec-lmssbx-10x-x-90">DataClass</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="x27-120002r2"></a></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">//</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="x27-120003r3"></a></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">float32</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">another</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="x27-120004r4"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x27-120005r5"></a></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="x27-120006r6"></a></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="x27-120007r7"></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">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x27-120008r8"></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="x27-120009r9"></a></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">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="x27-120010r10"></a></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">:</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="x27-120011r11"></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">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x27-120012r12"></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="x27-120013r13"></a></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="x27-120014r14"></a></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">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">float64</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="x27-120015r15"></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">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x27-120016r16"></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="x27-120017r17"></a></span><span
class="ec-lmtt-9">}</span>
</div>
<!--l. 483--><p class="noindent" >Example: DataClass using other DataClasses:
</p>
<!--l. 485-->
<div class="lstlisting" id="listing-37"><span class="label"><a
id="x27-120018r1"></a></span><span
class="ec-lmssbx-10x-x-90">DataClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">DataClass2</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="x27-120019r2"></a></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">//</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="x27-120020r3"></a></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><br /><span class="label"><a
id="x27-120021r4"></a></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x27-120022r5"></a></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="x27-120023r6"></a></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">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="x27-120024r7"></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">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x27-120025r8"></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="x27-120026r9"></a></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="x27-120027r10"></a></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">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="x27-120028r11"></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">UserCodeLine1</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x27-120029r12"></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="x27-120030r13"></a></span><span
class="ec-lmtt-9">}</span>
</div>
<!--l. 502--><div class="crosslinks"><p class="noindent">[<a
href="etrice-docse22.html" >next</a>] [<a
href="etrice-docse20.html" >prev</a>] [<a
href="etrice-docse20.html#tailetrice-docse20.html" >prev-tail</a>] [<a
href="etrice-docse21.html" >front</a>] [<a
href="etrice-docch4.html#etrice-docse21.html" >up</a>] </p></div>
<!--l. 502--><p class="noindent" ><a
id="tailetrice-docse21.html"></a> </p>
</body></html>