继承,实现,关联,聚合,组合,依赖几种关系的介绍
继承: generalization
继承是一种泛化的关系,是子类和父类之间的纵向关系;
例如: 水果(一般化), 苹果,香蕉,橘子,榴莲(相对具体化);
在逻辑上,子类是父类的一种,是“is-a”的关系;
通常逻辑上具有上述关系("is-a")的类,就可以继承;
子类继承父类,则子类拥有了父类的所有方法和属性;
UML类图:
实现:realization
实现是类和接口之间的一种关系,接口是行为一种约定,C++是通过纯虚函数的形式给出的;
例如: 有一个接口类电灯,通过了开和关的方法,实现的时候,只要实现这两个方法;
客户在使用的时候,只要拿到接口就可以调用方法了。从而隐藏了具体实例对象中的属性;
关联: association
关联关系是两个事物之间的一种长期的,比较固定的一种相互关系;
是一个对象和另外一个对象之间的引用关系;
对象和对象之间相互独立;对象的类在层次上是同一个级别;
例如: 我和我的朋友;
聚合:aggregation
聚合关系是关联关系的一种;
表示一种整体和部分的关系, "has-a";
例如: 公司和员工;
公司和员工之间是可以存在的;公司倒闭了,员工可以换另外的工作,员工加班累死了,公司不会因为员工的问题倒闭,
除非是老总(==);
在实现上通常是以实例变量的方式给出;
组合: composition
组合关系也是关联关系的一种;
表示的也是整体和部分的关系,这种关系要比聚合关系要强,是一种强聚合,"contains-a";
例如:头和大脑的关系;
在这种关系中,整体的生命周期控制着部分的生命周期;