创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
c语言内容💖:
专栏:c语言之路重点知识整合
【c语言】全部知识点总结
目录
- 一、组合
- 二、关联
- 三、依赖
- 四、聚合
- 代码举例类之间的横向关系
类之间的关系可以分为横向关系和纵向关系,本文介绍类之间的横向关系
一、组合
组合(Composition):表示一种拥有的关系,它使一个类成为另一个类的一部分。
组合关系是一种强依赖关系,如果父对象销毁,则子对象也将被销毁。
组合是包含与被包含的关系。组合是一个类中包含另一个类对象。
组合是一种强所属关系,组合关系的两个对象往往具有相同的生命周期,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。
一般来说被组合对象不能脱离组合对象独立存在,整体不存在,部分一定不存在。
例如:人与手、人与头之间的关系,人需要包含头和手,头、手是人的一部分且不能脱离人独立而存在
二、关联
关联(Association) 关联是指一个类与另一个类存在连接关系,但是两个类的对象之间不是强制性的,一个类的对象可以独立存在。关联关系可以是单向的或者双向的。在双向关联中,两个类对象互相包含对方的引用。
关联不是从属关系,而是平等关系,可以拥有对方,但不可占有对方
。完成某个功能与被关联的对象有关,但是可有可无。
被关联的对象与关联的对象无生命周期约束关系,被关联对象的生命周期由谁创建就由谁来维护。
只要二者同意,可以随时解除关系或是进行关联,被关联的对象还可以再被别的对象关联,所以关联是可以共享的
举例:人和朋友的关系,人要完成玩游戏这个功能,没有朋友可以自己玩游戏,如果交到朋友了就可以和朋友一起玩游戏。
三、依赖
依赖(Dependency) 依赖是指一个类使用另一个类的对象,但是这种依赖关系是暂时性的,不会持久存在。如果一个类的方法需要调用另一个类的对象,那么这种调用就是一种依赖关系。
一个对象的某种行为依赖于另一个类对象,被依赖的对象视为完成某个功能的工具,并不持有对他的引用,只有在完成某个功能的时候才会用到,而且是必不可少的。
依赖之间没有生命周期约束关系。
举例:人要完成玩电脑,就需要用到电脑,电脑作为一个工具,其他的时候不需要,电脑也不可能作为人的属性而存在(非组合关系) ,人必须依赖于电脑才能玩电脑。
四、聚合
聚合(Aggregation) 聚合是指一个类包含另一个类的对象,但是这个对象的生命周期可以独立存在。聚合是一种弱关联,一个类的对象可以存在,即使包含这个对象的类对象不在了。
多个被聚合的对象聚集起来形成一个大的整体,聚合的目的是为了统一进行管理同类型的对象,聚合是一种弱所属关系,被聚合的对象还可以再被别的对象关联,所以被聚合对象是可以共享的。
虽然是共享的,聚合代表的是一种更亲密的关系,相当于强版本的关联。
举例:多个人一起玩游戏进行统一管理
代码举例类之间的横向关系
#include <iostream>
#include <string>
using namespace std;
class CHand
{
public:
void Move()
{
cout << "手移动" << endl;
}
};
class CComputer
{
public:
void Compile()
{
cout << "编译程序...生成可执行文件" << endl;
}
};
class CFriend
{
public:
void Play()
{
cout << "朋友玩LOL很好" << endl;
}
};
class CPeople
{
public:
CHand m_hand;
CFriend* m_pFri;
CPeople() :m_pFri(nullptr)
{
}
void clap()
{
m_hand.Move();
cout << "鼓掌" << endl;
}
void code(CComputer* pComp)
{
if (!pComp)return;
m_hand.Move();
cout << "敲代码" << endl;
pComp->Compile();
cout << "运行程序" << endl;
}
void playLOL()
{
if (m_pFri)
{
m_pFri->Play();
cout << "和朋友玩LOL" << endl;
}
else
{
cout << "没朋友自己玩LOL" << endl;
}
}
};
int main()
{
//组合
{
CPeople peo;
peo.clap();
}
//依赖
{
CComputer comp;
CPeople ztx;
ztx.code(&comp);
}
//关联
{
CPeople peo;
peo.playLOL(); //自己玩
CFriend fri;
peo.m_pFri = &fri;
peo.playLOL(); //一起玩
}
return 0;
}
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |