购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 本书的主要内容

良好的对象设计意味着什么?本书是帮助开发者和学生学习面向对象分析和设计(OOA/D)的核心技能的重要工具。对于使用面向对象技术和语言(如Java或C#)来创建设计良好、健壮且可维护的软件来说,掌握这些技能是基本要求。

“拥有一把锤子未必能成为建筑师”,这句谚语在对象技术领域同样适用。对创建对象系统来说,了解面向对象语言(例如Java)是必要的,但不是首先要做的。了解“对象思想”才是关键所在!

本书是对应用了统一建模语言(UML)和模式的OOA/D的介绍。同时,对于迭代开发,本书使用统一过程(Unified Process)的敏捷方法作为示例迭代过程。本书并不打算进行高深的论述,而是强调对基本原理的掌握,例如,如何为对象分配职责、常用的UML表示法和常见的设计模式。同时,在随后的各章中将进一步介绍一些中级主题,例如框架设计和架构分析。

UML和对象思想

本书不仅是关于UML的。UML是标准的图形表示法。常用的表示法是有用的,但是还有更重要的面向对象的内容值得学习,特别是如何用对象进行思考。UML并不是OOA/D,也不是方法,它只是图形表示法。如果没有真正掌握如何创建优秀的面向对象设计,或者如何评估和改进现有设计,那么学习UML或者UML CASE工具是毫无意义的。对象思想才是重点和难点。因此,本书重点阐述对象设计。

而且,我们需要一种用于OOA/D和“软件蓝图”的语言,这既是一种思考的工具,也是一种沟通的形式。因此,本书也将探讨如何在OOA/D中应用UML,并涵盖经常使用的UML表示法。

OOD的原则和模式

应该如何为对象类分配职责(responsibility)?对象之间应该如何协作?什么样的类应该做什么样的事情?这些都是系统设计中的关键问题,而本书将会讲授作为经典OO设计之象征的职责驱动设计(responsibility-driven design)。同时,某些针对设计问题的,经过反复验证的解决方案可以(和已经)被表示成为最佳实践的原则、启示或模式(pattern),即问题-解决方案公式,这些公式是系统化的、典范的设计原则。本书将会通过讲授如何应用模式或原则,使读者更快地学习和熟练使用这些基本的对象设计习惯用法。

案例研究

本书对OOA/D的介绍是通过一些贯穿全书的案例研究(ongoing case study)来阐述的,并且充分深入到了分析和设计中,考虑和解决了现实问题中令人生畏但必须被考虑和解决的细节。

用例

OOD(以及所有软件设计)与作为其先决活动的需求分析(requirement analysis)具有紧密联系,而在需求分析中通常包含用例(use case)的编写。因此,尽管这些主题并非是特定于面向对象的,但也会在案例研究的开始对其进行介绍。

迭代开发、敏捷建模和敏捷UP

假设从需求到实现会涉及众多可能的活动,那么开发人员或团队应该如何进行下去呢?需求分析和OOA/D需要在某种开发过程的语境中进行描述和实践。在这种情况下,使用著名的统一过程(Unified Process)的敏捷(轻量的、灵活的)方法作为迭代开发过程(iterative development process)的样例,并在这一过程中介绍需求分析和OOA/D的主题。然而,这里所涵盖的分析和设计主题对于许多开发过程是通用的,在敏捷UP的语境中学习它们并不影响这些技术对于其他方法的适用性,这些方法包括Scrum 、Feature-Driven Development (FDD) 、Lean Development 、Crystal Methods 等等。

总之,本书帮助学生或开发人员:

·应用原则和模式来创建更好的对象设计。

·基于作为示范的UP敏捷方法,在分析和设计中迭代地遵循一组公共的活动。

·创建在UML表示法中常用的图。

本书通过在若干迭代中不断演化的案例研究来阐述以上内容。

其他重要技能

本书并不是软件大全,其主旨是对OOA/D、UML和迭代开发进行介绍,同时会涉及相关主题。构建软件还包括其他技能和步骤。例如,可用性工程、用户界面设计和数据库设计等都是成功的关键。

图1-1 本书所涵盖的主题和技能 KlQmyMecYrtKeAI29YuBAVGJFWB7UwFunnciKilaUq+0KeM6oNJjIM3q76ZwSf9K

点击中间区域
呼出菜单
上一章
目录
下一章
×