将设计映射为代码
目标:
- 使用面向对象语言将设计制品映射为代码。
我们以及为案例研究的当前迭代完成了交互图和DCD,现在可以用这些思想和细节来编写一些对象的领域层代码了。
在设计工作中创建的UML制品可以作为代码生成过程的输入。
在UP中具有实现模型。源代码、数据库定义、JSP/XML/HTML等都是实现制品。因此,本章中创建的代码可以被看做时UP实现模型的一部分。
编程和迭代、进化式开发
不应该因为有了先前得到设计模型就舍弃了建立原型或编程期设计的工作,现代开发工具为快速探索和重构替代方案提供了优秀的缓解,一些编程期设计时很有价值的。
用OO语言创建代码并不是OOA/D的一部分,它时最终的目标。在设计模型中创建的制品为生成代码提供了必要的信息。
用例、OOA/D和OO编程结合使用可以提供从需求到代码的端到端的路线图。各种制品能够被可追溯地和有效地输入到其后续制品中,并最终形成可运行的应用。但这一过程并不会一份风扇或者只要机械爹遵循即可,因为其中的变数很多。但是线路图可以为实践和讨论提供一个起点。
实现过程中的创造和变数
在设计工作中完成了一些制定决策和创造性的工作。在后续对这些示例生成代码的讨论中,会看到一些相对机械的转换过程。
然而,一般来说,编程工作并非微不足道的代码生成步骤,事实恰恰相反!实际上,在实际建模中产生的结果只是不完整的第一步。在编程和测试过程中,会做出很多的变更并且要法相和解决无数细节问题。
如果做的好,那么可以将OO设计建模过程中形成的思想和理解作为良好的基础,提高原创的优雅型和健壮性从而应对编程中遇到的新问题。但是,要对编程中村啊在变化和偏差啊有所预计和计划。这是在迭代和进化式方式中的关键。
将设计映射到代码
面向对象语言中的实现需要为以下元素编写源代码:
- 类和接口的定义
- 方法的定义
由DCD创建类的定义
至少,DCD描述了类或接口的名称、超类、操作的特征标记以及类的属性等。这以及足以在OO语言中创建基本类的定义了。如果DCD时使用UML工具绘制的,那么还可以从图形中生成基本的类定义。
定义具有方法特征标记和属性的类
从交互图创建方法
交互图中的一些列消息可以转换为方法定义中的一系列语句。
代码中的集合类
一对多关系非常常见。这些关系通常使用集合对象或简单的数组来实现。
选择使用哪种集合类当然要由需求来决定。
如果对象实现的是接口,那么使用接口而不是具体类来生命变量。
异常和错误处理
在目前的开发中还未设计异常处理。这是有意的,因为我们要关注职责分配和对象设计的基本问题。但是对于应用开发,在设计建模过程中考虑大规模的异常处理策略是明制的,当然在实现过程中也是如此。
定义Sale.makeLineItem方法
实现的顺序
类的实现要按照从耦合度最低到耦合度最高的顺序来完成。
测试驱动或测试优先的开发
测试驱动开发或测试优先开发时极限编程方法提倡的优秀实践,这些使劲按也适用于UP和其他迭代方法。在这种实践中,要在测试代码之前完成单元测试代码的编写,同时开发者要为所有产品代码编写单元测试代码。其基本规律时,编写一小段测试代码,然后在编写一小段产品代码,保证产品代码能够通过测试,然后编写更多的测试diamagnetic,一次类推。
将设计映射为代码的总结
如上所述,从UML类图到类的定义以及从交互图到方法体之间存在转换过程。但是在编程工作中仍然存在创造、进化和探索的空间。