类之间的几种关系:
- 继承(inheritance)
代码中extends - 实现(realization)
代码中implements - 关联(association)
类之间有逻辑关系,一般包括了以下的依赖、聚合、组合关系 - 依赖(dependency)
A使用了B,通常表现为A的方法里传入B参数,一种最弱的关联关系 - 聚合(aggregation)
A类属性里有B类,B类脱离了A仍然存在,一种较弱的关联关系 - 组合(composition)
A类属性里有B类,B类脱离了A不存在,一种较强的关联关系
聚合组合关系:
组合和聚合的代码是一样的。具体如何区别,可能就只能用语义来区分了
问题域的语义上:组合中被组合类单独存在没有意义; 聚合中被聚合类在可以有单独存在的意义。
生命期上:组合中必须要负责被组合类的生命期; 聚合中可不负责被聚合类的声明期,可以由外部程序来创建和消亡(可用赋值)。
图形表示如下

来源:
UML类图
UML设计中的箭头详解