查看文章 |
泛化聚合复合依赖
2008年04月17日 星期四 下午 03:15
泛化(Generalization) o_Generalization.gif ![]() 图表 1 泛化 在上图中,空心的三角表示继承关系(类继承),在UML的术语中,这种关系被称为泛化(Generalization)。Person(人)是基类,Teacher(教师)、Student(学生)、Guest(来宾)是子类。 若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。 例如,教师是人,Teacher 是Person的“一种”(a kind of )。那么类Teacher可以从类Person派生(继承)。 如果A是基类,B是A的派生类,那么B将继承A的数据和函数。 如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。 若在逻辑上B是A的“一种”(a kind of ),则允许B继承A的功能和属性。 聚合(组合) ![]() 图表 2 组合 若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。 例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生(继承)而成。 聚合的类型分为无、共享(聚合)、复合(组合)三类。 聚合(aggregation) ![]() 图表 3 共享 上面图中,有一个菱形(空心)表示聚合(aggregation)(聚合类型为共享),聚合的意义表示has-a关系。聚合是一种相对松散的关系,聚合类B不需要对被聚合的类A负责。 组合(composition) ![]() 图表 4 复合 这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)(聚合类型为复合)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。 依赖(Dependency) ![]() 图表 5 依赖 这里B与A的关系只是一种依赖(Dependency)关系,这种关系表明,如果类A被修改,那么类B会受到影响。 |
最近读者:




