我正在开发一个大型项目(对我而言),该项目将有很多类并且需要可扩展,但我不确定如何规划我的程序以及这些类需要如何交互。
几个学期前我参加了 OOD 课程,从中学到了很多;比如编写 UML,以及将需求文档翻译成对象和类。我们也学习了序列图,但不知何故我错过了讲座或其他东西,他们并没有真正坚持我。
在以前的项目中,我尝试过使用从课程中学到的方法,但通常最终会得到这样的代码新的功能。
我有一份 Steve McConnell 的 Code Complete 的副本,我在这里和其他地方不断听到它令人惊叹。我阅读了关于设计的章节,但似乎没有找到我正在寻找的信息。我知道他说这不是一个简单的过程,它主要基于启发式,但我似乎无法将他的所有信息应用到我的项目中。
那么 在高级设计阶段(开始编程之前)你做了什么来确定你需要什么类(尤其是那些不基于任何“现实世界对象”的类)以及它们如何相互交互 ?
具体来说,我对您使用的方法很感兴趣?您遵循的流程是什么,通常会产生一个良好、干净的设计,将紧密地代表最终产品?
我用于初始设计(获取类图)的步骤是:
需求收集。与客户交谈并分解用例以定义软件应具有的功能。
撰写单个用例的叙述。
通过叙述并突出名词(人、地点、事物),作为候选类和动词(动作),作为方法/行为。
丢弃重复的名词并排除常见的功能。
创建类图。如果您是 Java 开发人员,Sun 的 NetBeans 6.7 有一个 UML 模块,它允许绘制图表以及往返工程,而且它是免费的。Eclipse(一个开源Java IDE),也有一个建模框架,但我没有使用它的经验。您可能还想尝试开源工具 ArgoUML。
应用 OOD 原则来组织你的类(分解出常见的功能,构建层次结构等)