组合
? 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;
int hardDisk;
int memory;
};
? Computer.cpp
#include "Computer.h"
Computer::Computer(string cpuBrand, string cpuModel,
int hardDisk, int memory) : cpu(cpuBrand, cpuModel)
{
this->hardDisk = hardDisk;
this->memory = memory;
cout << "计算机 开始" << endl;
}
Computer::~Computer(){
cout << "计算机 结束" << endl;
}
? main.cpp
#include "Computer.h"
using namespace std;
void test() {
Computer computer("英特尔", "i9 11900k", 512, 32);
}
int main(void) {
test();
system("pause");
return 0;
}
? ?
小结: 被拥有的对象(cpu芯片)的生命周期与其拥有者(计算机)的生命周期是一致的。 计算机被创建时,cpu芯片也随之创建。 计算机被销毁时,cpu芯片也随之销毁。 拥有者需要对被拥有者负责,是一种比较强的关系,是整体与部分的关系。
具体组合方式: 1)被组合的对象直接使用成员对象。(常用) 2)使用指针表示被组合的对象,在构造函数中,创建被组合的对象;在析构函数中,释放被组合的对象。 ? ? UML中的组合表示: 注意包含者使用实心菱形 【补充】UML画图工具:starUML
|