UML类图的五种关系小结

UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承

一、依赖关系:

(一)说明

虚线+箭头

可描述为:Uses a

依赖是类的五种关系中耦合最小的一种关系,是一种协助关系。

因为在生成代码的时候,这两个关系类都不会增加属性。

(二)依赖关系图与代码的对应关系

动物类与水类的关系就是依赖关系,两者的存在关系有以下几种:

1 Water是Animal的全局变量,animal可以随处调用对象

2 Water是Animal的某个方法的局部变量

void Animal::Drink()
{
    Water water; //在方法中实例化对象,随着函数返回而销毁
    ...
}

3 Water类是Animal类的某个方法的返回值

Water Animal::getDrink()
{
     Water water;
     ...
     return water;  //生命周期依然只是函数返回之前
}    

二、关联关系

(一)说明

实线+箭头

可描述为:Has a

关联关系用实线,表示类之间的拥有关系,在生成代码的时候,关联关系的类会增加属性。

(二)关联关系与代码的对应关系

水类和气候类的关联关系

class Water {
   Water () {} //构造自身
   Climate  m_climate; //水与气候关联,气候类型的成员
}; 

class Climate {
    Climate() {} //构造自身
};

(三)关联关系的种类

1、单向关联: A类和B类单向关联,则A类称为源类,B类称为目标类。源类了解目标类的所有的属性和方法,但目标类并不了解源类的信息。

2、双向关联:A类和B类互有对方的属性和方法

三、聚合和组合(具体的关联关系)

聚合关系:

组合关系:

两者的区别与联系:

1. 聚合关系中,被聚合的类的构造函数必须带聚合类形参,聚合类可以独立于被聚合类而存在,例如一只鸟可以独立于鸟群而生存;组合关系中,被组合类的构造函数中必须先一步构造组合类,后者是前者构造出来的必要条件,是其一部分,不能独立存在,例如翅膀不能独立于鸟而生存。

//1. 聚合关系
class Birds  {
  Bird m_bird; //鸟类作为鸟群类的成员
public:
  Birds(Bird bird) {
      m_bird = bird; //构造函数带后者作为参数
      ...
  }
};

//2.组合关系
class Bird {
   Winds winds; //翅膀
public:
  Bird() {
    winds = new Winds(); //先构造翅膀,再构造爪子,再构造...
    ...
  }
};

2. 聚合关系中,客户端可以同时了解鸟群类和鸟类,互相独立;组合关系中,客户端只认识鸟类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在鸟类中。

三、泛化

(一)说明

实线+箭头

可描述为:Is a

泛化也称继承,子类将继承父类的所有属性和方法,并且可以根据需要对父类进行拓展。

(二)泛化关系示意

相对于父类来说,子类继承父类,子类即父类的泛化,子类继承了父类的所有属性和方法。

继承和组合的优缺点:

类继承是在编译时刻静态定义的,可直接使用,类继承可以较方便地改变父类的实现。但是类继承也有一些不足之处。首先,因为继承在编译时刻就定义了,所以无法在运行时刻改变从父类继承的实现。更糟的是,父类通常至少定义了子类的部分行为,父类的任何改变都可能影响子类的行为。如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

对象组合是通过获得对其他对象的引用而在运行时刻动态定义的。由于组合要求对象具有良好定义的接口,而且,对象只能通过接口访问,所以我们并不破坏封装性;只要类型一致,运行时刻还可以用一个对象来替代另一个对象;更进一步,因为对象的实现是基于接口写的,所以实现上存在较少的依赖关系。

四、实现关系

虚线+箭头

接口的意义是抽向类定义方法,但是并不具体实现。

实例:UML类图的具体例子

 

原文地址:https://www.cnblogs.com/ingy0923/p/9424884.html

时间: 2024-10-27 04:24:54

UML类图的五种关系小结的相关文章

UML类图的几种关系总结【转】

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向父类         2.

UML类图的几种关系

转自 http://www.open-open.com/lib/view/open1328059700311.html UML类图的几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化 2.实现 3. 关联

再说UML类图的几种关系

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为. 例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向父类 2. 实现(Rea

UML类图中的六大关系:泛化、实现、依赖、关联、聚合、组合关系

UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 1.泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展.在程序中是通过继承类实现的.比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设计为动物的子类. 表示方法:空心三角形箭头的实线,子类指向父类 2.实现 概念:实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述 表示方法:空心三角形箭头的

UML类图的6大关系

<小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下UML类图中6大关系了.这6大关系分别是Inheritance(继承).Implementation(实现).Dependency(依赖).Association(关联).Aggretation(聚合)和Composition(组合).在这6大关系中,依赖.关联.聚合和组合是比较容易混淆的,我也会讲解它们之间

【UML】类图的几种关系总结

在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization) [泛化关系]:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种. [箭头指向]:带三角箭头的实线,箭头指向父类 2.实现(Realization) [实现关系]:是一种类与接口的关系,表示类

UML类图中的六种关系

UML类图中经常会用到各种箭头和线条来表示不同类或者接口之间的关系,因此非常好的理解各个图标的含义是很有必要的. 在逻辑设计阶段可以通过EA工具将类图搭建好,然后直接生成物理类,这样也可以减少物理设计的工作量. 下面介绍UML中六种关系: 1. 泛化(Generalization) 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展.在java中用来表示继承的关系. 表示:用实线空心三角箭头表示. 2. 实现(Realization) 概念:

UML中类图的四种关系及其代码实现

在uml图中 最复杂的也就是泛化,实现,依赖,关联,这四种关系了,如果弄清了这几种关系那么在理解UML图的时候就会变得轻车熟路了! 如果你对着几种关系一点都不熟悉的话可以看一下uml中的四种关系,这篇博客简单的介绍了一下这几种关系,本文将重点的介绍一下,这几种关系在代码里如何实现的! 泛化关系 我想这个也可能是最简单的关系了,泛化就是特殊到一半的过程,也就是继承的相反的过程,子类继承自父类,而父类是从子类泛化而来! 泛化(generalization)关系是一个类(称为子类.子接口)继承另外的一

再学UML-深入浅出UML类图(五)

实例分析3--售票机控制程序 某运输公司决定为新的售票机开发车票销售的控制软件.图I给出了售票机的面板示意图以及相关的控制部件. 图I   售票机面板示意图 售票机相关部件的作用如下所述: (1) 目的地键盘用来输入行程目的地的代码(例如,200表示总站). (2) 乘客可以通过车票键盘选择车票种类(单程票.多次往返票和座席种类). (3) 继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买多张票. (4) 显示屏显示所有的系统输出和用户提示信息. (5) 插卡口接受MCard