栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

UML中类与类之间的关系

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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类图设计中,组合关系以实心菱形加实线箭头表示。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号