OOAD与UML
1. OOAD(Object Oriented Analysis and Design)面向对象的分析和设计.
2. OOA阶段:
①建立针对业务问题域的清晰视图
②列出系统必须要完成的核心任务
③针对问题域建立公共词汇表
④列出针对此问题与的最佳解决方案.此阶段的核心问题是”What to do?"
3. OOD:设计阶段:
①如何解决具体的业务问题.
②引入系统工作需要的支持元素.
③定义系统的实现策略. 此阶段的核心问题是”How to do ?”
4.OOP的主要特性:
抽象(abstract)
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
关联(association)
聚合(aggregation)
组合(composition)
内聚与耦合(cohesion & coupling)
5.抽象:忽略细节, 关心其本质特征.
6.封装:隐藏数据和实现.提供公共方法.
对象的两种视图:
①外部试图: 对象能做的工作.
②内部试图: 对象如何完成工作.
7.继承: 通过存在的类型,定义新类型的机制.
两个类型之间的关系存在"is a" 或"kind of"这样的关系.
8.多态:一个名称, 多种形式.
9.关联:对象之间交互时的一种引用方式.
当一个对象通过对另一个对象的引用去使用另一对象的服务或操作时, 两个对象之间便产生了关联.
10.聚合: 关联关系的一种, 一个对象成为另外一个对象的组成部分.
是一种关系较强的关联.
在两个对象之间存在”has a” 这样的关系, 一个对象作为另一个对象的属性存在, 在外部对象被生产时, 可由客户端指定与其关联的内部对象.
11. 组合:
当一个对象包含另一个对象时, 外部对象负责管理内部对象的生命周期的情况.
关联关系中最为强烈的一种.
内部对象创建由外部对象自己控制,
外部对象不存在时, 内部对象也不能存在.
12. 域模型:
域模型是面向对象的, 在面向对象术语中域模型也可称为设计模型, 域模型由以下内容组成:
①具有状态和行为的域对象.
②域对象之间的关系:
关联
依赖
聚集
一般化(泛化)
13. 域对象之间的关系:
关联(Association)
依赖(Dependency)
聚集(Aggregation)
一般化(Generalization)
14. 关联(Association):
单向关联
一对多
多对一
多对多关系.
双向的关联.
15. 依赖关系:
聚集关系:
指的是整体和部分之间的关系
16. 一般化(泛化): 指的是类之间的集成关系.
17.内聚和耦合:
内聚: 度量一个类独立完成某项工作的能力.
耦合: 度量系统内或系统之间依赖关系的复杂度.
设计原则: 增加内聚, 减少耦合.
18. 开发过程概述:
- 传统的开发过程:--瀑布模型
- 统一软件开发过程(USDP):
- OOAD的开发过程:
大项目分解为一些子项目.
使用UML工具.
统一软件开发过程是一个迭代, 递增的开发过程.
19.迭代, 递增的项目生命周期
项目是迭代的, 递增的
迭代指生命周期中的一个步骤.
迭代导致”递增”或者是整个项目的增长.
大项目分解为子项目.
在每一个迭代的阶段, 应该做一下工作:
-- 选择并分析相关用例.
-- 根据所选架构进行设计.
-- 在组建层次实现设计.
-- 验证组建满足用例的需要.
每一次迭代满足目标后, 进入下一个迭代周期.
每一个周期包含一次或多次迭代.
迭代, 递增生命周期的主要阶段:
Inception—start up
Elaboration- refine
Construction – implement
Transition – promotion
每一个周期包含一次或多次迭代.
一个阶段的结束称之为”里程碑”(milestone)
初始化阶段:
--项目启动
--建立业务模型
-- 定义业务问题域
-- 找出主要的风险因素.
--定义项目需求的外延
-- 创建业务问题域的相关说明文档.
细化阶段:
-- 高层的分析与设计
-- 建立项目的基础框架
-- 监督主要的风险因素.
-- 制定达成项目目标的创建计划.
构件阶段:
-- 代码及功能的实现.
移交阶段
--向用户发布产品
-- beta测试
-- 执行性能调优, 用户培训和接受测试.
每一阶段所包含工作流:
-- 需求与初始化分析
-- 分析
-- 设计
-- 实现
-- 测试
每次迭代的深度不一样
早期的迭代在深度上覆盖初始化工作流, 后期迭代在深度上覆盖后期工作流.
80/20原则:
迭代, 递增生命周期的优势:
①降低成本
②便于更好地维护项目进度.
③便于团队的协作开发.
④ 便于适应用户需求的动态变化.
20. UML(Unified Modeling Language), 统一建模语言, 图形化的语言表示. 它可以帮助我们在OOAD过程中标识元素, 构建模块, 分析过程并可通过文档说明系统中的重要细节.
21. UML中的九种基本图形:
22. UML分类:
静态建模:
创建并记录一个系统的静态特征.
反应一个软件系统基础, 固定的框架结构.
创建相关问题域主要元素的视图.
静态建模包括:
-- 用例图(use case diagrams)
-- 类图(class diagrams)
-- 对象图(object diagrams)
-- 组件图(compoent diagrams)
-- 部署图(deployment diagrams)
动态建模:
动态建模用以展示系统的行为
动态建模包括:
-- 时序图 (sequence diagrams)
-- 协作图 (collaboration diagrams)
-- 状态图 (state chart diagrams)
-- 活动图 (activity diagrams)
核心UML图:
用例图:
展示系统的核心功能及与其交互的用户被称之为”活动者”(Actor)
用例使用椭圆表示,
为简化建模过程, 用例图可标注优先级.
23. 类图:
表现类的特征
类图描述了多个类, 接口的特征, 以及对象之间的协作与交互,
由一个或多个矩形域构成, 内容包括:
-- 类型(类名)
-- 属性 (可选)
-- 操作( 可选 )
25. 时序图(sequence diagram):
捕捉一段时间范围内多个对象之间的交互信息.
强调消息交互的时间顺序.
27.活动图(Activity diagram)
28. 包:
引用一组相关实体.
通常可用于划分类的命名空间
包可用于
-- 命名(Naming)
-- 成员可见度 (Member visiblity)
-- 导入( Importing)
-- 继承 (Extending)
-- 泛化 (Generalization)
29. 观察者模式:
30.组合模式:
31.
装饰模式:
32.适配器模式:
33.
代理模式: