UML 基础
(1)依赖(dependency)是使用和被使用的关系:对象的行为使用外部对象作为参数,行为受外部对象影响.如图 AAA类依赖于BBB类.(uses)
BBB 对象只能存在于AAA对象的方法中或方法的参数中,不能作为属性。
(2)关联(association)是一种结构关系:外部对象作为对象一个属性的方式存在。如图AA类与BB1类.(has-a)
BB1对象只能作为AA对象的属性存在,由外部提供或在构造函数、方法中创建。
(3)聚集(aggregation)是一种特殊类型的关联,它描述了整体和部分间的结构关系,整体和部分可以分离,有各自生命周期。如图AA类与BB3类
BB3对象只能作为AA对象的属性存在,由外部提供,不能在AA对象的构造函数或方法中创建。
(4)组合(composition)是一种特殊类型的关联,它描述了整体和部分间的结构关系,整体和部分不可以分离,部分生命周期依赖整体。如图AA类与BB2类(通常BB2对象要在构造函数里产生)
BB2对象只能作为AA对象的属性存在,在AA对象的构造函数或方法中创建,不能由外部提供。
聚合和组合的区别:生命周期。
组合中,随着AA类的生命周期结束,BB2也结束。必须在AA类里面使用。(通过构造函数创建对象方式存在)
聚合中,随着AA类的生命周期结束,BB3不一定结束。(通过外部对象进行属性赋值方式存在)
(5)泛化(generalization)是一种特殊/一般关系,特殊元素(子类)的对象可替代一般元素(父类)的对象,用这种方法,子类共享了父类的结构和行为。如图A类与B类,为纵向关系.(is-a)
(6)实现(realization)是一个类指定了由另一个类保证执行的契约。如图B类与C类,也为纵向关系.
(has-a关系中的重数:右边的数说明左边的对象可以拥有多少个右边的对象;左边的数说明右边的对象必需或不必需存在于左边对象)
视图元素
其中的包含关系和扩展关系的解析:
1. 包含关系:把一个功能分解为多个小功能所建立的关系。(由里向外的动作)
2. 扩展关系:对一个功能的增强,不是本身的分解所建立的关系。(由外向里的动作)
FYI: http://kb.cnblogs.com/page/129491/