类与类的关系.docx

上传人:b****3 文档编号:3942157 上传时间:2022-11-26 格式:DOCX 页数:6 大小:166.14KB
下载 相关 举报
类与类的关系.docx_第1页
第1页 / 共6页
类与类的关系.docx_第2页
第2页 / 共6页
类与类的关系.docx_第3页
第3页 / 共6页
类与类的关系.docx_第4页
第4页 / 共6页
类与类的关系.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

类与类的关系.docx

《类与类的关系.docx》由会员分享,可在线阅读,更多相关《类与类的关系.docx(6页珍藏版)》请在冰豆网上搜索。

类与类的关系.docx

类与类的关系

在UML类图中的关系模式主要有以下几种:

泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),依赖(Dependency)等.

1.泛化(Generalization)

      泛化关系:

是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.老虎是动物的一种,即有老虎的特性也有动物的共性.  见下图:

用代码表示如下:

程序代码

//Animal.h

classCAnimal

{

public:

    //implement

    virtualHRESULTEatSomething()

    {

        //Dosomething

    }

};

//Tiger.h

#include"Animal.h"

classCTiger:

publicCAnimal

{

    //Dosomething

};

2.实现(Realization)

实现关系:

是一种类与接口的关系,表示类是接口所有特征和行为的实现.见下图:

用代码表示如下:

程序代码

//Animal.h

classCAnimal

{

public:

    //interface

    virtualHRESULTEatSomething()=0;

};

//Tiger.h

#include"Animal.h"

classCTiger:

publicCAnimal

{

    //Dosomething

};

注:

泛化和实现的区别就在于子类是否继承了父类的实现,如有继承则关系为泛化,反之为实现.

3.关联(Association)

关联关系:

是一种拥有的关系,可以分为双向关联,单向关联和自身关联.

双向关联是指双方都拥有对方的引用,都可以调用对方的公共属性和方法.见下图:

用代码表示如下:

程序代码

//Husband.h

#include"wife.h"

classCHusband

{

public:

    CWife*pWife;

};

//Wife.h

#include"Husband.h"

classCWife

{

public:

    CHusband*pHuband;

};

上图中丈夫和妻子是比较公平的关系,都可以使用对方公共的属性.

单向关联是指只有某一方拥有另一方的引用,这样只有拥有对方者可以调用对方的公共属性和方法.如下图:

用代码表示如下:

程序代码

//Husband.h

classCHusband

{

public:

    intnMoney;

    voidGoShopping();

};

//Wife.h

#include"Husband.h"

classCWife

{

public:

    CHusband*pHuband;

};

上图中妻子拥有丈夫,可以使用对方的属性,比如钱,可以让对方做能做的事,比如去买东西.

自身关联是指拥有一个自身的引用.如下图

用代码表示如下:

程序代码

//SingleMan.h

classCSingleMan

{

public:

    CSingleMan*pSingleMan;

};

4.聚合(Aggregation)和组合(Composition)

聚合关系:

是整体与部分的关系,且部分可以离开整体而单独存在.如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在.

组合关系:

是整体与部分的关系,但部分不能离开整体而单独存在.如公司和部门是整体和部分的关系,没有公司就不存在部门.

用代码表示如下:

程序代码

//Car.h

#include"Tyre.h"

classCCar

{

public:

    CTyrecTyre;

};

//Tyre.h

#include"Car.h"

classCTyre

{

    //Dosomething

};

程序代码

//Company.h

#include"Department.h"

classCCompany

{

public:

    CDepartmentcDepartment;

};

//Tyre.h

#include"Company.h"

classCDepartment

{

    //Dosomething

};

5.依赖(Dependency)

依赖关系:

是一种使用的关系,  即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.如下图:

用代码表示如下:

程序代码

//Car.h

classCCar

{

    //Dosomething

};

//Person.h

#include"Car.h"

classCPerson

{

    voidMoveFast(CCar&pCar);

};

上图中人的快速移动需要有车的协助,但是这种依赖是比较弱的,就是人也可以不用车而用其他工具,与关联不同的是人不必拥有这辆车只要使用就行.

    Association关联系表现为变量(hasa)。

类与类之间的联接,它使一个类知道另一个类的属性和方法。

例如如果A依赖于B,则B体现为A的全局变量。

关联关系有双向关联和单向关联。

双向关联:

两个类都知道另一个类的公共属性和操作。

单向关联:

只有一个类知道另外一个类的公共属性和操作。

大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。

   Aggregation(聚合关系)是关联关系的一种,是强的关联关系。

聚合关系是整体和个体的关系。

普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。

同时,是一种弱的“拥有”关系。

体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。

具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

   Composition(组合关系)是关联关系的一种,是比聚合关系强的关系。

它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。

如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。

Dependency(依赖关系)表现为函数中的参数(usea)。

是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。

例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1