uml中关系表示法

1、关联关系(association)
关联关系用一条直线表示,如A——B。它描述不同类之间的结构关系,在一定的时间内将多个类联系在一起。关联关系时一种静态关系,通常与运行状态无关,而是有一种强关联的关系联系在一起,如公民和身份证之间是一对一的关系。
和依赖关系不同的是依赖关系往往是一种临时的、动态关系。在代码实现时,关联的对象之间不会相互直接使用,一般通过外部对象的访问获取到信息。
在代码中,关联关系通常是以成员变量来实现的。关联关系一般不强调关联的方向,当A——B时,我们默认双方都知道对方的存在。如果强调关联的方向,A——>B,表示A知道B,但B不知道A。在代码中如果是无方向的,表示双方互相拥有对方的实例变量;如果是有方向的,表示A中有B,反之则无。
在用例模型中,单向关联用于连接参与者和用例,箭头由参与者指向用例,表示参与者知道用例的存在。
2、依赖关系(dependency)
依赖关系使用虚线表示A--->B。表示是一种临时的关系,通常在运行时产生,随着场景的变化,依赖关系可能随时变化,所以依赖关系时一种弱关系。
在代码中,依赖关系通常提醒在构造方法或类方法的参数。与关联关系相比,依赖关系除了临时知道对方的存在,还会用到对方的属性和方法。
依赖关系可以是相互依赖,用双箭头表示
3、扩展关系(extends)
扩展关系是带箭头的虚线的加强版,

在用例模型中说明向基本用例的某个扩展点插入扩展用例。
扩展用例往往是可选的,不是必须的,也就是说没有扩展用例,基本用例也是完整的,但是扩展用例不能单独存在。
例如打电话时,又接到另一个电话,这是可以是用呼叫保留,但是呼叫保留功能不是必须的,是可选的。
4、包含关系(include)
包含关系也是使用带箭头的虚线加强版

包含用例总是带有抽象性质的,基本用例可以控制与包含用例的关系,并可依赖于执行包含用例所得的结果,但基本用例和包含用例都不能访问对方的属性。
包含用例通常是必需的,而不是可选的。也就是说没有包含用例,基本用例往往是不完整的,同时没有基本用例,包含用例不能单独存在。
5、实现关系(realize)
实现关系使用带空间头的虚线表示

在用例模型中连接用例和用例实现,说明基本用例的一个实现方法
实现所代表的含义是,基本用例描述了一个业务目标,但是该业务目标有多重实现途径,每一种都可以用用例实现来表示。用例实现就可基本用例构成了实现关系。
6、精化关系(refine)
精化关系使用一条带箭头的虚线加强版来表示

在用例模型中,基本示例可以分解出更多小的关键精化用例,精化用例更细致的展示了基本用例的核心业务。精化关系用来连接精化用例和基本用例,说明精化用例是由基本用例演进来的。
精化关系仅仅用在建模阶段,在代码实现时,没有精化这一语义的,泛化则等同于extend 语句。
7、泛化关系(generalization)
泛化使用空心箭头的直线表示

泛化表示两个对象的继承关系,表示从后代到祖先类的关系。

8、聚合关系(aggregation)
聚合关系使用空心菱形箭头的直线表示

聚合用于类图,主要表示实体对象的关系,表示整体有部分组成,上图就表示B由A组成。但是与组合不同的是,整体和部分不是强依赖关系,即使整体不存在了,部分仍然存在。

9、组合关系(composition)
组合关系用一条带实心菱形的直线表示,

A组成)
组合用于类图,表示实体对象的关系,表达整体拥有部分的意思。例如母公司拥有许多子公司。组合是一种强依赖的聚合关系,如果整体不存在了,部分也将消亡。

白发渔樵

白发渔樵

发表评论

电子邮件地址不会被公开。 必填项已用*标注