Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24350
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-27 17:14
个人简介

博客开通

文章分类

全部博文(16)

文章存档

2014年(16)

我的朋友

分类: 其他平台

2014-10-09 19:45:07



Association  关联 
Unidirectional Association  单向关联 
Association Class  关联类 
Dependency or instantiates依赖或实例化 
Generalization泛化  继承 
Realize实现
Aggregation  聚合
Unidirectional Aggregation  单向聚合 
Class 类 
Parameterized Class参数化类 
Class Utility类的实用程序 
Parameterized Class Utility参数化类实用程序





概念讲解

泛化(Generalization 

 

o_Generalization.gif

 

图表 1 泛化

 

Teacher , Student, Guest  is“a kind of” Person

 

在上图中,空心的三角表示继承关系(类继承),在UML的术语中,这种关系被称为泛化(Generalization)。Person()是基类,Teacher(教师)Student(学生)Guest(来宾)是子类。 

 

若在逻辑上BA的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。 

 

例如,教师是人,Teacher Person的“一种”(a kind of )。那么类Teacher可以从类Person派生(继承)。 

 

如果A是基类,BA的派生类,那么B将继承A的数据和函数。 

 

如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。 

 

若在逻辑上BA的“一种”(a kind of ),则允许B继承A的功能和属性。 

 

 

 

聚合(组合) 

 

o_aggregationBase.gif

 

图表 2 组合 

 

若在逻辑上AB“一部分”(a part of,则不允许BA派生,而是要用A和其它东西组合出B 

 

例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类EyeNoseMouthEar组合而成,不是派生(继承)而成。 

 

 

 

聚合的类型分为无、共享(聚合)、复合(组合)三类。 

 

 

 

聚合(aggregation 

 

 

 

o_aggregation.gif

 

图表 3 共享 

 

上面图中,有一个菱形(空心)表示聚合(aggregation)(聚合类型为共享),聚合的意义表示has-a关系。聚合是一种相对松散的关系,聚合类B不需要对被聚合的类A负责。 

 

 

 

组合(composition 

 

o_composition.gif

 

图表 4 复合 

 

这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)(聚合类型为复合)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。 

 

 

 

依赖(Dependency)

 

o_Dependency.gif

 

图表 5 依赖 

 

这里BA的关系只是一种依赖(Dependency)关系,这种关系表明,如果类A被修改,那么类B会受到影响。


阅读(433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~