《UML和模式应用》读书笔记 1

《UML和模式应用》读书笔记 1编程

 

第1章 面向对象分析和设计dom

 

面向对象分析和设计是面向对象活动的子集。在面向对象开发中,最重要的是合理地为软件对象分配职责。这对软件的健壮性、可维护性、可重用性具备重要的影响。编程语言

 

分析和设计有很是紧密的关系,但同时两者的区别也很是明显。分析(analysis)强调的是对问题和需求的调查研究,不包括解决方案。设计(design)强调的是知足需求的概念上的解决方案。实现(程序源代码)表达了真实和完整的设计。面向对象分析(object-oriented analysis)强调的是在问题领域内发现和描述对象(或概念)。面向对象设计(object-oriented design)强调的是定义软件对象以及它们的协做方式。工具

 

一个完整的面向对象分析和设计过程,一般包含如下4个步骤:定义用例、定义领域模型、分配对象职责并定义交互图、定义设计类图。第1个步骤属于分析过程,后面3个步骤属于设计过程。下面用一个简单的骰子游戏来展现面向对象分析设计的完整过程。设计

 

首先是定义用例。用例(use case)记录了用户如何使用软件的情节或场景。用例是需求分析中一种很是有效的工具。在骰子游戏中,用例能够用下面的话来描述:对象

 

骰子游戏:游戏者请求掷骰子。系统展现结果:若是骰子的总点数是7,则游戏者赢;不然游戏者输。游戏

 

接下来要定义领域模型。面向对象分析的特色是从对象的角度来创建领域描述。面向对象分析须要识别(区分)重要的概念、属性和关联,并将这些表示为领域模型(domain model)。领域模型关注的是真实世界中的概念,而不考虑软件对象。在骰子游戏中,能够看到有3个概念:“玩家(Player)”、“骰子(Die)”和“游戏(DiceGame)”。玩家具备属性“名字(name)”和行为“掷(rolls)”。骰子具备属性“点数(faceValue)”。三者之间的关系是:一局游戏包含一个玩家和两个骰子,玩家掷两个骰子。这些关系能够用下图来表示:事务

领域模型用于描述问题领域结构(概念及概念之间的关联)。领域模型是静态的,不关注系统行为或子系统的行为。在骰子游戏中,玩家的行为“掷”出如今领域模型里,这是由于玩家和骰子是经过行为“掷”关联起来的。做为一种关联,“掷”是领域结构的一部分。可是领域模型不关注“掷”这个行为自己,也不关注这个行为产生的结果和影响。开发

 

接下来须要分配对象职责并定义交互图。这里有一点要特别注意:软件设计能够从真实世界中获取灵感,但软件不必定是真实世界的直接建模或模拟。在骰子游戏中能够创建两个软件对象:骰子游戏(DiceGame)和骰子(Die)。游戏负责“掷”骰子,骰子负责展现点数。io

 

在为软件对象分配职责以后,能够绘制交互图。这里主要使用的是时序图(sequence diagram)。时序图展现了软件对象之间的消息流。骰子游戏的时序图以下:

最后是定义设计类图(class diagram)。类图用于描述软件对象。下面是骰子游戏的类图:

 

在完成定义设计类图工做后,分析和设计工做就完成了(或者说完成了一次分析设计迭代)。从上面的介绍能够看出,面向对象分析设计工做,各阶段的工做产出物分别是用例、领域模型、时序图和类图。

 

这里要对“类(class)”这个术语作一些说明。在定义交互图和类图时,须要使用软件类(software class)来表示一个软件对象。软件类关注对应软件对象的规范。按照这个规范编写的代码,称为实现类(implementation class)。实现类是Java或其余面向对象编程语言中的类。有时,领域概念(domain concept)也被称为概念类(conceptual class)。概念类表示真实世界中的事务或概念。软件类、实现类、概念类均可以简称为类。术语“类”的具体含义,要根据上下文肯定。

相关文章
相关标签/搜索