UML中类与类之间的关系

Unified Modeling Language (UML)又称统一建模语言或标准建模语言。

口诀:鸡湿衣冠剧组(继承(泛化),实现,依赖,关联,聚合,组合)

继承:子类和父类的关系,UML中使用空心三角箭头的实线表示,从子类指向父类。

在这里插入图片描述
实现:在父类中定义接口,在子类中对接口进行实现。在C++中,接口通过的纯虚函数来实现,C++的多态就是通过虚函数来实现的。

class Animal{
    public:
        vitual void move();
};
class Bird: public Animal{
    void move(){
        //鸟的移动方式,飞
    }
};

在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。
在这里插入图片描述

依赖:类A使用到另一个类B,类B的变化会影响到类A。
表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。
在这里插入图片描述

关联:两个类之间比较强的依赖关系,关联可以是单向的,也可以是双向的。

关联也是一种弱关系,但并不是从属关系,关联的连个的类可以看作是平等的,比如一只大雁和老鹰的关系,就可以看作关联关系。

在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。

通过定义其他类指针类型的成员来实现关联:

class Egle{
    class Goose *food;
};
class Goose{
    class Egle *predator;
};

在这里插入图片描述
聚合关系:聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。

比如一只大雁和雁群,就是一种"聚合"关系。和组合相比,被聚合的对象可以属于多个聚合对象,比如,一只大雁可能属于多个雁群。
在C++语法中,通过类的指针来实现聚合:

class Goose{
};
class Geese{
    public:
        Goose member[10];
};

在这里插入图片描述
组合: 组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑,鸟类和翅膀类就是组合关系,在创建一个鸟类对象时,一定要同时或之后创建一个翅膀类对象,销毁一个鸟类对象时,一定要先同时或之前销毁翅膀对象。
在C++语法中,使用在一个类中包含另外一个类类型的成员来实现组合。

class Wing{
};
class Bird{
    Wing wing;
};

在UML类图设计中,组合关系以实心菱形加实线箭头表示。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值