下图是从StarUML工具界面截下来的,从上往下依次表示UML的关系:关联、单向关联、聚合、组合、泛化、依赖和实现。
图3 UML关系集
3.1 关联、聚合、组合
关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系。聚合和组合是更强的关联,表示整体和部分的关系。
聚合的整体不负责部分的生命期,组合的整体负责部分的生命期。关联关系需根据实际场景来识别,例如军队和士兵的关系一般可理解为聚合,士兵退役了就和军队脱离聚合关系了。但是,如果是打仗时,士兵们必须生死与共,军队没了则士兵命也没了,则可理解为组合。
UML示例:
图3-1 关联、聚合、组合
C代码示例:
//A关联/聚合/组合了B
struct A{
struct B *b;
void (*Create)(B *b); //方式1
};
struct A{
struct B *b;
void (*SetB)( B *b); //方式2,单B
};
struct