IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 建模的常用手段:组合 -> 正文阅读

[网络协议]建模的常用手段:组合

组合

  • 说明:组合和聚合,不是C++的语法要求,是应用中的常用手段。

  • 需求:
    构建一个计算机类,一台计算机,由CPU芯片,硬盘,内存等组成。
    CPU芯片也使用类来表示。

?
CPU.h

#pragma once
#include <string>
using namespace std;

class Cpu{
public:
	Cpu(string brand = "Inter", string model = "i5");
	~Cpu();
private:
	string brand;	//品牌
	string model;	//型号
};

?

CPU.cpp

#include "Cpu.h"
#include <iostream>

Cpu::Cpu(string brand, string model){
	this->brand = brand;
	this->model = model;
	cout << "Cpu 开始" << endl;
}

Cpu::~Cpu(){
	cout << "Cpu 结束" << endl;
}

?
Computer.h

#pragma once
#include <string>
#include <iostream>
#include <Windows.h>
#include "Cpu.h"
using namespace std;

class Computer{
public:
	Computer(string cpuBrand, string cpuModel, int hardDisk, int memory);
	~Computer();
private:
	Cpu cpu;		//Cpu类和Computer类之间, 就是"组合"
	//Cpu *cpu;		//指针方式
	int hardDisk;	//硬盘
	int memory;		//内存
};

?
Computer.cpp

#include "Computer.h"
//cpu的参数使用列表初始化
Computer::Computer(string cpuBrand, string cpuModel, 
	int hardDisk, int memory) : cpu(cpuBrand, cpuModel)
{
	//使用指针方式初始化
	//this->cpu = new Cpu(cpuBrand, cpuModel);
	this->hardDisk = hardDisk;
	this->memory = memory;
	cout << "计算机 开始" << endl;
}

Computer::~Computer(){
	//指针释放内存	
	//delete cpu;
	cout << "计算机 结束" << endl;
}

?
main.cpp

#include "Computer.h"

using namespace std;
void test() {
	Computer computer("英特尔", "i9 11900k", 512, 32);
}

int main(void) {
	//当test函数结束以后
	//计算机和Cpu就会全部销毁
	test();

	system("pause");
	return 0;
}

?
在这里插入图片描述
?

小结:
被拥有的对象(cpu芯片)的生命周期与其拥有者(计算机)的生命周期是一致的。
计算机被创建时,cpu芯片也随之创建。
计算机被销毁时,cpu芯片也随之销毁。
拥有者需要对被拥有者负责,是一种比较强的关系,是整体与部分的关系。

具体组合方式:
1)被组合的对象直接使用成员对象。(常用)
2)使用指针表示被组合的对象,在构造函数中,创建被组合的对象;在析构函数中,释放被组合的对象。
?
?
UML中的组合表示:
在这里插入图片描述
注意包含者使用实心菱形
【补充】UML画图工具:starUML

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:30:42  更:2022-02-16 13:32:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:53:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码