用例图中的各种关系

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

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

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

  • 包含关系(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系列——用例图Use Case

[UML]UML系列——用例图中的各种关系(include、extend)的更多相关文章

  1. 【uml】之用例图中的关系 标签: uml图形 2014-11-23 11:10 1422人阅读 评论(29)

    用例图显示谁是相关的用户,用户希望系统提供什么样的服务(用例),用例之间的关系图,用例图主要的作用是获取需求.指导测试.所以,用例图是站在用户的角度来画的图,应该体现的是用户想要的功能,并不需要体现如 ...

  2. UML指南系列——用例图

    可以用用例来描述正在开发的系统想要实现的行为,而不必说明这些行为如何实现. 结构良好的用例只表示系统或者子系统的基本行为,而且既不过于笼统也不过于详细.

  3. [UML]UML系列——时序图(顺序图)sequence diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  4. [UML]UML系列——类图Class

    相关文章       [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成 1.类图的概念 类图是描述类.接 ...

  5. [UML]UML系列——类图class的关联关系(聚合、组合)

    关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...

  6. [UML]UML系列——类图class的依赖关系

    相关文章          [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列—— ...

  7. [UML]UML系列——类图class的泛化关系

    系列文章       [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图C ...

  8. [UML]UML系列——类图class的实现关系Realization

    系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图Class   ...

  9. [UML]UML系列——包图Package

    系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图Class   ...

随机推荐

  1. cnless.sh:改进版less,可自动识别GBK编码或UTF-8编码。

    #!/bin/bash #功能:让GBK编码的文件可以使用less正常显示中文(自动识别GBK和UTF-8编码) #v0. 在LINUX下,使用UTF-8编码,less UTF-8的文件时显示中文正常 ...

  2. CentOS 7安装JDK

    一.卸载系统自带的openjdk 1.查询系统内置的jdk,使用命令如下: rpm -qa | grep java 此时会列出系统中存在的jdk,如果存在就进行卸载,不存在就直接进行安装. 2.进行卸 ...

  3. NYOJ 205

    大数取模算法: 这个又不同于幂取模算法,对于几百万位的数字取模,直接的方法是行不通的.最好利用数论的知识 (a*b)%c = ((a%c)*b)%c ;利用这个公式我们只要从n的一次方开始不断计算,乘 ...

  4. Unity Mono脚本 加密

    加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源 ...

  5. thinkphp

    U方法: 模板导入后,先在浏览器执行index.php文件,当出现下图时,框架中的内容才可以出现. 增加admin后台文件夹: 连接数据库:可以使用pdo的方式连接

  6. [No000088]并行循环vs普通循环

    using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks ...

  7. IEnumerable,IQueryable之前世今生

    来自于:http://www.cnblogs.com/chengxiaohui/articles/2088967.html IEnumerable<T>在.Net2.0中我们已经很熟悉了. ...

  8. Nginx编译参数.md

    Nginx 介绍 简介 Nginx(发音同engine x)是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存. ...

  9. 软件工程导论-目录-K-T+RJ大

    目录 10 第1章 软件工程学概述/1 19 1.1 软件危机/1 19 1.1.1 软件危机的介绍/1 19 1.1.2 产生软件危机的原因/3 21 1.1.3 消除软件危机的途径/4 22 1. ...

  10. JQUERY获取当前页面的URL信息

    以前在做网站的时候,经常会遇到当前页的分类高亮显示,以便让用户了解当前处于哪个页面.之前一直是在每个不 同页面写方法.工程量大,也不便于修改.一直在想有什么简便的方法实现.后来在网上查到可以用获取当前 ...