当前位置: 首页 > 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/530689.html

相关文章:

  • 盐城建设局网站中小型电子商务网站
  • 游戏界面设计网站贵阳手机银行app下载
  • 做封面的免费网站网站的建设主题
  • 个人网站免费域名注册安徽省招投标中心官网
  • 江苏中星建设集团网站虚拟产品货源网站
  • 网站手机客户端在线制作网站设计制作费
  • 员工入职 在哪个网站做招工汕头市广州新业建设有限公司网站
  • 白云品牌型网站建设山东省和城乡建设厅网站
  • 艺客网站首页怎么设置网址
  • 商务网站建设与运营陕西省城乡建设学校网站
  • aspcms 网站栏目管理网络工程师都考什么
  • 优秀门户网站欣赏深圳网站建设亿联时代
  • 公司做网站哪里做个人软件网站域名
  • 网站产品详情用哪个软件做的wordpress加速之gzip
  • 如何在局域网中做网站衡水高端网站建设
  • 泰通建设集团网站手机网站开发教程pdf
  • 福清建设银行网站南昌科技学院是几本大学
  • 医院网站建设技术方案如何查询网站打开速度变慢
  • 如何建立学校网站python cms系统
  • 淮北网站开发公司哈尔滨网络科技公司网站
  • 网站开发安全文档静态网站挂马
  • 安防行业网站建设方案论坛网站建设软件
  • 企业电子商务网站建设设计目的新建html网站
  • 静态网站开发外文文献怎样登陆wordpress
  • 手机网站对企业用户的好处wordpress如何让导航栏浮动
  • 兰州房地产网站建设小说网站如何做书源
  • 个人网站包含哪些内容中企高呈高端网站建设费用
  • 怎么用nat做网站南京网站制作西安
  • 网站开发的理解郑州一凡网站建设
  • 哪个网站可以做照片分享百度站长链接提交平台