面向对象分析

1、面向对象原则
抽象,封装,模块化,层次

在概念上,最核心的抽象内容的对象
对象是一个具有明确边界和唯一标识,且封装了行为和状态的实体。

用对象分解取代了传统方法的功能分解。

面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。

传统的软件开发方法调自顶向下完成软件开发,属过程抽象。
   面向对象的环境提供了更强有力的抽象机制,支持从特殊到一般的归纳思维过程;通过建立类等级而获得的继承特性,支持从一般到特殊的演绎思维过程。

2、面向对象方法的步骤
面向对象分析
Object Oriented Analysis, OOA
面向对象设计
Object Oriented Design, OOD
面向对象编程
Object Oriented Programming, OOP

行为:用例图,活动图,时序图,通信图
结构功能:类图,包图

3、用例图
谁与系统交互,外界世界希望系统做什么?
要素:执行者、用例、关系(包含、扩展、泛化)
系统框常被省略

4、活动图
动作:行为的基本单元
控制流:
控制节点:起协调动作的作用
初始、分叉、判断、汇合、终止
对象节点:是动作处理的数据

带泳道的活动图:
用泳道实现分组,已明确责任。

5、类图
继承/泛化:
关联:
依赖
接口与实现

6、时序图
刻画对象间的动态交互

7、通信图
通信图强调的是发送和接受消息的对象之间的组织结构。

8、包图
UML提供一种称为包(package)的组织元素

9、面向对象分析建模
分析建模步骤:
1. 用例建模
1.1识别actor和use case,画Use-Case图
1.2 编写Use-Case Spec.
1.3 优化Use-Case图的结构
2. 建立概念模型
3. 用例分析(识别用例实现,识别分析类)

事件流(基本流和备选流)
一个基本流,多个备选流
每个用例的事件流动作都对应一个活动。

用例规约的细化
识别用例->用例分步提纲->细化用例规约->白盒用例规约

用例模型的优化
包含Include
多个用例存在共同行为,可以分提炼一个新的用例。
扩展Extend
若用例的部分行为是可选的,可分离形成扩展用例
泛化Generalization
若多个用例在行为和结构上具有共同点,可以分离出形成父用例。

建立概念模型
2.1 识别Conceptual Class
2.2 建立Conceptual Class之间的关系
2.3 增加 Conceptual Class的属性
(画类图)

概念类:
physical or tangible objects(物理实体)
form or abstract noun concepts(表单或抽象名词)
Organizations(机构)

类之间的关系
(1)Association(关联)
Aggregation(聚合)
Composition(组合)
(2)Inheritance/Generalization(继承/泛化)
(3)Dependency(依赖)

在概念模型中,类的属性比操作更为重要。

用例分析
3.1 识别出用例实现
3.2 针对每个用例实现:
-识别出分析类
-建立时序图,生成通信图
-对照通信图建立类图,完善每个分析类的属性和操作

用例实现用于表达基于分析与设计视角的用例内容,主要包括以用例事件为线索的动态交互视图(通信图和时序图)和静态视图(类图)。

用例实现充当了从以需求为中心到以设计为中心转移的桥梁, 用例与用例实现的关系是依赖关系的衍型《 realize 》。

识别出分析类
MVC设计模式
View(系统与外部交互的边界) 边界类Model(系统记录与维护信息) 实体类 Control(系统运行的控制逻辑)控制类

识别边界类:
执行者和用例之间的一条 通信关联对应一个边界类

识别控制类:
使用或规定若干实体类的内容,协调这些实体类的行为。

完成用例分析:
建立时序图,生成通信图
对照通信图建立类图,完善每个分析类的属性和操作

消息的传递过程就是将职责指派到分析类的过程。

构建对象模型——原文分析法
(概念模型/领域建模/静态结构图/类图)
对象模型通常由下述5个层次组成: 主题层(Subject)、类与对象层(class-object)、结构层(structure)、属性层(attribute)和服务层(service) 。
上述5个层次对应着在面向对象分析过程中建立对象模型的5项主要活动:
找出类与对象 (Finding Class-object)
识别结构(Recognising Structure)
识别主题(Recognising Subject)
定义属性(Defining attribute)
定义服务(Defining service)
  这5项活动没有必要顺序完成,也无须彻底完成一项工作以后再开始另外一项工作。

猜你喜欢

转载自blog.csdn.net/algzjh/article/details/80731794