[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
转载于:https://www.cnblogs.com/lonelyxmas/p/3601374.html
[UML]UML系列——用例图中的各种关系(include、extend)相关推荐
- UML图系列——用例图
UML图系列文章目录 UML图系列--UML概要 UML图系列--建模和面向对象 UML图系列--UML模型图的构成 经过前面几篇文章的概念介绍后,今天来介绍UML 13种 图中的第一种用例图 用例图 ...
- [UML]UML系列——包图Package
系列文章 [UML]UML系列--用例图Use Case [UML]UML系列--用例图中的各种关系(include.extend) [UML]UML系列--类图Class ...
- [UML]UML系列——类图class的关联关系(聚合、组合)
关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...
- [UML]UML系列——状态机图statechart diagram
[UML]UML系列--状态机图statechart diagram 原文:[UML]UML系列--状态机图statechart diagram 系列文章 [UML]UML系列--用例图Use Cas ...
- [UML]UML系列——时序图(顺序图)sequence diagram
原文:[UML]UML系列--时序图(顺序图)sequence diagram 系列文章 [UML]UML系列--用例图Use Case [UML]UML系列--用例图中的各种关系(include.e ...
- [UML]UML系列——用例图Use Case
原文:[UML]UML系列--用例图Use Case 用例图的概念 用例图是描述用例.参与者以及它们之间关系的图. 用例图的作用 用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为. 用 ...
- UML建模之用例图(重点讲extend和include关系)
用例图(Use Case Diagram)是整个UML9种图中最基础.最重要的一种图.为什么说它重要呢?因为用例图描述的是待开发系统的功能需求,这些功能需求是UML其它几种视图的依据和基础,其它几种图 ...
- 用例图包含关系、扩展关系、泛化关系解析
一.用例图中的各种关系 a)参与者与用例间的关联关系:参与者与用例之间的通信,也成为关联或通信关系. b)用例与用例之间的关系:包含关系(include).扩展关系(extend).泛化关系. 1.包 ...
- uml里的extend和include_解析UML用例图中include与extend的区别
本文和大家重点讨论一下UML用例图中include与extend的区别,include是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分,而extend则恰好相反.下面请看本文详细介 ...
最新文章
- 调用本地html_requests-html:最简单的爬虫框架,看完你就会了
- python编程入门p-测试代码的练习——python编程从入门到实践
- 阿里巴巴Druid数据源,史上最强的数据源,没有之一
- python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python 30760 python pandas dataframe
- 计算机应用基础2016高起专,计算机应用基础-2016年秋季《计算机应用基础(高起专)》期末考核(20210407163441).pdf...
- 炼油机出来的什么油_小型精炼油设备10来万一套供不应求,油作坊提高油品质量才有出路...
- 扫雷程序设计 python_端口扫描
- element ui html编辑器,Vue + Element UI使用富文本编辑器
- c# 实现图片转双层PDF,PDF转OFD格式文件
- 鸿蒙太空是什么意思,我所居兮,青埂之峰:我所游兮,鸿蒙太空,谁与我逝兮,吾谁与从?渺渺茫茫兮归彼大荒!什么意思?求解...
- ubuntu16.04下运行Drcom客户端
- 苹果状态栏HTML,webview内嵌的html页面,在ios系统上12以上版本和12以下版本状态栏效果不一样...
- 阿里云天池SQL训练营学习记录
- 阿里云服务器esc第一弹,新手教程,过程详细哦
- java 24字母_java 时间格式化中的模式字母
- C++ 之重定义问题
- 渝北统景碑口规划开发_统景风景区旅游镇总体规划(2011—2030)说明书
- DP之钢管切割,最长回文字符串,最长公共子串
- React 自定义表单实现
- thinkjs-redis配置问题
热门文章
- video怎么重新加载 vue_vue.js中vue-video-player中的怎么插入多个视频,视频可以同时播放的问题及解决办法...
- java 斐波拉_Java实现斐波那契数列
- mysql2008 limit,在SQL Server中实现 Limit m, n 的功能
- nodejs ld linux.so,请教大神,如何在独立虚拟主机上配置node.js开发环境?
- mysql8.0安装无法设置密码_安装mysql8.0.16初步设置密码时候遇到的问题
- html 可调节进度条控件,jQuery简单实用的轻量级进度条插件
- mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息
- python基础--urllib
- TensorFlow实现一元线性模型
- 华数机器人码垛_冲压机器人研究现状与发展方向