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

学习面向对象分析(OOD)与面向对象设计(OOD),在获取并列出概念类之后,必须要明确类与类之间的关系。这些关系由弱到强大致分为一下几种:依赖、关联、聚合、组合、继承。下面将分别以我最简单的语言进行概述。

 

首先上UML图和代码:

C++实现类与类之间简单关系(依赖,关联,聚合,组合,继承)_第1张图片

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的静态方法

C++实现类与类之间简单关系(依赖,关联,聚合,组合,继承)_第2张图片

驾驶员从驾驶学校学习驾车技巧,调用DrivingSchool静态方法“You can drive.”

 

2.关联

A类需要B类作为它的属性,以进行一定的读操作。

C++实现类与类之间简单关系(依赖,关联,聚合,组合,继承)_第3张图片

驾驶学校存放汽车Car信息。Car同样需记录所属单位。

 

3.聚合

 A类在一定情形下属于B类内,即A类可以独立于B类存在。

C++实现类与类之间简单关系(依赖,关联,聚合,组合,继承)_第4张图片

汽车和驾驶员可以独立存在,但是驾驶员可以控制汽车。

 

4.组合

A类属于B类,即A类不可以独立存在。

应特别注意聚合与组合的区别,在C++实现中有明显的区别

C++实现类与类之间简单关系(依赖,关联,聚合,组合,继承)_第5张图片

车轮在汽车消失后即刻被销毁掉。

 

5.继承

A类拥有B类全部属性,并且可以额外拥有一些B类没有的特征。

C++实现类与类之间简单关系(依赖,关联,聚合,组合,继承)_第6张图片

Car车辆继承了Vehicle载具的特性。

 

 

接下来将深入设计模式的环节。由于Java还不是很熟悉,仍将以C++的形式为大家呈现。

 

 

 

你可能感兴趣的:(C++,设计模式)