关于绘制UML小程序canvas绘制图片图的问题

java程序设计第十章十一题画出UML图-学路网-学习路上 有我相伴
java程序设计第十章十一题画出UML图
来源:互联网 &责任编辑:小易 &
网友碰到这么一个问题:java程序设计第十章十一题画出UML图,具体如下:定义一个Circle2D类,包括:两个带有get方法的名为x和y的double型数据域,表明园的中心点;一个带get方法的数据域radius;一个无参数构造方法,该方法创建一个中心点(x,y)值为(0,0)且radius为1的默认圆;一个构造方法,创建指定的x,y和radius的圆;一个返回圆面积的方法getArea();一个返回圆周长的方法getPerimeter();如果给定的点(x,y)在这个圆内,那么方法contains(doubel x, double y)返回true;如果给定的圆在这个圆内,那么方法contains(Circle2D circle)返回true;如果给定的圆和这个圆重叠,那么方法overlaps(Circle2D circle)返回true。实现这个类。编写测试程序,创建一个Circle2D对象c1,其中心点在(2,2),半径为5.5,显示它的面积和周长。同时,检查点(3,3)是否位于这个圆的内部。然后,再检查另一个圆(中心点为(4,5),半径为10.5)是否位于这个圆的内部。之后,再检查另一个圆(中心点为(3,5),半径为2.3)是否和这个圆重叠。系统通过互联网整理(主要来自百度知道、sogou问问、知乎、360问答等平台)获得以下解决方法,供碰到同样问题的网友参考:答:你可以多参考一些别人的案例,比如trufun plato UML建模工具中就带有几个简单的项目案例,还有详细的UML框图和元素的介绍!答:关于UML对象模型图的绘制,推荐使用StarUML 建模工具,其简单的操作界面,很适合新手使用。另外,如果只是出于绘制UML流程图,可以利用相关流程图制作工具来实现,比如“迅捷流程图制作软件”等,其简单也非常简洁,拖动元素就可以流程图或程序结...答:7、编辑器区域中将会出现一个图形编辑器,它带有用于绘制类图的画布,可以通过两种...Eclipse里怎么导出java程序的UML类图? 9 现在Eclipse下生成类图的插件流行用哪个...答:分两步: 1.取消“保护” 选中“include”关联线--&鼠标右键--&格式--&保护--&取消“文本”前的勾 2.移动“include" 选中“include”关联线--&工具栏中的“文本工具”向下箭头--&文本块工具--&鼠标移动到“include”文本上,按住鼠标即可移动(只能水平移动)答:是你删除了其中的某些图,所以把最初创建的模型元素也给删了,后面引用的也就自然不见了。你把源头给删了,这个不受完整性的约束。保存前没仔细检查,也可以说是没保存好啦。答:Object-Oriented 面向对象思想 简单来说就是,万物皆对象答:不用太纠结这个问题啦。可以粗略的认为虚线的return是同步调用返回,实线的是异步调用(消息)的返回。答:我想题目应该有问题 for class client public class Client{ public void chooserver(Server s,int value){ s.setValue(value); } 我们建一个class server server1,server2都是它的子类 chooserver是一个自动寻找子类,并且呼叫正确函数的函数 ...答:浅析uml在网上办公系统中的应用,有哪位朋友会 比较顺的对待答:取款机状态图 状态机是一个诶的对象所有可能的生命历程的模型。状态机图通过对类对象的生存周期建立模型来描述对象随时间变化的动态行为,也可以用来描述用例、协作和方法的动态行为,它是展示状态与状态转换的图。在Rose中状态机包括状态图和活...
本文相关:
- Copyright & 2018 www.xue63.com All Rights Reserved本文和大家重点讨论一下UML序列图绘制的相关内容,如何养成良好的绘制UML序列图的习惯呢?通过本文介绍的这些方法可以帮助您养成良好的习惯,同时提高UML序列图的质量和效力。
养成良好的绘制UML序列图的习惯
请尝试本文所介绍的技巧来创建有效的UML序列图。本文改编自TheObjectPrimer2ndEdition的第6章。
有一些方法可以帮助您提高UML序列图的质量和效力。它们包括:
◆和主题问题专家一起验证决策
◆使解决方案尽量简单
◆为绘制消息和返回值选择一种一致而有效的风格
◆将UML序列图分层
◆遵循一致的逻辑风格
◆牢记UML序列图是动态的
1.验证决策
在开发图1UML序列图的过程中,我做了一些对其它模型可能有潜在影响的决策。例如,在对第10步建模时,假设(大致上是个设计决策)费用显示屏幕同时也处理学生对费用是否可接受所进行的验证。该决策应该由用户界面原型反映出来,并由主题问题专家(SME)进行验证。您应该和SME(特别是那些对于如何开发类似模型有着深刻见解的富有经验的人)一起执行UML序列图的绘制工作。
2.保持简单
在对第2和第3步建模时,我忽然意识到学生可能应该使用口令进入系统。在向SME提出了这个概念后发觉我错了:姓名和学号组合对于我们的目的来说已经足够唯一,并且学校也不希望增加复杂的口令管理。这是个很有意思的决策,因为这是学校的一个运作策略,所以可以作为一条商业规则记载到增补规范中。通过与SME一起检验这个想法,而不是假定我比他们知道得更多,我避免了“镀金”的机会,因而减少了我们小组开发这一系统所需的工作。
3.绘制消息和返回值
我更喜欢从左至右地绘制消息,从右至左地绘制返回值,尽管这样对于复杂的对象/类来说不总是非常合适。我将消息上的标签和返回值对齐到离箭头最近的位置。我不喜欢在UML序列图上标出返回值,为的是使图尽可能地简化。不过,始终标出返回值也同样有效,特别是在UML序列图用于设计而不是分析目的时。(我希望我的分析图尽量简单,而设计图尽量全面。)在分析期间,我的目标是理解逻辑和确保逻辑的正确性。而在设计期间,则要赋予消息精确的细节,如图1中的注释提醒我对"qualifications()"消息执行的任务。
4.将UML序列图分层
我喜欢将UML序列图从左至右地分层。先标出参与者,然后是控制器类,然后是用户界面类,最后是商业类。在设计期间,可能需要添加系统类和持久类,我通常将它们放在UML序列图的最右侧。以这种方式将UML序列图分层往往使它们更易于阅读,并且更容易找出分层逻辑问题,例如用户界面类直接访问持久类(在今后的建模技巧中将对此做更多介绍)。
5.遵循一致的逻辑风格
请注意,在图1UML序列图所示的过程中,逻辑风格做了部分更改。一开始,特别是在登录时,用户界面处理一些基本逻辑--而在选择研习班,以及稍后的验证时,则是控制器类进行处理。这实际上是个设计问题。我不会在这个问题上纠缠太久,但和往常一样,我建议选择一种适合于您的建模风格,然后始终如一地贯彻在所有UML序列图中。
6.牢记UML序列图是动态的
您可能听说过诸如动态建模和静态建模这样的术语,其他一些熟悉面向对象建模技术的开发人员常常会提到它们。您甚至可能听到过有关每种风格的优点的争论。
动态建模技术主要集中在标识系统中的行为,包括UML序列图的绘制和活动图的绘制(请参阅“如何绘制UML活动图”)以及UML协作图的绘制。而静态建模则集中在系统的静态方面,包括类、它们的属性,以及类之间的关联。类模型和持久/数据模型一样,都是静态建模的主要产物。
因此实际上没有什么好争论的--要想恰如其分地说明面向对象系统,同时需要动态和静态建模技术。
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至: 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
UML图有很多值得学习的地方,你对使用Visio绘制UML序列图的方法是否熟悉,本文向大家简单介绍一下,通过这些方法可以帮助您提高UML序列图的&>&UML教你画用例图,活动图,流程图。
UML教你画用例图,活动图,流程图。
上传大小:2.1MB
UML教程教你画用例图,活动图,流程图。
综合评分:3
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有1条
这个资源还是比较一般吧,很多内容在网上都可以找到,要是能更细点就好了,讲的太粗
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
UML教你画用例图,活动图,流程图。
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
UML教你画用例图,活动图,流程图。UML 活动图:准则
UML 活动图:准则
UML 活动图:准则
Visual Studio 2015
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 。在 Visual Studio 中,可以绘制活动图以按照由一系列操作构成的工作流的形式描述业务流程或软件算法。
用户、软件组件或设备可以执行这些操作。
有关视频演示,请参阅:。若要查看支持此功能的 Visual Studio 版本,请参阅。若要创建 UML 活动图,请在“体系结构”菜单上,单击“新建 UML 或层关系图”。可将活动图用于多种目的:描述用户与你的系统之间的业务流程或工作流。
有关详细信息,请参阅。描述某一用例中执行的步骤。
有关详细信息,请参阅。描述软件中的方法、函数或操作。
有关详细信息,请参阅。绘制活动图可以帮助你改进流程。
如果现有流程图经证实是非常复杂的,可以考虑如何简化这一流程。有关活动图中的元素的参考信息,请参阅 。如果绘制活动图来描述业务流程或用户使用系统的方式,则可以绘制用例图来显示相同信息的不同视图。
在用例图中,将操作绘制为用例。
为用例指定与对应的操作相同的名称。
用例视图可以为你带来以下好处:使用“包括”关系在一个关系图中显示较大操作/用例如何由较小操作/用例组成。将每个操作/用例显式连接到其执行过程中涉及的用户或外部系统。绘制由你的系统或系统的每个主要组件支持的操作/用例周围的边界。还可以绘制活动图来描述软件操作的详细设计。在活动图中,可以显示操作之间传递的数据流。
请参阅的相关部分。
但是,活动图不描述数据的结构。
为实现此目的,你可以绘制一个 UML 类图。
有关信息,请参阅 。中介绍了有关创建任何建模图的详细步骤。在“体系结构”菜单上,单击“新建 UML 或层关系图”。在“模板”下,单击“UML 活动图”。命名该关系图。在“添加到建模项目”中,从你的解决方案中选择一个现有建模项目,或者选择“创建新的建模项目”。将元素从工具箱中拖动到关系图上。首先将主要活动放置在关系图上,再将这些活动连接起来,然后添加最终的润饰(如初始节点和最终节点)。 说明
不能将现有元素从 UML 模型资源管理器拖动到关系图上。若要连接这些元素,请按以下步骤进行操作:在“活动图”工具箱中,单击“连接线”。在关系图上,单击源元素。单击目标元素。 说明
若要多次使用某个工具,请在工具箱中双击该工具。在“UML 模型资源管理器”中,将该活动拖动到另一个包中。- 或 -在“UML 模型资源管理器”中,右键单击该活动,然后单击“剪切”。
然后,右键单击该包,并单击“粘贴”。 说明
该活动仅在你将第一个元素添加到关系图中时显示在 UML 模型资源管理器中。活动图以一系列操作的形式描述业务流程或软件算法。
连接器箭头显示控制权如何按顺序从一个操作传递到下一个。
通常,一个操作只能在其前一个操作完成后开始。下图是一个示例,它描述如何使用操作、连接线、分支和循环演示一系列操作。
以下各节将更详细地描述每个元素。活动关系图使用“操作”和“连接线”以一系列操作(具有从一个操作到下一个操作的顺序控制流)的形式来描述你的系统或应用程序。为用户、系统或用户和系统协作执行的每个主要任务创建一个“操作”(1)。 说明
尝试只使用少量操作来描述流程或算法。
可以使用“调用行为的操作”来更详细地定义单独关系图中的每个操作,如中所述。确保每个操作的标题都清楚地表明操作的典型用途。使用“连接线”(2) 链接序列中的操作。每个操作都将在控制流中的下一个操作开始之前结束。
若要描述发生重叠的操作,请使用“分叉节点”,如一节中所述。虽然该关系图描述了操作序列,但它不描述操作的执行方法(即,将控制从一个操作传递到下一个操作的方式)。
如果使用该关系图来表示业务流程,则可能会传递控制,例如当一个人向他人发送电子邮件时。
如果使用该关系图来表示软件设计,则可能会通过从一个语句到下一个语句的常规执行流来传递控制。使用“决策节点”(3) 指示一个点,此时的决策结果指示下一个步骤。
可以绘制所需数目的传出路径。如果使用活动图来定义应用程序的一部分,则应定义临界条件 (4),从而清楚地知道何时应采用每条路径。
右键单击连接线,单击“属性”,然后在“属性”窗口中键入“临界条件”字段的值。并不总是需要定义临界条件。
例如,如果使用活动图来描述业务流程或交互协议,则分支会定义可供用户或交互组件使用的选项范围。使用“合并节点”(5) 将在“决策节点”处分叉的两个或多个替代流组合在一起。 说明
应使用“合并节点”将替代流组合在一起,而不是在某个操作中将替代流组合在一起。
在此示例中,从决策节点直接向后连接到“点菜”是不正确的。
这是因为操作在控制线程到达其所有传入连接线之前不会开始。
因此,只应在一个操作中组合并发流。
有关详细信息,请参阅。使用分支来描述循环,如示例中所示。 说明
像在程序代码中一样,尝试按照结构完整的方式嵌套循环。
如果描述的是现有业务流程,这样做可能会带来一些改进流程的机会。可以通过两种方式指示活动的入口点:初始节点创建一个“初始节点”(6),以指示活动的第一个操作。在描述子活动时或在无需显式声明启动活动的对象时,此方法最有用。
例如,活动“订餐”很明显会在顾客饥饿时启动。接受事件节点按照一节中所述创建“接受事件节点”,以指示启动一个线程来响应某个特定事件,如用户输入。
不要提供节点的传入流。
忽略传入流指示线程将在每次发生相应事件时启动。在描述对某个特定外部事件的响应时,此方法非常有用。使用“活动最终节点”(7) 指示活动的结束。当控制线程到达“活动最终节点”时,活动的所有并发操作和子活动都会终止。可以使用多个活动最终节点来减少其他连接线的混乱程度。若要描述如何中断活动的普通流(例如,如果用户决定取消流程),可以创建一个用于侦听该事件的接受事件节点。
有关详细信息,请参阅一节。
创建从一个节点到活动最终节点 (7) 的控制流。有时,将活动的多个操作安排到与执行这些操作的各个对象或业务角色相对应的区域中会很有用。
这些区域通常会按列排列,并且被称为泳道。使用工具箱的“简单形状”部分中的线条或矩形来绘制泳道或其他区域。若要标记每条泳道,请创建注释,并将其“透明”属性设置为“True”。简单形状不构成 UML 模型的一部分,并且不出现在 UML 模型资源管理器中。可以使用以下两种方式之一描述传入和传出活动的数据:使用“对象节点”。
这是描述活动之间的信息流动的最简单方法。
对象节点类似于程序中的变量。
它表示用于存储从一个操作传递到另一个操作的一个或多个值的项。使用“输出插针”和“输入插针”。
利用此方法,可以分别描述来自一个操作的输出和到另一个操作的输入。
插针类似于程序中的参数。
插针表示对象可通过其进入和离开一个操作的端口。 说明
有关本节中使用的元素的概述,请参阅主题中的“数据流”一节。大多数控制流都会传输数据。
例如,来自“客户提供详细信息”操作的输出流会传输对送货地址的引用。若要在关系图中描述此数据,可以将一条连接线替换为一个对象节点和两条连接线,如下图所示。请注意圆角矩形(例如“调度货物”)表示正在处理的操作。
方角矩形(如“送货地址”)表示从一个操作到另一个操作的对象流。为对象节点指定一个名称,此名称反映作为在操作之间流动的对象的管道或缓冲区的节点角色。可以在“属性”窗口中设置对象节点的“类型”。
类型可以是基元类型(如整型)或已在类图中定义的类、接口或枚举。
例如,你可以创建一个 Shipment Address 类,该类具有 Street Address、City 等特性以及与另一个名为 Customer 的类的关联。
有关详细信息,请参阅 。 说明
如果键入尚未定义的类型的名称,则会在 UML 模型资源管理器中的“未指定的类型”下添加一个项。
如果随后在类图中定义该名称的类型,则应重置对象节点的类型,以使其引用新的类型。一个对象节点可用作多个对象的缓冲区。
在下图中,控制流显示用户可以多次访问“[选择更多]”循环 (1),同时“已点的菜”对象节点 (2) 会累积用户的选择。
最后,当用户完成选择时,控制会传递到“确认订单”操作 (3),该操作接受“已点的菜”缓冲区中的完整的选项列表。通过设置对象节点的属性,可以指定各个项在缓冲区中的存储方式:将“排序”属性设置为:“未排序”可指定随机顺序或未指定的顺序。
(默认。)“已排序”可指定基于某个特定键的顺序。“FIFO”可指定先进先出的顺序。“LIFO”可指定后进先出的顺序。设置“上限”属性可指定缓冲区中可包含的对象的最大数量。
默认值为 *。
这表示不存在任何限制。使用“输出插针”和“输入插针”可分别描述来自一个操作的输出和到另一个操作的输入。若要创建插针,请单击工具箱中的“输入插针”或“输出插针”,然后单击一个操作。
然后,可以围绕此操作的周边移动插针,并更改其名称。
可以针对任何类型的操作创建输入和输出插针,包括“调用行为的操作”、“调用操作的操作”、“发送信号的操作”和“接受事件的操作”。两个插针之间的连接线表示一个对象流,如同流入和流出对象节点的流一样。为每个插针指定一个名称,该名称指示插针生成或接受的对象的角色,如参数名称。可以在“类型”属性中设置传输的对象的类型。
这必须是已在 UML 类图中创建的类型。已连接的插针之间的对象流必须在某些方面是兼容的。
这可能是因为输出插针所生成的对象属于输入插针的类型的派生类型。或者,可以指定对象流包括一个转换,以在输出插针的类型和输入插针的类型之间进行数据转换。
最常见的此类转换是从更大的类型中提取适当的部分。
图中的示例暗含从“订单详细信息”中提取“送货地址”的转换。除了通过操作名称来明确指明操作通常应实现的结果之外,还可以通过以下方式为操作添加更多详细信息:在“正文”属性中编写更详细的说明。
例如,可以编写程序代码或伪代码的片段,或编写所实现的结果的完整说明。将操作替换为调用行为的操作,并在单独的活动图中描述其详细行为。
请参阅。设置操作的“本地后置条件”和“本地前置条件”属性,以更详细地描述操作的结果。
有关详细信息,请参阅。可以使用单独的活动图来描述操作的详细行为。
被调用行为是一个活动图,它在主活动图中由调用行为的操作表示。
还可以使用调用行为的操作来描述在不同的活动之间共享的行为,从而无需多次绘制子活动。在下图中,关系图 1 显示具有调用行为的操作的活动;关系图 2 显示一个子活动图,其中显示了被调用行为。若要为子活动创建关系图,在“解决方案资源管理器”中右键单击建模项目,指向“添加”,然后单击“新建项”。在“添加新项”对话框中,单击“模板”下的“活动图”,并在“名称”框中键入计划为“调用行为的操作”指定的名称。为子活动绘制详细的工作流。
这是被调用的行为。在被调用的子活动图中,“初始节点”指示在调用被调用行为时控制开始的位置。
“活动最终节点”显示控制应返回到父活动的位置。设置“调用行为的操作”的“行为”属性,以引用被调用的行为图。 说明
子活动图中必须具有元素,否则该关系图将不会在“行为”属性的下拉列表中出现。
此外,在设置其“行为”属性之前,三叉戟图标将不会在“调用行为的操作”形状中出现。设置操作的“Is Synchronous”属性,以指示活动是否等待被调用的活动完成。如果将“Is Synchronous”设置为 False,则表示在被调用的活动完成之前,控制流可以继续执行下一个操作。
不应在操作中定义输出插针或传出数据流。可以按照在软件中使用参数的方式来描述流入和流出子活动的数据流。在被调用行为的操作中为流入或流出操作的每段数据创建输入插针和输出插针 (1)。
为每个插针指定适当的名称。在子活动图中,为调用操作中的每个输入插针和输出插针创建“活动参数节点”(2)。
为每个节点指定与其所对应的插针相同的名称。 说明
活动参数节点类似于对象节点。
要了解正在查看的节点的类型,请右键单击该节点,然后单击“属性”。
节点类型显示在“属性”窗口的标题中。在子活动图中绘制连接线,这些连接线将显示流入或流出每个活动参数节点的对象流。可以使用“本地后置条件”和“本地前置条件”属性来详细地指定操作的结果。
这些属性描述操作的结果,而不描述如何实现该结果。要设置这些属性,请右键单击该操作,然后单击“属性”。
在“属性”窗口中的相关属性中键入值。后置条件是指在将操作视为已完成之前应先满足的条件。
在示例操作“确认订单”中,后置条件可能为:客户提供了处理其信用卡所需的完整有效的详细信息。后置条件可以表示操作发生前后的状态之间的关系。
例如:利息与以前相比翻倍。可以通过引用操作中已处理的数据的特定特性,采用更为正式的方式来编写后置条件。
例如:InvoiceTotal == Sum(OrderItem.MenuItem.Price)前置条件是指在准备开始某个操作时应为 true 的条件。
例如,“确认订单”操作可能具有以下前置条件:客户已从菜单中选择至少一个菜。通常,操作描述的是由人员、软件或机器的任意组合来执行的工作。
但是,可以使用调用操作的操作来描述对特定软件的方法或函数的调用。设置调用操作的操作的名称以指示被调用的操作,以及被调用的操作所针对的对象或组件。向调用操作的操作中添加输入插针和输出插针,以描述参数和返回值。可以设置操作的“Is Synchronous”属性,以指示活动是否等待该操作完成。如果将“Is Synchronous”设置为 false,则表示在被调用操作完成之前,控制流可以继续执行下一个操作。
不应在操作中定义输出插针或传出数据流。可以使用“分叉节点”和“联接节点”来描述可同时执行的活动的两个或多个线程。“分叉节点”(1) 的作用是将控制线程划分为两个或多个线程。
当上一个操作结束时,分叉输出端的所有操作便可以开始。“联接节点”(2) 可将并发线程连接在一起。
在通向“联接节点”的所有操作完成之前,“联接节点”后面的操作无法开始。可以将流程中发送信号的步骤显示为活动中的发送信号的操作。
可以将需等待特定的信号或事件后才能继续执行的步骤显示为接受事件的操作。例如,可能显示一个发送订单的步骤,然后再显示另一个必须在收到订单后才处理订单的步骤。使用发送信号的操作 (3) 可指示将某类信号或消息发送到其他活动或流程。
使用此操作的名称可指示操作所发送的消息的类型。控制立即传递到控制流中的下一个操作(如果有)。不能使用发送信号的操作来描述流程如何响应任何返回的信息。
为此,请使用单独的接受事件的操作。可以显示传递到发送信号的操作的传入数据流,以指示可以将哪些数据与传出消息一起发送。
有关详细信息,请参阅。使用接受事件的操作 (4) 可指示此活动等待某些外部事件或传入消息。
使用此操作的名称可指示活动所等待的事件的类型。若要显示活动在流中某个特定点等待外部事件或消息,请在活动中的适当位置绘制带有传入流的接受事件的操作。若要显示活动可以随时响应外部事件或消息,请绘制不带任何传入流的接受事件的操作。
当发生指定的外部事件时,活动中将启动一个从接受事件的操作开始的新线程。不能使用接受事件的操作来描述返回给信号发送方的任何值。
为此,请使用单独的发送信号的操作。可以显示操作中的传出数据流,以演示活动如何处理通过信号收到的数据。
若要显示多个输出流,则应设置接受事件的操作的“IsUnmarshall”属性,此属性指示该操作将传入信号分析为其单独的组件。
有关详细信息,请参阅。可以绘制随操作出现的多个控制流或对象流,以指示在操作结束时多个线程将合并。
其效果与分叉类似,只不过你可以混合使用控制流和对象流。下面的示例显示流入和流出操作的多个流。当“客户提供详细信息”操作完成时,将会产生两个对象,即“送货地址”和“信用卡详细信息”。 将通过不同的操作来处理这两个对象。由于操作需要在其所有输入都可用后才能开始,因此最后一个操作在通向它的所有操作完成前不会开始。可以使用活动图来帮助你描述管道或同时执行的一系列操作,并连续地将数据从一个操作传递到另一个操作。以下示例旨在阐明每个操作都可以生成对象并继续工作。
由于没有控制流,因此每个操作在收到它的第一个对象时都会启动。请注意,此示例中的连接线都是对象流,因为这些连接线至少有一端位于活动参数节点、对象节点或输入插针/输出插针上。此示例具有三个活动参数节点,表示其输入和输出。对象节点、输入插针和输出插针都可以表示缓冲区。
可以设置对象节点的“上限”属性以指明可同时位于缓冲区中的对象数目。可以使用“决策”节点来显示分流,即将各个对象向下发送到不同的分支。
可以使用注释或节点标题来说明分流标准。可以使用“分叉”节点来显示为对象制作两个或更多副本,并发送它们以供并发处理。可以使用“联接”节点来显示将两个处理流合并成一个流。可以指定转换并/或选择的对象流中的对象。
对象流是流入或流出插针或对象节点的流。转换描述如何将进入流的对象转换为另一种类型。选择描述如何仅将进入流的某些对象传输到接收操作。该示例演示了一个转换。
关系图 1 中的第一个操作会在一个输出插针上生成一个邮政编码。
在第二个操作中,该输出插针会连接到一个输入插针。
不过,第二个操作需要的是完全指定的地址。
另一个活动“地址查找”中指定了从一个类型到另一个类型的转换。
此转换引用自对象流的“转换”属性。
“地址查找”活动包含两个活动参数节点,一个用于传入邮政编码,另一个用于传出完整地址。可以通过以下两种方式指定转换或选择:将注释附加到输入插针或输出插针。若要使此说明有别于一般注释,可以使用 &&transformation&& 或 &&selection&& 作为注释的开头。在单独的活动图中详细指定转换或选择。如果使用此方法,也请附加注释,以让读者明白已定义了转换。创建新的活动图,在其中描述转换或选择流。在“解决方案资源管理器”中,右键单击项目,指向“添加”,单击“新建项”,然后单击“活动图”。
针对转换或选择流,为此关系图指定一个适当的名称。
单击“添加”。在新的关系图中:创建两个活动参数节点,一个用于输入流,一个用于输出流。创建与对象流相互连接的操作。
这将显示转换或选择的工作方式。在要使用转换或选择的任何关系图中:创建一个对象流,即连接输入插针/输出插针、对象节点或活动参数节点的连接线。右键单击该对象流,然后单击“属性”。在“转换”或“选择”属性中,选择在其中指定了转换或选择流的关系图。此外,可以为对象节点定义选择,也可以在各个输入插针和输出插针上定义选择。
按照与上一个步骤相同的方式定义一个选择活动,然后设置对象节点或输入插针/输出插针的“选择”属性。
此页面有帮助吗?
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。

我要回帖

更多关于 程序框图在线绘制 的文章

 

随机推荐