博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[UML]UML系列——用例图中的各种关系(include、extend)
阅读量:6348 次
发布时间:2019-06-22

本文共 2609 字,大约阅读时间需要 8 分钟。

用例图中的各种关系

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

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

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

  • 包含关系(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.扩展关系

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

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

      系列文章:

      

转载于:https://www.cnblogs.com/wolf-sun/p/3413072.html

你可能感兴趣的文章
java中三种注释及其实际应用的意义
查看>>
Emacs 24.2 for Mac OS X 最新版的 MAC Emacs 安装包
查看>>
让龙芯小本真正发挥作用-用8089D打造自己的Github服务器
查看>>
【三石jQuery视频教程】01.图片循环展示
查看>>
ngrok
查看>>
ThinkPHP 模板变量输出
查看>>
android系统信息(内存、cpu、sd卡、电量、版本)获取
查看>>
HTML5、WebKit与移动应用开发
查看>>
面google的试题,对google面试题的衍生推导
查看>>
Eclipse Debug Android Native Application
查看>>
java动态代理
查看>>
node.js原型继承
查看>>
揭露让Linux与Windows隔阂消失的奥秘(1)
查看>>
我的友情链接
查看>>
Mysql备份和恢复策略
查看>>
linux17-邮件服务器
查看>>
AS开发JNI步骤
查看>>
Android NDK开发:JNI基础篇
查看>>
使用Maven命令快速建立项目结构
查看>>
延迟加载(Lazyload)三种实现方式
查看>>