欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

类之间关系描述

程序员文章站 2022-04-01 11:18:29
...

简述

     在面向对象编程中,类之间有各种各样的相互关系,常见的有 泛化,关联,依赖,组合,聚合,实现。

UML类图

类之间关系描述

详解:

    1,泛化

      简析:

     泛化其实就是继承。继承用空心三角形加实线来表示。继承是面向对象的三大特性之一,也是类与类之间最基本的关系,继承关系耦合度比较强。鸟类继承动物类后,拥有类动物类的所有特性和方法,如生命,新陈代谢等,但他也有自己的独特的特性和方法,如翅膀和下蛋,他两的耦合度比较高,当动物类增加一个方法时,鸟类也会增加。

     如图:

类之间关系描述

     代码:

//动物  
02.class Animal                      
03.{  
04.public:  
05.    void Metabolism(Oxygen oxygen, Water water);        //新陈代谢  
06.    void Multiply();                                    //繁殖  
07.public:  
08.    int m_healthPoint;                                  //生命  
09.};  
10.  
11.//鸟  
12.class Bird : public Animal  
13.{  
14.public:  
15.    Bird()                          //构造需要初始化翅膀   
16.    {  
17.        wing = new Wing;  
18.    }  
19.  
20.    void LayEggs();                 //下蛋  
21.private:  
22.    Wing *wing;                     //翅膀  
23.};

    2,关联

      简析:

     关联关系用实线箭头表示,当一个类“知道”另一个类是用关联。企鹅类想知道气候类的变化,需要引用气候类。

     如图:

类之间关系描述

     代码:

[cpp] view plain copy

 01.//气候  
02.class Climate  
03.{     
04.public:  
05.};  
06.  
07.//企鹅  
08.class Penguin : public Bird  
09.{  
10.private:  
11.    Climate *climate;               //气候  
12.};  

    3,依赖

      简析:

     依赖关系用虚线箭头表示,动物类依赖水和氧气类才能新陈代谢。在动物类的方法 ”新陈代谢“ 中以函数参数传入。

     如图:

类之间关系描述

     代码:

[cpp] view plain copy

 01.//氧气  
02.class Oxygen  
03.{  
04.public:  
05.};  
06.  
07.//水  
08.class Water  
09.{  
10.public:  
11.};  
12.  
13.//动物  
14.class Animal                      
15.{  
16.public:  
17.    void Metabolism(Oxygen oxygen, Water water);        //新陈代谢  
18.    void Multiply();                                    //繁殖  
19.public:  
20.    int m_healthPoint;                                  //生命  
21.};  

    4,组合

      简析:

     组合关系用实心菱形加实线箭头表示。组合是一种强的“拥有”关系。体现类严格的部分整体关系,部分和整体的生命周期一样。比如鸟和翅膀,翅膀类是鸟类的一个属性。在能用组合实现的情况下尽量不要使用继承

     如图:

类之间关系描述

     代码:

[cpp] view plain copy

 01.//翅膀  
02.class Wing  
03.{  
04.  
05.};  
06.  
07.//鸟  
08.class Bird : public Animal  
09.{  
10.public:  
11.    Bird()                          //构造需要初始化翅膀   
12.    {  
13.        wing = new Wing;  
14.    }  
15.  
16.    void LayEggs();                 //下蛋  
17.private:  
18.    Wing *wing;                     //翅膀  
19.}; 

    5,聚合

      简析:

     聚合关系用空心菱形加实线箭头表示。聚合表示一种弱的 “拥有” 关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。比如大雁和雁群。

     如图:

类之间关系描述

     代码:

//大雁  
02.class WildGoose : public Bird  
03.{  
04.  
05.};  
06.  
07.//雁群  
08.class WindeGooseAggregate  
09.{  
10.private:  
11.    std::vector<WildGoose*> m_WildGoose;  //大雁数组  
12.};