面向对象是围绕对象和类来分析、设计软件系统的。
面向对象分析:
面向对象分析的主要任务是根基用户的需求,建立一个准确的、完整的、一致的系统模型。在面向对象的分析过程里,项目组通过分析软件的功能性需求,得到一个理想化的系统模型,该模型更多的侧重于描述我们需求解决的问题是什么---我们称这种模型为分析模型。
面向对象分析与面向对象设计的区别:
1、在侧重点上,面向对象分析侧重于理解问题,描述软件做什么,而面向对象设计侧重于理解解决方案,描述软件如何做。
2、面向对象分析一般只考虑理想的设计,不关心技术和实现的细节,而面向对象设计更具体、更详细、更接近真实的代码的设计方案。
3、在设计结果的描述方式上,分析阶段侧重描述对象的行为,设计阶段侧重于描述对象的属性和方法。
4、面向对象分析只关注功能性需求,而面向对象设计既关注功能性需求,也关注非功能性需求。
5、面向对象分析的产生的系统模型通常规模较小,而面向对象的设计产生的系统模型规模较大,内容也比较完整、详尽。
用例驱动的面向对象分析,面向对象分析的过程包括:
1、从用例中提取实体对象和实体类。 提取实体对象的方法,依据用例描述中出现的名词和名词短语来提取实体对象,必须对原始的名词和名词短语进行筛选。得到实体对象后,对实体对象进行归纳、抽象出实体类。
2、提取属性
3、提取关系
4、添加边界类
5、添加控制类
6、绘制类图
7、绘制顺序图
8、编制术语表
对象分析一般从一个具体用例描述开始,比如:收银员根据顾客选购的商品收费,这个就是一个具体用例。
首先分析名词:收银员 顾客 商品。
然后是动作: 计算费用并收费。
然后是限定: 1、 操作人员(收银员,管理人员,定价人员,会计,仓管人员);2、 商品(普通商品,折扣商品);3、 顾客--普通客户,普通vip客户,大集团客户。
接着是控制:商品价格控制;顾客类型控制。
最后是关系: 商品价格由具有该权限的人员管理; 费用由顾客类型决定。
于是最终设计可能就为: 操作人员类(这里可能是一个工厂类);顾客类(这里也可设计成工厂类);商品类(一个商品可能根据顾客不同而有不同的价格,所以这里可能是个装饰类);费用计算类(限定接口,只允许接收顾客和商品列表两参数,以保证最终调用者始终只有一种调用方式);只是一个简单的分析,为了描述上的简单把实体类和控制类合并了,不过如果是了解设计模式的人估计是看的明白的。