C++实现类与类之间简单关系(依赖,关联,聚合,组合,继承)

一篇写的很好的解释依赖,关联,聚合,组合,继承的文章https://blog.csdn.net/killfat/article/details/81275798
学习面向对象分析(OOD)与面向对象设计(OOD),在获取并列出概念类之后,必须要明确类与类之间的关系。这些关系由弱到强大致分为一下几种:依赖、关联、聚合、组合、继承。下面将分别以我最简单的语言进行概述。

首先上UML图和代码:
在这里插入图片描述

class Wheel {
	int size;
public:
	Wheel(int sz) : size(sz) {};
	int getSz() { return size; };
};
 
class Vehicle {
	int weight;
public:
	Vehicle(int wt) : weight(wt) {};
};
 
class Car : public Vehicle{
	Wheel *wh;
public:
	Car(int wt, int sz) : Vehicle(wt), wh(NULL) 
	{ wh = new Wheel(4); };
	int getSz() { return wh->getSz(); };
	~Car() { delete wh; };
};
 
class DrivingSchool {
	Car coachCar[10];
public:
    static void Drive() {
		cout << "You can drive." << endl;
	}
}; 
 
class Driver {
	Car* car_ptr;
	int learnt;
public:
	Driver(Car *pc) : car_ptr(pc), learnt(0) {};
 
	void driverLearn() { DrivingSchool::Drive(); }
};
 
int main()
{
	Car c = Car(10000, 5);
	Driver drv(&c);
	
	drv.driverLearn();
	return 0;
}

1.依赖

A类使用到了B类一部分属性或方法。不会主动改变B类内的内容。

代码化一些:

类A把类B的实例作为方法里的参数使用
类A的某个方法里使用了类B的实例作为局部变量
类A调用了类B的静态方法
在这里插入图片描述
驾驶员从驾驶学校学习驾车技巧,调用DrivingSchool静态方法“You can drive.”

2.关联

A类需要B类作为它的属性,以进行一定的读操作。
在这里插入图片描述
驾驶学校存放汽车Car信息。Car同样需记录所属单位。

3.聚合

A类在一定情形下属于B类内,即A类可以独立于B类存在。
在这里插入图片描述
汽车和驾驶员可以独立存在,但是驾驶员可以控制汽车。

4.组合

A类属于B类,即A类不可以独立存在。
应特别注意聚合与组合的区别,在C++实现中有明显的区别
在这里插入图片描述
车轮在汽车消失后即刻被销毁掉。

5.继承

A类拥有B类全部属性,并且可以额外拥有一些B类没有的特征。
在这里插入图片描述
Car车辆继承了Vehicle载具的特性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值