开发者如何设计对象?一般采用如下三种方式:
- 编码。在编码的同时进行设计(java、C#、---),更为理想的是使用诸如再工程(refactoring)这样的强大工具。根据想象的模型直接编码。
- 绘图,然后再编码。在白板或UML CASE工具中绘制一些UML,然后转到第一种方式,使用文本增强型集成开发环境(IDE,如Eclipse或Visual Studio)进行编码。
- 只绘图,不编码。使用工具从图中生成一切。“只绘图”是不当之词。因为实际上还是会在UML图形元素上附加文本的编程语言。
一些敏捷建模的目标是减少常用图形,建模的目的是为理解和沟通而不是构建文档。可以尝试简单的敏捷建模方法——“UML草图”。一般中小公司都采用这种方式,而大公司都有很严格的UML制品。
设计对象:什么是静态和动态建模
对象模型有两种类型:动态和静态。
动态模型有助于设计逻辑、代码行为或方法体,例如UML交互图(顺序图或通信图)。注:这里的顺序图是UML顺序图,并非是上一篇文章中的系统顺序图(SSD)。动态模型倾向于创建更为有益、困难和重要的图形。
静态模型有助于设计包、类名、属性和方法特征标记(但不是方法体)的定义,例如UML类图
静态和动态建模之间具有关系,敏捷建模对此的实践是并行创建模型:花费较短的时间创建交互图(动态),然后转到对应的类图(静态),交替进行。
动态对象建模
UML初学者(包括我)一般会认为静态视图的类图是重要图形,但事实上。大部分具有挑战性、有益和有效的设计工作都会在绘制UML动态视图的交互图的时候发生。需要哪些对象,它们是徒河通过消息和方法进行协作,通过动态对象建模(例如绘制顺序图)才能真正落实这些准确和详细的结论。
准则 应该把事件花费在交互图(顺序图或通信图),而不仅仅是类图上。忽视这一准则是十分常见的UML错误实践。
注意:在应用职责驱动设计和GRASP原则的动态建模过程中,这一准则尤其重要。在第一篇文章也提到,这里又出现了,索性这里先稍微解释一下.所谓的职责驱动设计,简单地说就是职责必须匹配。什么是职责呢?简单地说,一个类或构件的职责包括两个方面:一个是指导的事,对于一个类来说就是他的属性;一个是能做的事,对于一个类来说就是他的方法(来自百度百科)。虽然看上去不是很严谨,但可以通俗理解了职责驱动设计是以职责为中心。关于职责驱动设计和GRASP会在后续文章详细讨论。
静态对象建模
最常见的静态对象建模是使用UML类图。这没什么好说的。注意:如果开发者应用了并行创建若干模型的敏捷建模实践,则他们应该同时绘制交互图和类图。
最后说明一点, 对象设计技能比UML表示法技能更重要
对象设计技能与UML表示法技能
绘制UM反映了对设计做出的决策。
对象设计技术并不一定要了解如何绘制UML
基本的对象设计需要了解的是:
- 职责分配原则
- 设计模式
下篇将介绍应用UML图的详细对象设计。主要是交互图和类图。