具体的东西被抽象,然后加以概括,归类,我个人认为这是思维的一个升华,就像给一个东西下定义一样,如何才能用自己的话讲这个东西说明清楚,当然要有全面的认识,所以抽象不是没有根据的,而是建立在自己的认识之上。
面向对象开发的时候都会接触到依赖,关联等,不仅仅是面向对象开发,就在其他开发的时候也会遇到,比如在使用ArcGIS Engine开发的时候,那些OMD图,这些关系,其实自己已经很熟悉了,光给别人培训就讲解了好几次。
人的大脑对图片可能有一种天生的存在意识,比如看一篇很长的文字描述的时候,我们可能不知所云,但是如果用图的形式将这个内容勾勒出来,却容易被吸收,当然这个图也不是凭空想象,还是建立在自己的认识之上,是对文字的另外一种表达。相同的意思,有不同的表达方式,正式如此。
我喜欢模拟,当时在培训的时候,模拟了QI,模拟了接口回调等,但是对于UML中的几种关系,却迟迟未动,看来自己真懒,趁这个时间,我将别人写的“偷”过来,作为警示吧。内容见下面的博客。
http://www.cnblogs.com/demon521/archive/2009/01/12/1374175.html
这几天要写点文档用到UML的类图,重新再次捡起以前的知识,多多少少有点总结,在这里记录下来,也算是以备后用吧。
在这里推荐大家可以尝试着用用以下我推荐的二种UML工具:
- Visual.UML.Developer.Edition.v5.1(感觉不错,功能强大,不过收费)
- StarUML(开源免费,05年之后就没有再维护更新过,韩国人开发,符合亚洲人的习惯)
在UML类图中,类与类之间的关系主要有以下几种:
- 泛化(Generalization)
所谓的泛化就是我们最常用的继承关系
1: public class Employee
2: {
3:
4: }
5: public class SaleEmployee:Employee
6: {
7:
8: }
- 依赖(Dependency)
依赖关系是指一个类对别一个类的依赖,比如说Employee类中有一个方法叫做TakeMoney(Bank bank)这个方法,在这个方法的参数中用到了Bank这个类,那么这个时候可以说Employee类依赖了Bank这个类,如果Bank这个类发生了变化那么会对Employee这个类造成影响。
1: public class Employee
2: {
3: public long TakeMoney(Bank bank)
4: {
5: return long.MaxValue;
6: }
7: }
- 关联(Association)
关联关系有点边界模糊和依赖有点像,但又完全不像。关联是指一个类用到了另外的一个类,但不依赖。还是用代码来表达比较贴切
1: public class Shcool
2: {
3: public Student stu;
4: }
5: public class Student
6: {
7:
8: }
- 聚合(aggregation)
聚合是一种单向关系,聚合与关联的区别在于聚合的两个类之间的关系在概念层次上不是一个级别的,一般来说聚合中的类关系总是一个类比别一个类要高级一些,而关联基本上是平级的
1: public class Car
2: {
3: public Engine engine;
4: public Wheel wheel;
5: }
6: public class Engine
7: {
8:
9: }
10: public class Wheel
11: {
12:
13: }
- 合成(Composition)
合成是一种特殊的聚合形式,它是提类与类之间的联系是非常密切的,少了那一个也不行。
- 实现(Realization)
简单的说就是接口
最后,推荐一个博客:http://blog.csdn.net/maybehelios/article/details/2038685