OOAD(Object Oriented Analysis and Design) 面向对象的分析与设计

OOA 分析阶段

  • 建立针对业务问题域的清晰视图

  • 列出系统必须要完成的核心人物

  • 针对问题域建立公共词汇表

  • 列出针对此问题域的最佳解决方案

    核心问题:What to do ? 要做什么?

OOD 设计阶段

  • 如何解决具体的业务问题

  • 引入系统工作所需的支持元素

  • 定义系统的实现策略

    核心问题:How to do ? 如何做?

关系

关联关系 (Association)

用户和订单之间是关联关系

一个用户对应多个订单(一对多)

订单和用户之间是多对一

用户和订单是一对多双向关联

依赖关系 (Dependency)

某个类依赖某个类的某个方法

A类new B类实例

聚集关系 (Aggregation)

整体与部分之间的关系

人和手之间

一般化关系 (Generalization)

指的是类之间继承关系

内聚和耦合

设计原则:增加内聚,减少耦合

内聚

度量一个类独立完成某项工作的能力

耦合

度量系统内或系统之间依赖关系的复杂度

软件开发采取迭代,递增生命周期

每一个周期包含一次或多次迭代

一个阶段的结束称之为**“里程碑”**(milestone) :M1 M2 M3 版本

UML(Unified Modeling Language) 统一建模语言

图形化的语言表示

静态模型(static model)

创建并记录一个系统的静态特征

反映一个软件系统基础,固定的框架结构

创建相关问题域主要元素的视图

该模型包含:

  • 用例图 (use case diagrams)
  • 类图 (class diagrams)
  • 对象图 (object diagrams)
  • 组件图 (component diagrams)
  • 部署图 (deployment diagrams)

用例图 (use case diagrams)

展示系统的核心功能及与其交互的用户

用户被称之为"活动者" (Actor)

用例使用椭圆表示

为简化建模过程,用例图可标注优先级

user_case

类图 (class diagrams)

表现类的特征

类图描述了多各类,接口的特征,以及对象之间的协作与交互

由一个或多个矩形区域构成,内容包括:

  • 类型(类名)
  • 属性(可选)
  • 操作(可选)

class

对象图 (object diagrams)

表现对象的特征

对象图展示了多个对象的特征及对象之间的交互

object

组件图 (component diagrams)

表现软件组件之间的关系

component

部署图 (deployment diagrams)

用于部署软件应用的物理设备信息

deployment

动态模型(dynamic model)

用以展示系统的行为

  • 时序图 (sequence diagrams)

  • 协作图 (collaboration diagrams)

  • 状态图 (state chart diagrams)

  • 活动图 (activity diagrams)

时序图 (sequence diagrams)

捕捉一段时间范围内多个对象之间的交互信息

强调消息交互的时间顺序

sequence

协作图 (collaboration diagrams)

表现一定范围内对象之间协作的信息

强调参与信息交流的对象之间的组织结构

collaboration

状态图 (state chart diagrams)

强调一个对象在不同事件触发时,其内部状态的转变过程

state_chart

活动图 (activity diagrams)

描述活动的流程

activity