zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    关于 php json float 出现很多位的问题
    做 Excel 的 XML schema.xsd
    笔记:Python 默认参数必须指向不变对象
    Bartender 使用 Excel xlsx 数据库时出现 0x800A0E7A
    Javascript 中 的 for ... in 和 for ... of 差别
    关于跨域资料收集 (2019-01-11)
    ThinkPHP3 和 ThinkPHP5 不是一个团队做的
    记录一下:给电推剪改锂电池
    为你的Web程序加个启动画面
    前端不为人知的一面--前端冷知识集锦 前端已经被玩儿坏了!像console.log()可以向控制台输出图片
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/3413072.html
Copyright © 2011-2022 走看看