谈谈面向对象分析和设计

0 什么是分析和设计

分析其强调的是对问题和需求的调查研究,而不是解决方案,如需求分析、线上问题分析等。案例:1.如果需要做一个在线交易系统?那么他应该有哪些功能?如何使用它 2.现在一个系统有问题,需要梳理整理相关问题。分析可以理解为定义问题阶段。
设计(design)强调的是满足需求的概念上的解决方案,而不是具体实现,如面向对象设计、数据库设计。案例:设计一个数据库的表,设计E-R图等。设计可以理解对问题定义清楚好,开始寻找解决方案阶段。

1 什么是面向对象分析和设计

面向对象分析强调的是在问题领域内发现和描述对象的概念。例如在航班信息系统里面包含飞机(Plane)、航班(Flight)和飞行员等概念。
面向对象设计过程中,强调的是定义软件对象以及问它们如何协作以实现需求。

2 一个简单案例

骰子游戏:模拟游戏者掷两个骰子,如果总数是7则赢得游戏,否则为输。下图给从需求分析到最终软件设计整个流程。
在这里插入图片描述

● 定义用例
需求分析可能包括人们如何使用的系统的情节或者场景,这些情节或者场景可以被编写成用例。对于非软件开发者他们感知软件系统更多是通过功能、交互、流程、规则等
骰子游戏的用例:游戏者请求掷骰子。系统结果展示:如果骰子的总数点数是7,则游戏者赢;否则游戏者输。

在这里插入图片描述

● 定义模型
面向对象分析的结果可以表示为领域模型,在领域模型中展示重要的领域概念对象。值得说明是:这里的领域模型不是对软件对象的描述(在后续软件设计设计中会受到领域模型启发),它是真实世界中领域概念和想象可视化。领域模型是一种概念模型,也叫问题域模型,他是为了准确定义需要解决问题而构造的额抽象模型。
方法:从主语、宾语、定语、状语中提炼名词和形容词,对相应名词进行抽象成为领域模型,相关形容词抽象为其属性。从谓语、状语、定语中提炼动词和形容词,这些词决定了领域模型之间的关联关系。
按照这个方法分析上面用例:名词:游戏者、骰子、骰子游戏,动词:请求、掷。如下图所示可以得到如下概念对象模型,Die是骰子意思。

在这里插入图片描述

● 定义对象职责并绘制时序图
面向对象设计关注软件对象的定义-他的职责和协作。
在这里插入图片描述

● 定义设计类图
如下图所示给出类图关系,玩家依赖iceGame play方法去触发游戏,这里面DiceGame和Die是聚合关系,DiceGame有个times属性表示要掷几次骰子。
在这里插入图片描述

3 总结

本文中给了比较简单的案例只是为了说明软件分析和设计中一些基本流程和步骤。后续也会就各个步骤的更详细的展开和说明。

参考文献
[1]UML和模式应用

猜你喜欢

转载自blog.csdn.net/huangshanchun/article/details/121727557