当前位置: 首页 > 编程日记 > 正文

[UML]UML系列——用例图中的各种关系(include、extend)

[UML]UML系列——用例图中的各种关系(include、extend)
原文:[UML]UML系列——用例图中的各种关系(include、extend)

用例图中的各种关系

一、参与者与用例间的关联关系

参与者与用例之间的通信,也成为关联或通信关系。

二、用例与用例之间的关系

  • 包含关系(include)
  • 扩展关系(extend)

包含关系

(1)  概念

包含关系描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例。

(2)表示符号<<include>>

再如上篇文章中饮料自动售货机的例子:

在代码中用例的包含关系是什么呢?

 1  class coat //外套
 2     {
 3         public string name;
 4         public double price;
 5         public coat(string myName, double myPrice)
 6         {
 7             name = myName;
 8             price = myPrice;
 9         }
10         public void pay()
11         {
12             discount();
13             Console.WriteLine("该件外套的应付款为:{0}", price);
14         }
15         public void discount()
16         {
17             price = price * 0.8;
18         }
19     }

控制台程序

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             coat myCoat = new coat("劲霸", 1000);
 6             Console.WriteLine("该外套的名称为:{0}", myCoat.name);
 7             Console.WriteLine("该外套的原价为:{0}", myCoat.price);
 8             myCoat.pay();
 9         }
10     }

用例图:

 实例:图书管理系统

图书管理员处理借书或者还书时的用例图,借书与还书都要考虑是否有overtime的书。

实例:订单管理系统

(3)使用场合

a.如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中,其他用例可以和这个用例建立包含关系(如之前介绍的饮料自动售货机)。

b.一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。(如学生管理系统的用例图)

实例:学生管理系统

(4)意义

它有助于将来实现系统时,确定哪些功能可以重用,在编写代码时就可以实现代码的重用,缩短开发周期。

注意:执行基用例时,每次都必须调用被包含用例。

扩展关系

(1)概念

用一个用例(可选)扩展另一个用例(基本例)的功能。

(2)符号表示<<extend>>


        代码中是什么?

 1 class coat //外套
 2     {
 3         public string name;
 4         public float price;
 5 
 6         public coat(string myName,float myPrice)
 7         {
 8             name = myName;
 9             price = myPrice;
10         }    
11 public void pay()
12         {
13             if (price > 800)
14                 discount(0.9f);
15             Console.WriteLine("该件外套的应付款为:{0}",price);
16         }
17 
18 public void discount(float x)
19         {
20             price = price * x;
21         }
22 }

控制台程序

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5           coat myCoat=new coat ("劲霸",1000);
 6             Console.WriteLine("该外套的名称为:{0}",myCoat.name);
 7             Console.WriteLine("该外套的原价为:{0}",myCoat.price);
 8           myCoat.pay();
 9         }
10     }

用例图

注意:扩展关系的箭头方向

(3)使用场合
        对扩展用例的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。

怎么区分是包含关系还是扩展关系?

通过上面的例子,怎么区分它们,你心里也有数了,其实在扩展关系中的使用场合也说明了,扩展关系的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。在使用的时候,你考虑这点就可以区分它们。

总结

1.包含关系

a.如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中,其他用例可以和这个用例建立包含关系(如之前介绍的饮料自动售货机)。

b.一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。(如学生管理系统的用例图)

2.扩展关系

对扩展用例的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。

在分析的时候,参考他们的使用场合,你就会豁然开朗......

系列文章:

  [UML]UML系列——用例图Use Case

posted on 2014-03-14 22:00 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3601374.html

相关文章:

熬夜写了一个小游戏,向SpaceX聊表敬意

2019独角兽企业重金招聘Python工程师标准>>> 这是我长久放在桌面上的一张图片。 这张照片的名字叫做 Pale Blue Dot&#xff08;暗淡蓝点&#xff09;&#xff0c;是旅行者1号在距地球64亿公里回望太阳系时所拍下的。照片右侧中部有一个隐约可见的小蓝点&#xff0c…

