您好,欢迎访问一九零五行业门户网

1.2 《硬啃设计模式》 第2章 学习设计模式需掌握的UML知识

要看懂 设计模式 ,你需要懂 类图 (class diagram ),也需要懂一点对象图(object diagram),下面介绍一些 uml 的必要知识,以便你学习设计模式。 属性、操作 下图简单介绍类的属性和操作。 类有属性(attributes)、操作(operations),属性和操作统称特
要看懂设计模式,你需要懂类图(class diagram),也需要懂一点对象图(object diagram),下面介绍一些uml的必要知识,以便你学习设计模式。
属性、操作
下图简单介绍类的属性和操作。
类有属性(attributes)、操作(operations),属性和操作统称特性(features)。
下图进一步详细介绍类图细节,包括:属性和操作的作用域、属性类型、参数类型、方法返回值类型等。
接口、枚举
抽象类
继承关系
类b继承类a,如下图:
抽象类被继承,如下图:
实现关系
实现是指某接口被实现,而不是某类被实例化。
实现如下图:
依赖关系
先看图:
b依赖a,表示如果a的接口发生变化,b也需要相应地改变。
依赖的常见情况有:
1. b调用了a的方法。
2. b的方法中,使用了a为参数。
3. b的方法返回值类型为a。
引用关系
先看图:
class1有箭头指向class2,表示class1中含有class2的引用。
而上图进一步明确了具体的引用方式,就是:class1中的私有变量m_class2的类型是class2。
你可能会问:某类保持另外一个类的引用,一般都会调用另外一个类的方法,那么它们的关系不应该是依赖关系吗?引用关系与依赖关系有什么区别?
这个问题很好!某些情况下,某类保持另外一个类的引用,但该类不调用另外一个类的方法,而是将另外一个类的引用暴露出来,供外部调用。
例如class1有某一属性class2,访问该属性可获得class2的实例:
class1 = new class1( );
class2 = class1.class2;
class1虽然有class2的引用,但它自身不调用class2的方法,而是让外部通过熟悉获得class2的实例。
不过很多资料及书籍对“依赖关系”及“引用关系”的解释并不到位,不同资料之间的解释甚至是互斥的。而我见到的大部分设计模式的类图都不会区分“依赖关系”和“引用关系”,大部分设计模式的类图都会画成“引用关系”,本书后面的类图也将会不区别这两者,全部画成“引用关系”。
“包含”关系
我将“包含”关系分为“弱包含”和“强包含”,下图上面的是“弱包含”,下图下面的是“强包含”,此图说明了两种包含的区别。
“弱包含”和“强包含”只是我的一种俗称,学术的叫法是“聚合”和“组合”,一般资料可能会搞到你很晕,下图希望可以进一步解释清楚。
设计模式的类图中不少地方会用到“包含”关系,一些资料画成“强包含”,一些资料画成“弱包含”。我个人将“强包含”看成是“弱包含”的一种特例,大部分情况下我先画成“弱包含”,有需要才转化为“强包含”。本书中的包含关系,全部都画成“弱包含”。
对象图
类实例化后就是对象(object),表示这些对象及对象之间关系的图就是对象图。有时候需要用对象图来表示设计模式。
对象图的例子:
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
cmmi首席专家
《火球——uml大战需求分析》作者
《硬啃设计模式》作者
www.umlonline.org创办人
其它类似信息

推荐信息