面向对象的软件架构设计

1 概述
2 设计类的接口和操作
3 设计信息隐藏类
4 设计继承
5 类接口规约
6 类的详细设计

1 概述

  • 信息隐藏
  • 接口的实现与分离
  • 顺序性面线对象软件设计,拥有一个控制线程。对象之间通信采用调用返回模式。

2 设计类的接口和操作

  • 类的接口由每个类提供的操作组成。包括输入参数、输出参数、返回值。
  • 类的操作可以根据静态模型或动态模型确定。
  • 类的操作可以基于交互模型设计。当两个对象交互时,发送消息的对象调用接受消息的对象的操作。消息传递映射为操作调用。(消息名=操作名,消息参数=操作参数)
  • 分析模型,捕获对象间传递的消息,而不是操作的准确语法。设计模型,必须提供操作的准确语法,包括名称和结构。
  • 调用操作=通信图中的同步消息。返回值=返回消息。

3 设计信息隐藏类

3.1 实体类设计

  • 实体类是封装数据的类,其实例用来存储信息的持久化对象。
  • 实体类分为数据抽象类和包装器类。数据抽象类:封装数据结构。包装器类:隐藏了数据,提供了接口。
  • 分析模型中的实体类被设计为数据抽象类。封装了数据结构,并隐藏了数据结构的内部细节。属性静态建模时确定,操作动态建模时确定。

3.2 控制类设计

  • 为一组对象提供总体调用。
  • 被动控制类:状态机类。主动控制类:协调者类和计时器类。
  • 状态机类封装了一个状态图中的信息,状态机对应的状态图可以用状态表来描述。状态机提供了访问访问状态转化表和改变对象状态的操作
  • 可复用的状态机类:processEvent(in event, out action) 通过这个方法,来接受所有的事件,输出不同的动作。

3.3 边界类

  • 与外部环境通信
  • 通常是主动类:IO类或者代理类。也可以使被动类,图形用户交互类。
  • 图形用户交互类,捕获用户的输入信息,以及向用户显示信息。

3.4 应用逻辑类

  • 封装特定应用的逻辑和算法。
  • 主动类,算法通常都是主动的。被动类:业务逻辑类和服务类。
  • 业务逻辑类的设计:定义了处理客户端请求的决策以及特定业务的应用逻辑。

4 设计继承关系

4.1 设计方法

自顶向下的设计方法
  • 先设计一组类的总体特征的超类,然后设计具有差异性的子类
自底向上的设计方法
  • 设计一组包含共同特征和不同特征的类。
  • 再将共同特征泛化为一组超类。
混合方法

4.2 具体设计

抽象类
  • 抽象类是一种通过继承来共享特征和行为的机制。
  • 不能实例化,用来创作子类,作为超类,为子类提供接口。
  • 抽象操作:没有实现,只有声明,一个抽象类至少包含一个抽象操作。具体类继承抽象类,必须实现抽象操作。
  • 非抽象操作:抽象类中给出实现的动作,被所有子类共享,子类可以复写。
5 类的接口规约

5.1 信息隐藏类的接口:

5.2 操作的定义

  • 所执行的功能
  • 前置条件
  • 后置条件
  • 不变量
  • 输入参数
  • 输出参数
  • 所使用的其他类的操作。

6 类的详细设计

6.1 详细设计的工作

  • 确定每个操作的内部算法(使用伪代码,要独立与特定的编程语言)

说实话,我现在在学习的应该是一种建模架构的方法,当你拿到一个项目的时候,首先要知道开展工作的步骤是哪些。每一步是从什么样的角度展开研究。每一个研究可以借助什么样的工具方法以及这样的研究的目的。通过一步步的实践,可以让你熟练这个过程,所以你在这里学习的是一种解决问题的思路,而不是简简单单的建模建模!!! 建模是干啥的,能解决什么问题,有什么意义,这才是关键,所以,你要从头看一遍书,认认真真的看一遍,了解其中的关键内容。