[UML]UML系列——用例图中的各种关系(include、extend)
用例图中的各种关系
一、参与者与用例间的关联关系
参与者与用例之间的通信,也成为关联或通信关系。

二、用例与用例之间的关系
- 包含关系(include)
- 扩展关系(extend)
包含关系
(1) 概念
包含关系描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例。
(2)表示符号<<include>>

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

在代码中用例的包含关系是什么呢?
class coat //外套
{
public string name;
public double price;
public coat(string myName, double myPrice)
{
name = myName;
price = myPrice;
}
public void pay()
{
discount();
Console.WriteLine("该件外套的应付款为:{0}", price);
}
public void discount()
{
price = price * 0.8;
}
}
控制台程序
class Program
{
static void Main(string[] args)
{
coat myCoat = new coat("劲霸", );
Console.WriteLine("该外套的名称为:{0}", myCoat.name);
Console.WriteLine("该外套的原价为:{0}", myCoat.price);
myCoat.pay();
}
}
用例图:
实例:图书管理系统
图书管理员处理借书或者还书时的用例图,借书与还书都要考虑是否有overtime的书。

实例:订单管理系统

(3)使用场合
a.如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中,其他用例可以和这个用例建立包含关系(如之前介绍的饮料自动售货机)。
b.一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。(如学生管理系统的用例图)
实例:学生管理系统

(4)意义
它有助于将来实现系统时,确定哪些功能可以重用,在编写代码时就可以实现代码的重用,缩短开发周期。
注意:执行基用例时,每次都必须调用被包含用例。
扩展关系
(1)概念
用一个用例(可选)扩展另一个用例(基本例)的功能。
(2)符号表示<<extend>>


代码中是什么?
class coat //外套
{
public string name;
public float price; public coat(string myName,float myPrice)
{
name = myName;
price = myPrice;
}
public void pay()
{
if (price > )
discount(0.9f);
Console.WriteLine("该件外套的应付款为:{0}",price);
} public void discount(float x)
{
price = price * x;
}
}
控制台程序
class Program
{
static void Main(string[] args)
{
coat myCoat=new coat ("劲霸",);
Console.WriteLine("该外套的名称为:{0}",myCoat.name);
Console.WriteLine("该外套的原价为:{0}",myCoat.price);
myCoat.pay();
}
}
用例图

注意:扩展关系的箭头方向
(3)使用场合
对扩展用例的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。
怎么区分是包含关系还是扩展关系?
通过上面的例子,怎么区分它们,你心里也有数了,其实在扩展关系中的使用场合也说明了,扩展关系的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。在使用的时候,你考虑这点就可以区分它们。
总结
1.包含关系
a.如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中,其他用例可以和这个用例建立包含关系(如之前介绍的饮料自动售货机)。
b.一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。(如学生管理系统的用例图)
2.扩展关系
对扩展用例的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。
在分析的时候,参考他们的使用场合,你就会豁然开朗......
系列文章:
[UML]UML系列——用例图中的各种关系(include、extend)的更多相关文章
- 【uml】之用例图中的关系 标签: uml图形 2014-11-23 11:10 1422人阅读 评论(29)
用例图显示谁是相关的用户,用户希望系统提供什么样的服务(用例),用例之间的关系图,用例图主要的作用是获取需求.指导测试.所以,用例图是站在用户的角度来画的图,应该体现的是用户想要的功能,并不需要体现如 ...
- UML指南系列——用例图
可以用用例来描述正在开发的系统想要实现的行为,而不必说明这些行为如何实现. 结构良好的用例只表示系统或者子系统的基本行为,而且既不过于笼统也不过于详细.
- [UML]UML系列——时序图(顺序图)sequence diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- [UML]UML系列——类图Class
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成 1.类图的概念 类图是描述类.接 ...
- [UML]UML系列——类图class的关联关系(聚合、组合)
关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...
- [UML]UML系列——类图class的依赖关系
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列—— ...
- [UML]UML系列——类图class的泛化关系
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图C ...
- [UML]UML系列——类图class的实现关系Realization
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class ...
- [UML]UML系列——包图Package
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class ...
随机推荐
- python paramiko 进行文件上传处理
#!/usr/bin/env python # -*- coding:utf-8 -*- import paramiko import uuid class Ha(object): def __ini ...
- Mac安装Windows 10的简明教程
每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...
- sql中毫秒数与格式化时间的转换
使用MYSQL自带的函数FROM_UNIXTIME(unix_timestamp,format). 如: SELECT FROM_UNIXTIME(1461201575895/1000,"% ...
- 【java开发】封装与继承
2.封装 把属性封起来(私有化private) 提供了一对公有(public)的方法(getter/setter)来对属性进行操作(读取和设置) 这样做以后可以对属性值的有效性进行判断,避免出现不合法 ...
- EF高级应用
UpdateSourceTrigger NumberTextbox 参考 Finally! Entity Framework working in fully disconne ...
- C#基础-事件 继承类无法直接引发基类的事件
An event can be raised only from the declaration space in which it is declared. Therefore, a class c ...
- 第一次打开Photoshop时的基本设置
1.自定义工作区,自定义快捷键: (1)PS备份自定义工作区文件: C:\Users\smyhvae\AppData\Roaming\Adobe\Adobe Photoshop CC 2015\Ado ...
- iOS Run_time
Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给他人一些启发,三为 希望得到 ...
- keyset获取元素
public static void main(String[] args){ Map map = new HashMap(); map.put("apple", "新鲜 ...
- One EEG preprocessing pipeline - EEG-fMRI paradigm
The preprocessing pipeline of EEG data from EEG-fMRI paradigm differs from that of regular EEG data, ...