UML的各种关系理解

  • 泛化关系(generalization)(IS A)
    • 解释:就是继承关系,继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系:(..是..)
    • eg:IPhone5s 的类 is a IPhone5 的类 ,从哲学的角度上讲,IPhone5s类就是iPhone5类--因为它可以实在iPhone5 的类上修改而产生的,对比5而言5s只有功能的修改或者增加,并没有减少。因为5的类是有具体实现(非抽象类),5s也是有具体实现(非抽象类)的所以就叫继承
      同理,如果5类 和5s类都是抽象类,那也是可以称为继承的,要不就就成了实现了。【抽象到抽象,具体到具体】
    • 类图:
  • 实现关系(realize)(IS A)
    • 解释: 和泛化关系(generalization)几乎一致,区别说就是 一个继承抽象类(abstract ,interface),一个继承具体类
    • eg:iPhone 类 和 iPhone 5 的类 的关系 iPhone 类是没有具体实现的,是一个抽象类,一个抽象的概念【抽象到具体】
    • 类图:
  • 聚合关系(aggregation)(has-a)
    • 解释:就是由某某组成的关系,聚合关系的两个类处于不同的层次,一个是整体,一个是部分。而且各个组成部分脱离整体也是可以存在的,整体和部分的生命周期是独立的。如果有联系产生那就是Composition(组合)关系了。代码上的体现:如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

    • eg: 部门和员工,当部门解散后,员工的生命周期是不会随着部门的生命周期的结束而结束。
    • 类图:

  • 组合关系(composition)(contains-a)
    • 解释:就是由某某组装而成的关系,聚合关系的两个类处于不同的层次,一个是整体,一个是部分,各个组成部分脱离整体是不可以存在的。整体和部分的生命周期是一致的。代码上的体现:如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。
    • eg:企业和部门,当企业倒闭后,部门也就随着企业的生命周期的结束而结束。人和四肢
    • 类图:
  • 关于聚合和组合的区分:其关键点就是整体和部分的生命周期是否一致这个条件。(深入思考:当整体的生命周期结束后,不会受到质变,也不会受到任何 对生命周期有影响的改变。例如 电脑 和CPU, 相反 例如 人体 和四肢)
  • 关联关系(association)
    • 解释:它描述不同类的对象之间的结构关系,是处于同一种层次;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;
      不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。代码体现:表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。

    • eg:A引用了B作为属性
    • 类图:
  • 依赖关系(dependency)
    • 解释:它描述不同类的对象之间的结构关系,是处于同一种层次;它是一种动态关系,与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;
      代码体现:例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。

    • eg:A中的方法调用了B
    • 类图:
时间: 2024-11-05 15:15:42

UML的各种关系理解的相关文章

UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html http://sundensky.blog.163.com/blog/static/7728873420109299167434/ 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系

iOS设计模式 - (2)UML类间关系精解

在正式讲设计模式之前, 介绍一下UML类图之间的关系还是非常有必要的, 由于一些教程, 书籍, 包含我之后的文章, 都会大量使用类图, 去描写叙述各个类之间的关系.这是一种非常直观, 简约的方式. 当然, 能力, 精力有限, 这里的UML的介绍也仅仅局限与几种常见的类间关系. 包含: 继承.实现.依赖.关联.聚合.组合 在次之前, 假设看不懂类图, 能够先看一下我之前写的一篇文章 : 具体解释八大UML类图符号的表示法 iOS - UML类间关系精解           by Colin丶 转载

【UML】UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性:  实现 指的是一个class类实现interface接口(可以是多个)的

UML类图关系大全

UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针.对象引用本身就是有向的,更适合表达我们所讨论的那种关系.所以这种关系在设计的时候比较少用到,关联一般都是有向的. 使用ROSE 生成的代码是这样的: class C1 ...{ public:     C2* th

图解六大UML类图关系

在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A:类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述.UML中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素. 类属(Generalization):通常所说的继承(特殊

UML中的关系

UML中的关系 1.依赖(dependency) ProductWorker--->Math表示ProductWorker依赖于Math 从层次结构来看,这两个类是属于同一层的 依赖关系主要表现为方法的参数,静态方法的调用 public class ProductWorker{ private double baseSalary; private int piece; public ProductWorker(double baseSalary, int piece=0){ setBaseSal

【菜鸟也疯狂UML系列】——浅析UML四种关系

在UML中.关系是很重要的.它抽象出对象之间的联系,让对象构成某个联系起来的结构.以下将简要分析一下UML中的四种关系:关联.依赖,泛化,实现. 一.举例罗列 1.关联(Association) 关联是用来连接有结构关系的对象,能够连接同样类或者不同类.也能够是双向关联和单向关联. 举例说明: 单向关联:人打开电视机.是一个单向关联. 双向关联:人和公司的关系,人是公司的雇员,公司是人的雇主.(1个公司有0或者n个雇员) watermark/2/text/aHR0cDovL2Jsb2cuY3Nk

UML类图关系大全【转】

UML类图关系大全 1.关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法.在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针.对象引用本身就是有向的,更适合表达我们所讨论的那种关系.所以这种关系在设计的时候比较少用到,关联一般都是有向的.使用ROSE 生成的代码是这样的: class C1 ...{public:    C2* theC2;};

iOS设计模式 - UML类间关系精解

在正式讲设计模式之前, 介绍一下UML类图之间的关系还是很有必要的, 因为一些教程, 书籍, 包括我之后的文章, 都会大量使用类图, 去描述各个类之间的关系.这是一种非常直观, 简约的方式. 当然, 能力, 精力有限, 这里的UML的介绍也仅仅局限与几种常见的类间关系. 包括: 继承.实现.依赖.关联.聚合.组合 在次之前, 如果看不懂类图, 可以先看一下我之前写的一篇文章 : 详解八大UML类图符号的表示法 iOS - UML类间关系精解           by Colin丶 转载请注明出处