【转】Linux Oracle服务启动停止脚本与开机自启动

在CentOS 6.3下安装完Oracle 10g R2&#xff0c;重开机之后&#xff0c;你会发现Oracle没有自行启动&#xff0c;这是正常的&#xff0c;因为在Linux下安装Oracle的确不会自行启动&#xff0c;必须要自行设置相关参数&#xff0c;首先先介绍一般而言如何启动oracle。 一、在Lin…

ASP.Net中MD5加密-16位32位

publicstringmd5(stringstr,intcode){if(code16) //16位MD5加密&#xff08;取32位加密的9~25字符&#xff09;{return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;} else//32位加密{retur…

PL/SQL编程:将两个数进行交换的存储过程

创建过程exchangeTwo 调用过程enchangeTwo

WCF之多个终结点

1.服务端配置如下&#xff08;一个Service节点下可有多个endpoint,&#xff09;&#xff1a; 1 1<system.serviceModel>2 2 <services>3 3 <service name"Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration"returnFaul…

YAML 语言入门教程

2019独角兽企业重金招聘Python工程师标准>>> YAML简介 另一种标记语言&#xff08;Yet Another Markup Language&#xff09; YAML&#xff08;英语发音&#xff1a;/ˈjməl/&#xff0c;尾音类似camel骆驼&#xff09;是一个可读性高&#xff0c;用来表达资料序列…

我翻译的一篇文章,OO设计中对象的创建和使用

OO设计中对象的创建和使用 转载于:https://www.cnblogs.com/lishu1980/archive/2006/06/22/432526.html

SQL Server Profiler工具

SQL Server Profiler工具 原文:SQL Server Profiler工具一、SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程&#xff0c;其作用如下&#xff1a; 图形化监视SQL Server查询&#xff1b;在后台收集查询信息&#xff1b;分析性能&#xff1b;诊断像死锁之类…

Nginx—核心配置location匹配规则说明

2019独角兽企业重金招聘Python工程师标准>>> location介绍 location指令是Nginx中最核心的一项配置&#xff0c;根据预先定义的URL匹配规则来接收用户发送的请求&#xff0c;根据匹配结果&#xff0c;将请求转发到后台服务器、非法的请求直接拒绝并返回403&#xff…

Windows Live Messenger  正式版已经发布

Windows Live Messenger 正式版已经发布!这是新一代的 Messenger。它拥有全新的名字&#xff0c;可以免费下载。并且除了延续使用原 Messenger 的全部功能外&#xff0c;它还提供了几种出色的全新交流方式&#xff0c;实现与朋友的即时共享和交流。转载于:https://www.cnblogs.…

关闭ubuntu启动时System Program Problem Detected提示

修改vi /etc/default/apport 将其值设置1-->0转载于:https://www.cnblogs.com/snail-micheal/p/3607969.html

C++开源跨平台类库集

在如下的库支持下&#xff0c;开发的系统可以很方便移植到当前大部分平台上运行而无需改动&#xff0c;只需在对应的平台下 用你喜欢的编译器 重新编译即可 经典的C库 STLport-------SGI STL库的跨平台可移植版本&#xff0c;在以前有些编译器离符合 标准比较远的情况…

僵尸进程和孤儿进程

一 . 僵尸进程: 子进程退出&#xff0c;父进程没有回收子进程资源&#xff08;PCB&#xff09;&#xff0c;则子进程变成僵尸进程 处理僵尸进程的方法&#xff1a;wait 和 waitpid 调用wait和waitpid不仅可以获得子进程的终止信息&#xff0c;还可以使父进程阻塞等待子进程终止…

Castle ActiveRecord(一)概述

一、ActiveRecord与Castle ActiveRecordActiveRecord是《Patterns of Enterprise Application Architecture》中描述的著名模式。基本上&#xff0c;当实例每一行的时候&#xff0c;所有的静态方法会作用于全部纪录。 Castle ActiveRecord 是ActiveRecord 模式的一个实现&am…

一步步学习SPD2010--第十一章节--处理母版页(8)--从母版页创建网页

一步步学习SPD2010--第十一章节--处理母版页&#xff08;8&#xff09;--从母版页创建网页 在SPD中&#xff0c;你可以使用许多不同的方法创建ASP.NET页面。然而&#xff0c;因为页面将是SP网站的一部分&#xff0c;你很可能想像其他页面一样&#xff0c;保持相同的导航元素和外…

Confluence 6 查看空间活动

空间活动信息是默认禁用&#xff08;disabled by default&#xff09;的。活动&#xff08;Activity&#xff09;的标没有显示&#xff0c;如果你的 Confluence Usage Stats 插件没有启用的。请查看下面的说明&#xff1a; 如果启用的话&#xff0c;空间活动界面显示了每一个空…

flash模拟EEROM

FLASH中&#xff1a;0x08000000--0x08000000SIZE保存的是用户代码 Rule&#xff1a; 16位为传输单位 读数据&#xff1a; u16 STMFLASH_ReadHalfWord(u32 faddr) 可以在通用地址空间直接寻址&#xff1a;data*(vu16*)ADDR;[ADDR为32位数据&#xff0c;指向的数据为uv16型]写数据…

OSChina 周六乱弹 —— 就少个接吻的女友了

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2018&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 andonny &#xff1a;分享Mamas & The Papas的单曲《California Dreaming》 《California Dreaming》- Mamas & The …

存儲過程解密SQL

存儲過程解密SQLif exists (select * from dbo.sysobjects where id object_id(N[dbo].[sp_decrypt]) and OBJECTPROPERTY(id, NIsProcedure) 1)drop procedure [dbo].[sp_decrypt]GO /*--破解函數,視圖,程儲過程,触發器,限于SQLSERVER2000 --作者:J9988--*//*--使用示例 --解…

软件缺陷生命周期图示及当中涉及到的缺陷的状态

缺陷状态&#xff1a; 激活/打开 已修正 已关闭/非激活 重新打开(对应图示验证通过否N) 推迟(对应图示的延期) 保留(对应图示无法解决) 不能重现 需要更多信息

Adding a QR Code Reader in Flex on Android

<?xml version"1.0" encoding"utf-8"?> <s:View xmlns:fx"http://ns.adobe.com/mxml/2009" xmlns:mx"library://ns.adobe.com/flex/mx"xmlns:s"library://ns.adobe.com/flex/spark" title"HomeView"&g…

41-高级路由:BGP AS长度:接收一切、最大AS长度、不比较AS长度

一、实验拓扑&#xff1a;二、实验要求&#xff1a;1、R4配置同上个实验&#xff1b;2、R3配置接收的路由包含最大AS长度为4&#xff1b;3、R3配置隐藏命令&#xff0c;不比较AS长度&#xff1b;4、R5配置不管收到的路由有没有包含本地AS都收入&#xff08;之前R4已经配置了4.4…

利用动态加载模板,配合ajax实现无刷新操作

关键字&#xff1a;DataGrid 动态模板 Ajax我们使用ajax实现无刷新界面时&#xff0c;对于DataGrid&#xff0c;Repeater等列表还是比较麻烦的&#xff0c;经过我的尝试&#xff0c;找出一种比较合理的方法&#xff0c;可以免除对html的加工处理&#xff0c;随时获取到数据列表…

如何利用业余时间提升自己

1、要找到心动的目标 先要找到自己如果提升哪一方面的能力&#xff0c;能够对自己的工作有较大的贡献 找到你想成为的人 你从他身上找到你想拥有的技能 你喜欢某个人的身上的某种行为表现 也是你的榜样 或者从你的爱好着手发现你在爱好中能够得到提升的点 我想发展的工作技能是…