📄 8sequencediagrams.html
字号:
<li>在 <b>if</b> 下放置一个 <b>else</b> 语句.
</ol>
</td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#CCCCCC">
<table border="0" cellpadding="5" cellspacing="2">
<tr>
<td valign="top" bgcolor="white">
<p>点击语句块按钮(<img src="images/icons/block.gif" width="13" height="13" border="0" alt="block" hspace="1" align="top">),
然后点击 <b>Reservation</b> 的活动条, 将出现下图中的对话框.</p>
<p><img src="images/airline/statementtype.png" width="293" height="312" border="0" alt="Statement type dialog box" hspace="5"></p>
</td>
<td valign="top" bgcolor="white">
<table border="0" cellpadding="5" cellspacing="2">
<tr>
<td valign="top" bgcolor="white">
<p><img src="images/airline/sdif.png" width="43" height="31" border="0" align="left" hspace="3">语句块(例如 <b>if</b>
语句)是活动条中的一个暗色的矩形块. 语句块有右键菜单.</p>
<p>使用属性察看器来设置 <b>if</b> 条件. 条件在 "statement expression"
文本框中.</p>
<p><img src="images/airline/pro8_ifcondition.png" width="304" height="162" border="0" alt="Statement inspector" align="bottom" hspace="3"></p>
<p></p>
</td>
</tr>
</table>
<p></p>
</td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#993300" width="100%">
<tr>
<td bgcolor="#993300">
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#ffffcc" width="100%">
<tr>
<td bgcolor="#ffffcc"><b>操作步骤: </b>从 <b>if</b> 块到 <b>Ticket </b>
创建一个 <b>calcPrice()</b> 消息. 将返回值命名为 <b>cost</b>.</td>
</tr>
</table>
</td>
</tr>
</table>
<p>语句块, 活动条, 以及生命线痘可以是消息的起点和终点. 在这一步中, 注意将消息起点放置在 <b>if</b>
内而不是活动条中的其他位置.</p>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#CCCCCC">
<table border="0" cellpadding="5" cellspacing="2">
<tr>
<td valign="top" bgcolor="white">消息的 return
属性指定保存操作返回值的变量的名称. 你可以通过消息属性察看器来设置它. <p>
下图是 <b>Reservation</b> 的活动条.</p>
<p><img src="images/airline/sdifcomplete.png" width="273" height="159" border="0" alt="Activation bar" vspace="5" hspace="5"></p>
<p></p>
</td>
<td valign="top" bgcolor="white"><img src="images/airline/pro8_setcostpi.png" width="307" height="303" border="0" alt="Message properties inspector" hspace="5" vspace="5" align="right"></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<hr>
<p class="head3"><a name="implement"></a>从模型图实现代码</p>
<p>如果方法体中没有代码, 则 Together 可以使用时序图为方法生成代码. <i>开始下一步骤之前, 请先删除你放置在 <b>Reservation.calcPrice()</b>
方法体中的所有的 return 语句(和所有其他语句).</i></p>
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#993300" width="100%">
<tr>
<td bgcolor="#993300">
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#ffffcc" width="100%">
<tr>
<td bgcolor="#ffffcc"><b>操作步骤:</b> 实现 <b>Reservation.calcPrice()</b>
方法.</td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#CCCCCC">
<table border="0" cellpadding="5" cellspacing="2">
<tr>
<td valign="top" bgcolor="white">
<p>这是一个很简单的操作. 先删除 <b>Reservation.calcPrice()</b>
方法体中的代码, 然后从消息的右键菜单中选择<nobr><b> Generate Implementation</b>
即可</nobr>.</p>
</td>
<td valign="top" bgcolor="white">
<p><img src="images/airline/pro8_genimplementation.png" width="237" height="71" border="0"></p>
</td>
</tr>
</table>
</td>
</tr>
</table>
<p>下图是已完成的时序图, 包含三个粗体字的消息. Together 时序图将执行<b> Generate Implementation</b>
后生成或修改的代码显示为粗体字.<img src="images/airline/sdfindrevenuediagram.png" width="620" height="344" border="0" alt="Sequence diagram" hspace="10" vspace="10" align="top"></p>
<p>时序图可以给出代码结构. 但完成详细代码是程序员的工作. 下面是 <b>Reservation.calcPrice()</b>
方法中未完成的代码. </p>
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td>
<pre><b>public</b> <b>double</b> calcPrice(){
<font color="#007700"><i>// message #1.1.1 to this:AirlinePD.Reservation</i></font>
<b>boolean</b> hasTicket = this.ticketPurchased();
<b>if</b> (hasTicket) {
<font color="#007700"><i>// message #1.1.2.1 to lnkTicket:AirlinePD.Ticket</i></font>
<b>double </b>cost = lnkTicket.calcPrice();
}
<b>else</b> { }
}</pre>
</td>
</tr>
</table>
<p>你可以使用两个 return 语句来修正这些代码:</p>
<ol>
<li>在 <b>if</b> 语句块内放置一个 <b>return</b> 语句: <b>return cost;</b>
<li>在 <b>else</b> 中放置一个 <b>return</b> 语句: <b>return 0;</b>
</ol>
<dl>
<dd>
</dl>
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#993300" width="100%">
<tr>
<td bgcolor="#993300">
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#ffffcc" width="100%">
<tr>
<td bgcolor="#ffffcc"><b>操作步骤:</b> 在 <b>Reservation.calcPrice()</b>
方法和 <b>Flight.ticketRevenue()</b> 方法中修正语法错误.
按照你认为合适的方式修正逻辑错误.</td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<hr>
<p class="head3"><a name="final"></a>从已存在的代码生成时序图</p>
<p>Together 可以从已存在的没有语法错误的代码中生成时序图. 为下一个任务做准备, 你应该先编译工程以便检查语法错误.</p>
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#993300" width="100%">
<tr>
<td bgcolor="#993300">
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#ffffcc" width="100%">
<tr>
<td bgcolor="#ffffcc"><b>操作步骤:</b> 从 <b>Flight.makeReservation()</b>
方法生成新的时序图. 显示来自 <b>AirlinePD</b> 包的所有类. 但不显示来自 <b>java.util</b>
的类.</td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#CCCCCC">
<table border="0" cellpadding="5" cellspacing="2">
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -