当前位置: 首页 > news >正文

湘潭网站建设 都来磐石网络上海专建贸易有限公司

湘潭网站建设 都来磐石网络,上海专建贸易有限公司,个人养老保险账户余额查询,织梦 网站首页类与类的关系分为纵向关系和横向关系,纵向关系即为继承关系(后续帖子会有介绍),横向关系大体上可分为四种:依赖,关联,聚合,组合(此顺序为关系由弱到强,即依赖…

类与类的关系分为纵向关系和横向关系,纵向关系即为继承关系(后续帖子会有介绍),横向关系大体上可分为四种:依赖,关联,聚合,组合(此顺序为关系由弱到强,即依赖最弱)。

下面我们来介绍一下这几个关系。

1.依赖

所谓依赖就是类A使用了类B,但这种使用是偶然的,暂时的,但B的变化会影响到A。比如我要敲代码,就要使用到电脑,那么我与电脑之间就是依赖关系。在代码方面表现为电脑类作为参数被我类在某方法中使用,如:

#include<iostream>
using namespace std;class Computer
{
public:void Debug(){cout << "#include..." << endl;}
};class Person
{
public:void Code(Computer* pCom){cout << "小手劈里啪啦打代码" << endl;pCom->Debug();}
};int main()
{Person ps;Computer pCom;ps.Code(&pCom);return 0;
}

UML类图:

2.关联

比依赖更强,不存在依赖的偶然性,一般都是长期的且双方关系平等,例如我和我的朋友。

在代码方面表现为被关联类以类的属性形式出现在关联类中或者关联类引用了一个类型为被关联类的全局变量,如:

#include<iostream>
using namespace std;class Friend
{
public:int nRp;
public:Friend(int nRp){this->nRp = nRp;}
public:void Play(){cout << "文能挂机喷队友,武能越塔送人头" << endl;}
};class Person
{
private:Friend* pFriend;
public:Person(){pFriend = NULL;}
public:void SetFriend(Friend* pFriend){if (pFriend->nRp > 60){this->pFriend = pFriend;}else{cout << "人品不行" << endl;}}void Play(){if (pFriend != NULL){pFriend->Play();cout << "真坑啊" << endl;}else{cout << "自己玩没意思" << endl;}}
};int main()
{Friend f(80);Person ps;ps.SetFriend(&f);ps.Play();return 0;
}

UML类图:

3.聚合

聚合是关联的特例,它类似于一种包含,如公司与员工,家庭与家人,它体现的是整体与部分的关系,整体与部分是可以分离的,可以具有不同的生命周期,部分可以属于多个整体。

#include<iostream>
using namespace std;class Person
{
public:void Play(){cout << "摇起来" << endl;}
};class Family
{
public:Person* arr[10];
public:Family(){for (int i = 0; i < 10; i++){arr[i] = NULL;}}
public:void PushPerson(Person* pPs){for (int i = 0; i < 10; i++){if(arr[i] == NULL ){arr[i] = pPs;return;}}cout << "没位置了" << endl;}void Play(){for (int i = 0; i < 10; i++){if (arr[i] != NULL){arr[i]->Play();}else {cout << "---NULL---" << endl;}}}
};int main()
{Person ps1,ps2,ps3;Family f;f.PushPerson(&ps1);f.PushPerson(&ps2);f.PushPerson(&ps3);f.Play();return 0;
}

UML类图:

4.组合

组合也是关联的特例,组合也称强聚合,与聚合不同的是,组合的部分与整体是不可分的,整体生命周期的结束也意味着部分的结束,如人和人的大脑之间就是组合关系。

#include<iostream>
using namespace std;class Head
{
public:void Say(){cout << "哔哔赖赖" << endl;}
};class Hand
{
public:void Move(){cout << "比比划划" << endl;}
};class Person
{
private:Head head;Hand hand;
public:void Meeting(){head.Say();hand.Move();}
};int main()
{Person ps;ps.Meeting();return 0;
}

UML类图:

http://www.dtcms.com/a/480352.html

相关文章:

  • 网站302跳转线上推广软件
  • 02--CSS基础(1)
  • 杭州市建设住房保障局网站美食网站建设的功能
  • 济南网站建设抖音平台logo生成器免费版
  • Python学习历程——字符串相关操作及正则表达式
  • 自己电脑怎样做网站西安招聘网站
  • 重庆网站建设就选承越线上营销推广公司
  • 深圳设计网站推荐那样的网站18年
  • 营销型网站建设论文wordpress升级php版本崩溃
  • 怎么做企业网站建设方案专业企业建站价格
  • 网站语言版本百度怎么创建网站
  • 上海做网站的的公司帮别人做网站用织梦模板行吗
  • 新网站如何做seo装修行业 网站建设
  • 手写数字识别与卷积神经网络
  • 自学做网站的浦东新区网站推广公司
  • 天津公司网站怎样制作网站是什么意思例如
  • 佘山做网站公司石家庄建站优化公司
  • 重庆永川网站建设报价知名做网站费用
  • 成都网站制作培训怀化市鹤城区建设局网站
  • 苏州园区建设网站首页免费网站建设 百度一下
  • 做物品租赁网站楼盘推荐排行榜
  • 个人网站当企业网站用win优化大师官网
  • 关于百度网站的优缺点如何查网站的icp备案
  • 手机网站 优化seo工具包括
  • 站长工具里查看的网站描述和关键词都不显示网站技术解决
  • 免费html网页模板素材网站网站开发基本构成
  • html5手机商城网站模板做VIP视频网站赚钱
  • 网站建设及政务公开工作seo智能优化公司
  • 江苏省质量建设厅网站网络工程师报名时间
  • 中国矿山建设网站网站被人抄袭怎么办