面向对象技术总结
OOA
- 需求模型
- 基本模型
- 辅助模型
- 模型规约
类图
系统参与者:人员、设备、外系统
注:参与者、执行者、操作者均指 Actor
静态图:类图、对象图、构件图、包图、部署图、外扩图、组合结构图
动态图:用况图、状态机图、活动图、顺序图、通信图、交互概观图、定时图
类图的步骤:
- 概念(词汇)建模:
- 考虑系统边界
- 考虑问题域和系统责任
- 审查与筛选
- 识别主动对象
- 对象分类,建立类
- 内部特征(属性、操作)建模
- 表示普通关联关系的属性,使用指向另一端对象的指针或对象标识为数据类型
- 表示聚合关系的属性,使用部分对象类与整体对象类为数据类型
- 表示组合关系的属性,使用部分对象类为数据类型
- 区分类属性、实例属性,类操作、实例操作
- 外部关系建模
- 识别泛化(继承)关系
- 识别关联、聚合、组合关系,必要时附加关联类
- 识别依赖关系
- 识别实现关系
- 协作建模
- 数据库建模
问题域:被开发系统的应用领域
系统责任:所开发系统应具备的职能
OOA 的基本任务:
运用面向对象方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域和系统责任所需的类和对象,定义这些类和对象的属性和操作,以及它们之间所形成的各种关系。 最终目的是产生一个符合用户需求,并能够直接反映问题域和系统责任的 OOA 模型及其规约。
OOA 模型应独立于实现环境。与实现条件有关的问题都推迟到 OOD 考虑。
如果一个交互是由系统外的参与者发起的,第一个处理该交互的对象是主动对象
顺序图
顺序图是系统行为(交互)的建模工具。顺序图强调对象间的控制流。
元素:对象(参与者)、消息、生命线和执行规约
通信图
通信图与顺序图语义等价,可相互转换。
活动图
活动图是描述操作步骤的建模工具。活动图强调的是活动间的控制流。
注:活动可能由不同类中的不同操作实现。
状态机图
状态机图是系统行为(生存周期)的一种建模工具。
注:状态图的节点指明对象处于什么状态,活动图的节点指明系统接下来要执行什么步骤。
OOD
OOA 主要针对问题域,识别有关的对象以及它们之间的关系,产生一个映射问题域,满足用户需求,独立于实现的 OOA 模型。
OOD 主要解决与实现有关的问题,基于 OOA 模型,针对具体的软、硬件条件(如机器、网络、OS、GUI、DBMS等)产生一个可实现的 OOD 模型。
问题域部分
实现条件对问题域部分的影响:
- 编程语言
- 硬件、操作系统及网络设施
- 复用支持
- 数据管理系统
- 界面支持系统
如何进行问题域部分的设计:
- 复用类
- 增加一般类
- 调整继承与多态
- 提高性能
- 实现永久存储
- 增加底层细节
- 对复杂关联的转化
- 调整与完善属性
- 构造和优化算法
- 决定对象间的可访问性
- 定义对象实例
- 其他
人机交互部分
需求分析:
- 分析与系统交互的人
- 从 use case 分析人机交互
控制驱动部分
控制流间的通信机制:
- 操作调用
- 邮箱
- 共享存储器
- 远程过程调用
数据管理部分
选择关系型数据库来存放对象
构件及部署部分
构件图
OOP
纯面向对象语言:Smalltalk, Eiffel, Java
混合型面向对象语言:C++, Objective-C, Object Pascal, Python
设计模式
- 外观模式,Facade
- 桥接模式
- 单例模式,Singleton,线程池、数据库连接池、日志对象、全局计数器
- 备忘录模式
- 策略模式
- 工厂方法模式
- 抽象工厂模式
- 代理模式
- 迭代器模式
- 访问者模式
- 观察者模式
- 命令模式
- 模版方法模式
- 空对象
- mixin 模式
- 适配器模式
- 依赖注入模式
编码
- 命名
- 注释
- 视觉组织
- 语句构造
- 输入输出风格
- 魔数