您的位置:首页 > 其它

UML中的关系

2016-12-02 14:37 190 查看
最近一直在学习画UML的九种图,下面对在画UML图时常用到的关系进行简单的介绍。



1.关联关系:

结构化的关系,一种对象和另一种对象有联系。给定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关对象。

(1)聚合:表示类与类之间的关系是整体与部分的关系

(2)组合:在聚合关系之上的更紧密的耦合关系,同样描述元素之间部分与整体的关系,但是组合关系中部分类需要整体类才能存在

2.依赖关系:

描述两个模型元素之间的语义关系:其中一个模型元素是独立的,另一个不是独立的,它依赖于独立的,如果独立模型元素改变,将影响依赖于它的元素

3.泛化关系:

定义一般元素和特殊元素之间的分类关系

(1)普通泛化:没有给泛化添加任何约束

(2)受限泛化:给泛化附加约束条件,说明该泛化的使用方法或扩充方法。预定义的约束:多重、不相交、完全、不完全

4.实现关系:

将一种模型元素(如类)与另一种模型元素(接口)连接起来,其中接口只是行为的说明而不是结构或实现。真正的实现由前一个模型元素来完成。

使用情况:在接口和实现它们的类或构件之间

在用例和实现它们的协作之间

5、下面补充说一下泛化关系、包含关系、扩展关系:



这三种关系都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。

包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。如下:

泛化侧重表示子用例间的互斥性;

包含侧重表示被包含用例对Actor提供服务的间接性;

扩展侧重表示扩展用例的触发不定性;详述如下:

既然用例是系统提供服务的UML表述,那么服务这个过程在所有用例场景中是必然发生的,但发生按照发生条件可分为如下两种情况:

⒈无条件发生:肯定发生的;

⒉有条件发生:未必发生,发生与否取决于系统状态;

因此,针对用例的三种关系结合系统状态考虑,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。进一步,用例的存在是为Actor提供服 务,但用例提供服务的方式可分为间接和直接两种,依据于此,泛化中的子用例提供的是直接服务,而包含中的被包含用例提供的是间接服务。同样,扩展用例提供的也是直接服务,但扩展用例的发生是有条件的。

另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: