UML学习之用例图Use Case 上


博客地址:http://www.cnblogs.com/wolf-sun/

用例图中的各种关系

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

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

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

  • 包含关系(include)
  • 扩展关系(extend)

包含关系

        (1)  概念

        包含关系描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例。

       (2)表示符号<<include>>

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

 在代码中用例的包含关系是什么呢?

<span style="font-family:Microsoft YaHei;font-size:12px;">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;
        }
    }</span>
控制台程序
<span style="font-family:Microsoft YaHei;font-size:12px;">class Program
    {
        static void Main(string[] args)
        {
            coat myCoat = new coat("劲霸", 1000);
            Console.WriteLine("该外套的名称为:{0}", myCoat.name);
            Console.WriteLine("该外套的原价为:{0}", myCoat.price);
            myCoat.pay();
        }
    }</span>
用例图:


实例:图书管理系统

            图书管理员处理借书或者还书时的用例图,借书与还书都要考虑是否有overtime的书。


实例:订单管理系统

(3)使用场合

        a.如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中,其他用例可以和这个用例建立包含关系(如之前介绍的饮料自动售货机)。

        b.一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。(如学生管理系统的用例图)

实例:学生管理系统

(4)意义

       它有助于将来实现系统时,确定哪些功能可以重用,在编写代码时就可以实现代码的重用,缩短开发周期。

       注意:执行基用例时,每次都必须调用被包含用例。

扩展关系

     (1)概念

       用一个用例(可选)扩展另一个用例(基本例)的功能。

      (2)符号表示<<extend>>

代码中是什么?

<span style="font-family:Microsoft YaHei;font-size:12px;">class coat //外套
    {
        public string name;
        public float price;

        public coat(string myName,float myPrice)
        {
            name = myName;
            price = myPrice;
        }    
public void pay()
        {
            if (price > 800)
                discount(0.9f);
            Console.WriteLine("该件外套的应付款为:{0}",price);
        }

public void discount(float x)
        {
            price = price * x;
        }
}</span>
控制台程序

<span style="font-family:Microsoft YaHei;font-size:12px;">class Program
    {
        static void Main(string[] args)
        {
          coat myCoat=new coat ("劲霸",1000);
            Console.WriteLine("该外套的名称为:{0}",myCoat.name);
            Console.WriteLine("该外套的原价为:{0}",myCoat.price);
          myCoat.pay();
        }
    }</span>

用例图:

注意:扩展关系的箭头方向

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

怎么区分是包含关系还是扩展关系?

        通过上面的例子,怎么区分它们,你心里也有数了,其实在扩展关系中的使用场合也说明了,扩展关系的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。在使用的时候,你考虑这点就可以区分它们。

总结

     1.包含关系

        a.如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中,其他用例可以和这个用例建立包含关系(如之前介绍的饮料自动售货机)。

        b.一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。(如学生管理系统的用例图)

     2.扩展关系

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值