UML 之 UML中的关系

关系(Relationships):表示基本图示符号之间的关系。


UML定义的关系主要有6种:依赖,泛化,实现,关联,聚合和组合。下面就依次向大家讲解一下这些关系:





关联(Association)
元素间的结构化关系,是一种弱关系,被关联的原始间通常可以被独立的考虑。
关联表示的是一种结构关系。它描述了一个事物与另外一个事物的对象之间的拥有关系。例如Library类和Book类之间具有一个一对多的关联关系,它表明一个Library可以有多个Book,但是一个Book仅仅只能被一个Library所拥有。在图形上,关联使用细的实线来表示。一般地,用细实线连接起来的两个类是双向导航的,也就是说可以从一个类导航到另一个类。举例来说,Person类和Company类就是双向导航的。但是,有时也可以将导航限制为单项的,例如User类和Password类——我们可以从User类导航到Password类,但是不能从Password类导航到User类。这种单向的导航关系,在图形上用带有箭头的实线来表示,箭头的方向表示导航的方向。


聚合(Aggregation)
关联关系的一种特列,表示部分和整体的关系。UML中通常用带空心菱形头的实线表示,菱形头指向整体。
聚合表示一种“has-a”的关系,暗示着较大的对象拥有着较小的对象,然后这种拥有关系不是那种一损俱损的强拥有关系,也就是说,“大对象”的生命期结束的时候,“小对象”的生命期并不受影响。举例来说,机场和飞机就是这种聚合关系。


组合(Composition)
组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。UML中用带实心菱形头的实线表示,菱形头指向整体。
组合关系是对聚合关系的加强,它说明大对象不仅仅拥有小对象,而且它们是一个整体,具有共同的生命期,一损俱损。例如链表和节点就是这种关系。


依赖(Dependency)
元素A的变化会影响B,但反之不成立,那么B和A是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。UML中用带箭头的虚线表示,箭头指向被依赖元素。
依赖是一种使用关系。它表示了一个事物的变化会影响到所有使用它的事物的行为。针对面向对象的“类”来说,如果一个类A使用另外一个类B作为其函数的参数,或者作为本地变量,那么就说A依赖于B。


泛化(Generalization)
通常所说的继承关系。UML中用带空心箭头的实线表示,箭头指向一般个体。
泛化是一种“is-a”的关系,它表示一般事物(父类)和该事物的更具体更特殊的类(子类)之间的一种关系。


实现(Realize)
元素A定义一个约定,元素B实现这个约定,则B和A的关系是实现,B realize A。这个关系最常用于接口。UML中用空心箭头和虚线表示,箭头指向定义约定的元素。
在类的实现关系中,一个类描述了另外一个类必须实现的契约,即接口。实现是一种和泛化、依赖都不痛的另外一种关系,但不可否认的是,实现和泛化、依赖有着千丝万缕的联系,它是泛化和依赖在语义上的接口:从某种程度上说,可以认为实现是一种泛化,也可以认为实现是一种依赖。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值