引言
耦合性:参考文章
下面就通过耦合性的由弱到强,依赖、关联、聚合、组合、继承(泛化)、实现。(总结:衣冠剧组呈现)
一、依赖Dependency
例:A类是B类的成员函数的参数、返回值(局部变量)
class A{};
class B{
public:
void FunB(A& a){}
A GetA()
{
return A();
}
};
二、关联Association
例:A类是B类的一个成员属性
(1)弱关联
class A{};
class B{
private:
A* pa;
public:
B(A* ptr):pa(ptr)
{}
//B析构函数不能delete pa,弱关联关系
~B(){}
};
int main()
{
A a;
B b(&a);
return 0;
}
(2)强关联
class A{};
class B{
private:
A& aref;
public:
//强关联,引用必须初始化
//注意:参数不能使用A a 来构造aref
//(当a的声明周期结束后(只有该函数内),函数结束aref就会失效)
B(A& a):aref(a)
{}
~B(){}
};
int main()
{
A a;
B b(a);
return 0;
}
三、聚合Aggregation
class point{
private:
int _x;
int _y;
public:
point(int x, int y): _x(x), _y(y){}
~point(){}
};
class Circle{
private:
point center; //圆心
int radius; //半径
public:
Circle():center(pointer(0, 0)), radius(0)
{}
};
四、组合Composition
class body{};
class soul{};
class human{
private:
body _bd;
soul _sl;
public:
human(const body& bd, const soul& sl):_bd(bd), _sl(sl)
{}
};
五、继承Generalization
class Animal{};
class Bird : public Animal{};
六、实现Realization
实现对应的是面向对象中的"接口",即动物都要移动,但是每种移动的方式不一样,鸟要实现自己独有的移动的方法。
在C++中,接口通过的纯虚函数来实现,C++的多态就是通过虚函数来实现的。
class Animal{
public:
vitual void move();
};
class Bird: public Animal{
void move(){
//鸟的移动方式,飞
}
};