zoukankan      html  css  js  c++  java
  • UML常用关系

    转载自:http://justsee.iteye.com/blog/808799和http://www.uml.org.cn/oobject/201104212.asp

    关系(4种):泛化关系,实现关系,依赖关系,关联关系。其中关联关系又细分为:关联关系、聚合关系、组合关系。

    1.泛化(generalization)关系(空心三角形+实线)

    泛化(generalization)关系是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性。

    2.实现(realization)关系(空心三角形+虚线)

    指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识。

    3.依赖(dependency)关系(虚线+箭头)

    也是类与类之间的连接. 表示一个类依赖于另一个类的定义. 依赖关系总是单向的 。可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。
    在java 中. 依赖关系体现为: 局部变量, 方法中的参数, 和对静态方法的调用.


    4.关联(Association)关系(实线+箭头)

    对象之间交互时的一种引用关系,当一个对象通过对另一个对象的引用去使用另一个对象的方法时,两个对象便产生了关联,它使一个类知道另一个类的属性和方法,在java 语言中关联关系是使用实例变量实现的。如果是一对多,多的一方可能以集合形式出现。

    5.聚合(Aggregation)关系(空心四边形+实线+箭头)

    关联关系的一种特例, 是强的关联关系. 聚合是整体和个体之间的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;聚合关系也是使用实例变量实现的. 从java 语法上是分不出关联和聚合的. 关联关系中两个类是处于相同的层次, 而聚合关系中两不类是处于不平等的层次, 一个表示整体, 一个表示部分.

    6.组合(Composition)关系(实心四边形+实线+箭头)

    组合(合成)关系(composition): 也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;合成关系不能共享. 。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

    组合跟聚合几乎相同,唯一的区别就是“部分”不能脱离“整体”单独存在,就是说, “部分”的生命期不能比“整体”还要长。

  • 相关阅读:
    Java实现 LeetCode 30 串联所有单词的子串
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 27 移除元素
    字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
  • 原文地址:https://www.cnblogs.com/panning/p/5668668.html
Copyright © 2011-2022 走看看