OOAD与UML学习笔记

Posted 超人DE小内内

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OOAD与UML学习笔记相关的知识,希望对你有一定的参考价值。

1. 面向对象

  • 面向对象(Object-Orientation,简称OO),是一种建模技术。

  • 面向对象编程(Object-Orientation Programming,简称OOP),是按照OO的方法学来开发程序的过程。

  • 通过分析系统内对象的交互来描述或者建模一个系统。

  • 交互对象最终以类的形式组织。

  • OO的方法由三部分组成。(过程,标识,规则)

2. 对象

  • 是一个客观存在的,唯一的实体。

  • 是面向对象编程过程中分析和解决问题的出发点和基础。

  • 拥有自己的标识,数据和行为。

  • 可以简单或复杂。

  • 可以抽象或具体。

  • 在OOP中是一个类的动态实例。

3. 类

  • 类是对象的模板。

  • 对象通过类实例化产生。

  • 一个类可以创建多个对象。

4. OOAD

(Object Oriented Analysis And Design):对软件系统进行分析和设计的过程。

  • OOA 分析阶段

  • OOD 设计阶段。

5. OOA阶段

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

  • 列出系统必须要完成的核心任务。

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

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

此阶段要解决的核心为题是:"What to do"

6. OOD阶段

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

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

  • 定义系统的实现策略。

此阶段要解决的核心问题是:"How to do?"

7. OOP的主要特征

  • 抽象(abstract)

  • 封装(encapsulation)

  • 继承(inheritance)

  • 多态(polymorphism)

  • 关联(association)

  • 聚合(aggregation)

  • 组合(composition)

  • 内聚与耦合(cohesion & coupling)

8. 抽象

  • 忽略掉一个对象或者实体的细节,而只关注其本质特征的过程。

  • 简化功能与格式。

  • 帮助用户与对象交互。

9. 封装

  • 隐藏数据和实现

  • 提供公共方法提供用户调用功能。

  • 对象的两种视图:

    • 外部视图:对象能做的工作。

    • 内部视图:对象如何完成工作。

10. 继承

  • 通过存在的类型定义新类型的机制。

  • 通常在两个类型之间存在"is a"或者"kind of" 这样的关系。

  • 通过继承可以实现代码的重用,另外继承也是多态的基础。

11. 多态

  • 一个名称,多种形式。

  • 基于继承的多态。

  • 调用方法时根据所给对象的不同选择不同的处理方式。

12. 关联

  • 对象之间交互时的一种引用方式。

  • 当一个对象通过对另一个对象的引用去使用哪个另一个对象的服务或操作时,两个对象之间便产生了关联。

13. 聚合

  • 关联关系的一种,一个对象称为另外一个对象的组成部分。

  • 是一种关系较强的关联。

  • 两个对象之间存在"has a"这样的关系,一个对象作为另一个对象的属性而存在。在外部对象被生产时,由客户端指定与其关联的内部对象。

14. 组合

  • 当一个对象包含另一个对象,外部对象负责管理内部对象的生命周期的情况。

  • 关联关系中最为强烈的一种。

  • 内部对象的创建由外部对象自己控制。

  • 外部对象不存在的时候,内部对象也不能存在。

15. 域模型

域模型是面向对象的。

域模型可以称为设计模型。域模型由以下内容组成:

  • 局域状态和行为的域对象。

  • 域对象之间的关系。

    • 关联(Association)单向关联,双向关联。一对一,一对多,多对多。

    • 依赖(Dependency)一个类的实现需要另一个的类的实例来实现。

    • 聚集(Aggregation)整体和部分的关系。

    • 一般化(泛化Generalization)继承关系。

16. 内聚和耦合

  • 内聚:度量一个类独立完成某项工作的能力。

  • 耦合:度量系统内或系统之间依赖关系的复杂度。

  • 设计原则:高内聚,低耦合。

17. 开发过程

  • 传统过程

    • 瀑布模型。(Requirements-Analysis-Design-Implementation-Test)

  • 统一软件开发过程(USDP)。

18. OOAD的开发过程

  • 大项目分解为一些子项目。

  • 使用UML工具。

  • 同意软件开发过程是一个迭代递增的开发过程。

19. 迭代、递增的项目生命周期。

  • 项目是迭代、递增的。

  • 迭代是生命周期中的一个步骤。

  • 迭代导致"递增"或者是整个项目的增长。

  • 大项目分解为子项目。

  • 每一个迭代的阶段,应做以下工作:

    • 选择并分析相关用例。

    • 根据所选择架构进行设计。

    • 在组件层次实现设计。

    • 验证组件满足用例的需要。

  • 当一次迭代满足目标后,开发进入下一个迭代周期。

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

  • 一个阶段的结束称之为"里程碑"(milestone),m1,m2...

20. 项目各个阶段

  1. 项目的初始化阶段

  • 项目启动

  • 建立业务模型

  • 定义业务问题域

  • 找出主要的风险因素

  • 定义项目需求的外延

  • 创建业务问题域的相关说明文档

  1. 细化阶段

  • 高层的分析与设计

  • 建立项目的基础框架

  • 监督主要的风险因素

  • 指定达成项目目标的创建计划

  1. 构建阶段

  • 完成代码及功能的实现。

  1. 移交阶段

  • 向用户发布产品

  • beta测试用户测试,alpha内部测试。

  • 执行性能调优,用户培训和接收测试

21. 每个阶段所包含的工作流

  • 每一次递增都有5部分工作流组成

    • 需求与初始分析

    • 分析

    • 设计

    • 实现

    • 测试

    • 每一次迭代执行工作流深度不同。

    • 早期迭代在深度上覆盖初始工作流。后期迭代在深度上覆盖后期工作流。

    • 80/20原则。

22. 迭代、递增生命周期的优势

  • 降低成本

  • 便于更好的维护项目进度

  • 便于团队的协作开发

  • 便于适应用户需求的动态变化


以上是关于OOAD与UML学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记---UML

uml:统一建模语言

学习笔记---UML

机器学习笔记 ML01c

软考笔记第十六天之UML深入学习

浅谈UML学习笔记之用例图