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

1.5 简单示例

在深入探讨迭代开发、需求分析、UML和OOA/D之前,本节先对一些关键步骤和图进行概览。这里使用一个简单的示例——“骰子游戏”,软件模拟游戏者掷两个骰子,如果总点数是7则赢得游戏,否则为输。

定义用例

需求分析可能包括人们如何使用应用的情节或场景,这些情节或场景可以被编写成用例(use case)。

用例不是面向对象制品,而只是对情节的记录。但用例是需求分析中的一种常用工具。例如,下面是一个简单的骰子游戏的用例。

骰子游戏:游戏者请求掷骰子。系统展示结果:如果骰子的总点数是7,则游戏者赢;否则游戏者输。

定义领域模型

面向对象分析关注从对象的角度创建领域描述。面向对象分析需要鉴别重要的概念、属性和关联。

面向对象分析的结果可以表示为领域模型(domain model),在领域模型中展示重要的领域概念或对象。

例如,图1-3显示了领域模型的一部分。

图1-3 骰子游戏的局部领域模型

这一模型描述了重要的概念(Player、Die和DiceGame)及其关联和属性。

需要注意的是,领域模型并不是对软件对象的描述,它使真实世界领域中的概念和想象可视化。因此,它也被称为概念对象模型(conceptual object model)。

分配对象职责并绘制交互图

面向对象设计关注软件对象的定义——它们的职责和协作。顺序图(sequence diagram,UML的一种交互图)是描述协作的常见表示法。它展示出软件对象之间的消息流,和由消息引起的方法调用。

例如,图1-4中的顺序图描述了骰子游戏的OO软件设计,即给DiceGame和Die类的实例发送消息。该图是白板上的草图,这是现实世界中使用UML的常见方式。

要注意的是,尽管在真实世界中是由游戏者掷出骰子,但在软件设计中是却由DiceGame对象“掷出”骰子(即发送消息给Die对象)。软件对象设计和程序可从真实世界领域中获取灵感,但它们并不是对真实世界的直接建模或模拟。

图1-4 顺序图描述软件对象之间的消息

定义设计类图

除了在交互图中显示对象协作的动态视图外,还可以用设计类图(design class diagram)来有效地表示类定义的静态视图。这样可以描述类的属性和方法。

例如,在骰子游戏中,通过观察顺序图可以导出图1-5所示的局部设计类图。因为向DiceGame对象发送了play消息,所以DiceGame类需要play方法;同理,Die类需要roll和getFaceValue方法。

图1-5 局部设计类图

与领域模型表示的是真实世界的类,设计类图表示的是软件类。

要注意的是,尽管设计类图不同于领域模型,但是其中的某些类名和内容还是相似的。从这一方面讲,OO设计和语言能够缩小软件构件和我们所设想的领域模型之间的差距,即实现低表示差距(lower representational gap)。

小结

骰子游戏是一个简单的问题,举这个例子只是为了探讨分析和设计中的一些步骤和制品。为了简洁起见,这里并没有解释图示中给出的所有的UML符号。在后面章节中将详细地探讨分析和设计及其制品。 KpgVMQH8JTsC6QlIFuf27g0GRCn7ZHLO+O0Ps/pvOWCy6GLxM5JX7IY22N8DhW0o

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