类图关系详解
来源:互联网 发布:3d蓝光网络机顶盒 编辑:程序博客网 时间:2024/06/05 11:05
这里主要介绍四种类图中的关系,以及在涉及到类之间存在多种关系时,如何选择的问题。
第一个问题:类图的四种关系
1. 关联
1.1 关联的修饰
1. 名称:用以描述该关系的性质
2. 角色:一个类处于关联的某一端时,该类就在这个关系中扮演了一个特定的角色;角色是关联中靠近它的 一端的类对另外一端的类呈现的职责。
图中生成两个类---person company
两个类中分别有一个属性
person中有个employer---即company
company中有个employee---即person
3.多重性:关联角色的多重性是说明一个关联的实例中有多少个相互连接的对象
1.2 关联的分类:普通关联,自身关联,整体和部分
1. 不同类之间的关联
1.1单向关联(导航关联):表示相识关系,指一个类知道另外一个类。代码中的体现是这个类就可以调用另 一个类的公共属性和方法。没有生命期的依赖。一般表示为一种引用。
1.2双向关联:指双方都知道对方的存在。代码中的体现:,都可以调用对方的公共属性和方法。(这种关 系在设计的时候比较少用到,关联一般都是有向的)
1.3两个类之间可以有多种关联
1.4一个类可以和多个类关联
2.自身关联:自己引用自己,带着一个自己的引用。代码中的体现:就是在自己的内部中有着一个自身的 引用。
3. 整体和部分关联
1.聚合
用空心菱形表示,其中空心菱形箭头指向整体;
2.组合
用空心菱形表示,其中实心菱形箭头指向整体;
3.区别
必须现有主体才能有个体的是组合;主体不存在的情况下个体也可以存在的是聚合。但是这个要视问题域而 定;比如我们在一个主机类中,螺丝钉一定要组合在主机中,因为他离开了主机就没有意义了;但是在卖零 部件的店铺业务中,就是螺丝钉离开了主机,它还是有意义的,这就是聚合了。所以还有一种说法:A组合 B,则A需要知道B的生存周期,即可能A负责生成或释放B,或者A通过某种途径知道B的生成和释放。
2. 依赖
1.依赖是一种使用关系。用带箭头的虚线表示,其中箭头指向被依赖方。
2.依赖是个普遍存在的关系;初学者会大量使用依赖关系,但是这样表示是不严密,如果两个类之间还有结构化关 系就用关联关系;因为结构化关系中包含使用依赖关系
3.依赖在代码中的体现:
1.依赖在代码中通常是一个类的某一个方法中使用另一个类作为参数
2.在方法的具体实现中用到了另外一个类
3.总结一下就是在一个类中的某个方法中用到了另一个类
3.泛化
1.泛化关系实际上表示的就是一种继承关系(继承:一个类继承另外一个类的同一功能,并增加自己的新功 能);用实线空心的三角形来表示,其中空心三角形指向父类,表示子类继承父类。
2.继承分类
1.单重继承:一个子类只能有一个父类
2.多重继承:一个子类可以有多个父类
4.实现
实现时类元之间的语义关系,在该关系中一个类元描述了另外一个类元保证实现的契约。用虚线加空心三角形表 示,空心三角形指向接口。
第二个问题:在我们分析类的关系的时候,两个或多个类之间的关系可能不止有一种,那么这个时候我们要如何选择关系呢?这个时候就涉及到类的关系的排序。
1. 继承关系和整体-部分关系非常容易分析出来
2.我们要区分的就是关联和依赖;关联是类之间的一种关系,而依赖是一种弱关联,或者说是一种偶然关系,在一个类的某种方法中牟然用到了另一个类,但是实际上两个类没有什么明显的关系。
3. 所以给出排序的顺序:如果关系中涉及到了关联和依赖,那么顺序是首先考虑关联,再考虑依赖。
- 类图关系详解
- UML类图关系详解
- UML类图关系详解
- 详解 UML类图之各种关系
- UML类图各种关系详解
- UML --类图中的关系详解
- Uml 类图及关系详解
- UML图 关系详解
- UML图关系详解
- UML图 关系详解
- UML类图与类的关系详解
- UML类图与类的关系详解
- UML类图与类的关系详解
- UML类图与类的关系详解
- UML类图与类的关系详解
- UML类图与类的关系详解
- UML类图与类的关系详解
- UML类图与类的关系详解
- vc消息大全
- 层次分析法 插值与拟合
- Android中全屏或者取消标题栏
- 嵌入式开发第一天-----设置VMware实现fedora无线上网(IMUDGES)
- 递归算法详细分析-> C
- 类图关系详解
- 嵌入式开发第二天-----在Mini6410上实现摄像头监控服务端(IMUDGES)
- 递归算法示例
- HDU 1358 KMP运用 求某串中所有循环前缀串的长度和循环次数
- poj-1260-Pearls-dp
- executeQuery、executeUpdate 和 execute返回值
- ubuntu安装启动redis(转)
- Valgrind callgrind profile 多线程程序 命令
- 破解 http://www.amcharts.com/ 的swf