用例图中的各种关系

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

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

798b3a46820cc538b347650a76f5b275.png

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

包含关系(include)

扩展关系(extend)

包含关系

(1)  概念

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

(2)表示符号<>

f9c79a8ba91ac4d4b390dae086df0cd9.png

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

2606d77c7cf448fd8f58f46ce91f9e86.png

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

69c5a8ac3fa60e0848d784a6dd461da6.png

1 class coat //外套

2 {3 public stringname;4 public doubleprice;5 public coat(string myName, doublemyPrice)6 {7 name =myName;8 price =myPrice;9 }10 public voidpay()11 {12 discount();13 Console.WriteLine("该件外套的应付款为:{0}", price);14 }15 public voiddiscount()16 {17 price = price * 0.8;18 }19 }

69c5a8ac3fa60e0848d784a6dd461da6.png

控制台程序

69c5a8ac3fa60e0848d784a6dd461da6.png

1 classProgram2 {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 }

69c5a8ac3fa60e0848d784a6dd461da6.png

用例图:

7f9f757446cebba2b1c030fb46a7adc3.png

实例:图书管理系统

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

be33f36c74f145a1502291523dbad432.png

实例:订单管理系统

934737f1c408b04300fb714cc124cad5.png

(3)使用场合

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

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

实例:学生管理系统

b3d831367caef8cab52c09b7983b3d90.png

(4)意义

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

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

扩展关系

(1)概念

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

(2)符号表示<>

1181b25bc42aa56c61e5a30df120143c.png

0c4a22200fc4eb96940196bc4527f937.png

代码中是什么?

69c5a8ac3fa60e0848d784a6dd461da6.png

1 class coat //外套

2 {3 public stringname;4 public floatprice;5

6 public coat(string myName,floatmyPrice)7 {8 name =myName;9 price =myPrice;10 }11 public voidpay()12 {13 if (price > 800)14 discount(0.9f);15 Console.WriteLine("该件外套的应付款为:{0}",price);16 }17

18 public void discount(floatx)19 {20 price = price *x;21 }22 }

69c5a8ac3fa60e0848d784a6dd461da6.png

控制台程序

69c5a8ac3fa60e0848d784a6dd461da6.png

1 classProgram2 {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 }

69c5a8ac3fa60e0848d784a6dd461da6.png

用例图

f690a5369e96014179cf7b0c569a081f.png

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

(3)使用场合

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

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

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

总结

1.包含关系

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

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

2.扩展关系

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

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

系列文章:

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