<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>interfaces::Derived</title>
<link href="../../../../css/ea.css" rel="stylesheet" type="text/css" />
<script>
function initPage(src) {	
	if(parent==this&&(this.location+"").indexOf('EARoot')!=-1)
		document.location=(this.location+"").substring(0,(this.location+"").indexOf('EARoot'))+"index"+(this.location+"").substring((this.location+"").lastIndexOf('.'))+"?goto="+((this.location+"").substring((this.location+"").indexOf('EARoot')+7,(this.location+"").lastIndexOf('.')).replace(/\//g,':').replace(/EA/g,""));
	else
		parent.initPage(src);
}

function nameClassifier(name, separator)
{
  var str = name;
  var classifierName;
  var node = document.getElementById('name_classifier');
  if(node != null)
  {
    classifierName = node.innerHTML;
  }
  if(classifierName != "")
  {
   str += separator + classifierName;
  }
  
  return str;
}
</script>
</head>
<body onload="initPage(this);" class="Content">
<div class="pageHeader"></div>
<div class="PageBody">
	<div id="name_classifier" style="display: none;"></div>
	<span class="ObjectTitle"><script type="text/javascript">document.write(nameClassifier("Derived", " : "))</script>  : Public abstract  Interface</span>
	<table border="0" cellpadding="0" cellspacing="0" class="ObjectDetails">
		<tr>
			<td width="15%" class="ObjectDetailsTopic">Created:</td>
			<td width="85%" class="ObjectDetailsValue">07.10.2015 10:14:58</td>
		</tr>
		<tr>
			<td class="ObjectDetailsTopic">Modified:</td>
			<td class="ObjectDetailsValue">03.11.2015 14:21:26</td>
		</tr>
		<tr style="height: 10px"><td colspan="2"></td></tr>
		<tr>
			<td class="ObjectDetailsTopic"><img src="../../../../images/plus03.gif" align="absmiddle" id="proj" onclick="parent.toggleData(this.id)" />Project:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="proj00" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Author:</td>
			<td class="ObjectDetailsValue">dirss</td>
		</tr>
		<tr id="proj01" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Version:</td>
			<td class="ObjectDetailsValue">1.0</td>
		</tr>
		<tr id="proj02" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Phase:</td>
			<td class="ObjectDetailsValue">1.0</td>
		</tr>
		<tr id="proj03" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Status:</td>
			<td class="ObjectDetailsValue">Proposed</td>
		</tr>
		<tr id="proj04" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Complexity:</td>
			<td class="ObjectDetailsValue">Easy</td>
		</tr>
		<tr id="proj05" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Difficulty:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="proj06" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Priority:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="proj05" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Multiplicity:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr>
			<td class="ObjectDetailsTopic"><img src="../../../../images/plus03.gif" align="absmiddle" id="adv" onclick="parent.toggleData(this.id)" />Advanced:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="adv00" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">UUID:</td>
			<td class="ObjectDetailsValue">{70AE44D2-9B91-4980-8165-4F6D0658A49C}</td>
		</tr>
		<tr id="adv01" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Appears In:</td>
			<td class="ObjectDetailsValue"><a href="EA62.html">Base Model Interfaces</a>, <a href="../EA2/EA77.html">Test</a>, <a href="../EA2/EA79.html">TestStep</a>, <a href="../EA2/EA81.html">Measurement</a>, <a href="../EA2/EA83.html">ChannelGroup</a>, <a href="../EA2/EA89.html">ContextRoot</a>, <a href="../EA2/EA91.html">ContextComponent</a>, <a href="../EA2/EA93.html">ContextSensor</a></td>
		</tr>
	</table>
	
	<div class="TableGroup" id="TableGroup">
		<ul class="ItemTitle">
			<li onClick="parent.toggleItem('Links');" id="LinksTitle">Other Links</li>
		</ul>
		<div class="ItemBody" id="LinksTable">
			<table align="center" border="0" cellspacing="0" cellpadding="0" class="Table">
				<tr>
					<td width="30%" class="TableHeading">Object</td>
					<td width="10%" class="TableHeading">Type</td>
					<td width="10%" class="TableHeading">Connection</td>
					<td width="10%" class="TableHeading">Direction</td>
					<td width="40%" class="TableHeading">Notes</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../EA2/EA114.html">ContextRoot</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">From</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../EA2/EA115.html">ContextComponent</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">From</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../EA2/EA116.html">ContextSensor</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">From</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../EA2/EA111.html">Measurement</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">From</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../EA2/EA109.html">Test</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">From</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../EA2/EA112.html">ChannelGroup</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">From</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../EA2/EA110.html">TestStep</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">From</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>

			</table>
		</div>
	</div>
<div class="pageFooter"></div>
 
</body>
</html>