本文和大家重点讨论一下UML依赖关系,在学习UML的过程中,你经常会遇到UML关系问题,你对此是否了解,这里和大家分享一下UML依赖关系,希望本文的介绍对你学习UML有帮助。
UML学习笔记——依赖关系
UML依赖关系的特征
对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间主要体现为依赖关系,例如生产零件的机器和零件,机器负责构造零件对象。再例如充电电池和充电器,充电电池通过充电器来充电。再例如自行车Bicycle和打气筒Pump,自行车通过打气筒来充气。图1-39为Bicycle类与Pump类的类框图。
图1-39Bicycle类与Pump类的依赖关系
Bicycle类和Pump类之间是UML依赖关系,在Bicycle类中无需定义Pump类型的变量。Bicycle类的定义如下:
- publicclassBicycle{
- /**给轮胎充气*/
- publicvoidexpand(Pumppump){
- pump.blow();
- }
- }
在现时生活中,通常不会为某一辆自行车配备专门的打气筒,而是在需要充气的时候,从附近某个修车棚里借个打气筒打气。在程序代码中,表现为Bicycle类的expand()方法有个Pump类型的参数。以下程序代码表示某辆自行车先后到两个修车棚里充气:
myBicycle.expand(pumpFromRepairShed1);//到***个修车棚里充气
myBicycle.expand(pumpFromRepairShed2);//若干天后,到第二个修车棚里充气
UML依赖关系使用注意事项
1.对存在依赖关系的两个类生成代码时,并不对关系的类增加属性。但产生支持关系所需的特定语句。在C++中,生成代码中会包括必要的#include语句。
例如类A依赖于类B,类A没有B属性,因此要用其他方法查找B。有三种方法:
如果B是全局的,则类A知道它存在。
如果B实例化为类A操作中的本地变量,则类A知道它存在。
如果B作为参数传递到类A中,则类A知道它存在。
在依赖关系中,必须采用这三种方法之一。
关联于UML依赖的第二个差别在于方向,关联可以是双向的,而依赖只能是单向的。
2.包之间同样存在依赖性。例如包A依赖于包B。则不能直接在另一个应用程序中复用A包,而要同时复用B包。而B包更容易复用,因为它没有依赖于其他包。
要确定包依赖性关系,就要检查Class框图中的关系。如果不同包中的类之间有关系,则包也有关系。
生成包依赖关系时,要尽量避免循环依赖性。要避免循环依赖,可以把一个包一分为二。
【编辑推荐】