一:关联关系(association)
关联关系是用一条直线表示的,它描述不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。这与依赖关系不同,依赖关系通常表示两个实例之间的临时关联关系。
我们可以使用关联关系表示一个对象了解其他对象,简单一点说,关联关系描述了某个对象在一段时间内一直“知道”另一个对象的存在。
二:依赖关系(dependency)
依赖关系是用一条带箭头的虚线表示的,它描述一个对象的修改会导致另一个对象的修改的关系。与关联关系不同的是,依赖关系除了“知道”其他对象的存在,还会“使用”其他对象的属性或方法。从这可看出依赖是一种特殊的关联关系。例如:
A对象保存了B对象的ID,但A对象对B对象没有操作,这时A仅仅是知道B“对象”,应当用关联关系;如果A对象使用了B对象的属性或方法,则B的修改会导致A的修改,这时A依赖于B.
三:扩展关系(extends)
扩展关系是用一条带箭头的虚线加版型《extends》它是可选的而不是必需的,这也就是说没有扩展用例,基本用例也是完整的;但没有基本用例,扩展用例是不能单独存在的。例如:在打电话时,如果在通话过程中收到另一个呼叫,我们可以将当前通话保留而接听另一个通话。在这个场景中,保留通话用例就是打电话用例的一个扩展用例。我们可以看到,是否需要保留通话取决于打电话人的决定,而不是必需,也就是说我们没有使用保留通话功能,也不影响打电话的完整性。
四:包含关系(include)包含关系是用一条带箭头的虚线加版型<<includd>>与扩展用例不同的是,包含用例表示的是“必需”,而不是”可选“,这意味着如果没有包含用例,基本用例是不完整的,同时如果没有基本用例,包含用例是不能单独存在的。
那我们来看个例子吧:去银行办理业务,不论是取钱,转账还是修改密码,我们都需要首先核对账号和密码,因此可以将核对账号作为上述业务用例的共有行为提取出来,形成一个包含用例。我们可以看到这个包含用例就有了可复用的意义,如果缺少了包含用例,取钱,转账等业务用例是不完整的,同时,核对账号也不能脱离开取钱,转账等业务用例而单独存在。
五:实现关系(realize)
实现关系是用一条带空心箭头的虚线表示的,它特别用于在用例模型中连接用例与用例实现,说明基本用例的一个实现方式。
其基本含义为:基本用例描述了一个业务目标,但是该业务目标有多种可能的实现途径,每一种实现途径可以用用例实现来表示,而用例实现与基本用例之间就构成了实现关系。
我们可以用交电话费来举例:
在交纳电话费中:可以有营业厅交费,银行交费,预存话费的三种实现该目标的用例实现。
六:泛化关系(generalization)也就是面向对象的继承,不用多说了就。
七:聚合关系(aggragation)
用一条带空心菱形箭头的直线表示从子到群;
聚合关系用于类图,表达整体由部分构成,如一个雁群是由很多个大雁构成的。
与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在。
如部门撤销以后,人员不会因此而消失,他们依然存在。
八:组合关系(composition)
组合关系是用一条带实心菱形箭头的直线表示的,箭头指向组合的子对象,表示子对象属于母对象。组合关系用于类图,特别用于表示实体对象关系,表达整体拥有部分的语义。例如母公司拥有许多子公司,组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也将消亡。