zoukankan      html  css  js  c++  java
  • 笔记一:OOAD与UML

    一、面向对象的概念与方法

    1、  面向对象

    1.1. 面向对象是一种系统建模技术

    1.2. 面向对象编程是按照OO的方法学来开发程序的过程

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

    1.4. 交互的对象最终以类的形式组织

    1.5. OO的方法由三部分组成:过程、标识、规则

    2、  对象

    2.1. 是一个客观存在的、唯一的实体

    2.2. 是面向对象编程过程中分析与解决问题的出发点与基础

    2.3. 拥有自己的标识、数据与行为

    2.4. 可以简单或复杂

    2.5. 可以抽象或具体

    2.6. 在OOP中是一个类的动态实例

    3、  类

    3.1. 类是对象的模板

    3.2. 对象通过类实例化产生

    3.3. 一个类可以创建多个对象

    4、  OOAD(面向对象的)

    4.1. OOAD是根据OO的方法学,对软件系统进行分析和设计的过程

    4.2. OOA 分析阶段(What to do )

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

    4.2.2.        列出系统必须要完成的核心任务

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

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

    4.3. OOD 设计阶段(How to do)

    4.3.1.        如何解决具体的业务问题

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

    4.3.3.        定义系统的实现策略

    4.4. OOP的主要特征

    4.4.1.        抽象(abstract)

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

    简化功能与格式

    帮助用户与对象交互

    4.4.2.        封装(encapsulation)

    隐藏数据和实现

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

    对象的两种视图:

    --外部视图 对象能做的工作

    --内部视图 对象如何完成工作

    4.4.3.        继承(inheritance)

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

    通常在两个类型之间存在的“is a”或“kind of”这样的关系

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

    4.4.4.        多态(polymorphism)

    一个名称,多种形式

    基于继承的多态

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

    4.4.5.        关联(association)

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

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

    4.4.6.        聚合(aggregation)

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

    是一种关系较强的关联

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

    4.4.7.        组合(composition)

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

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

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

    外部对象不存在时,内部对象也不能存在

    4.4.8.        内聚与耦合(cohesion&coupling)

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

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

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

    4.5. 域 模型(设计模型)

    域模型是面向对象的。在面向对象术语中域模型也可称为设计模型。

    域模型由以下内容组成:

    -          具有状态和行为的域对象

    -          域对象之间的关系(关联-Association、依赖-Dependency、聚集-Aggregation、一般化(泛化)-Generalization)

    4.6. 开发过程概述

    -          传统开发过程

    ----- 瀑布模型<需求-分析-设计-实现-测试>

    -          OOAD开发过程

    ----- 统一软件开发过程(USDP)<迭代、递增>

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

    项目是迭代、递增的,迭代指生命周期中的一个步骤,迭代导致“递增”或者是整个项目的增长,大项目分解为子项目

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

    -          选择并分析相关用例

    -          根据所选架构进行设计

    -          在组件层次实现设计

    -          验证组件满足用例的需要

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

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

    一个阶段的结束称之为“里程碑”

    4.8. 迭代、递增生命周期的阶段

    4.8.1.        初始化阶段

    -          项目启动

    -          建立业务模型

    -          定义业务问题域

    -          找出主要的风险因素

    -          定义项目需求的外延

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

    4.8.2.        细化阶段

    -          高层的分析与设计

    -          建立项目的基础框架

    -          监督主要的风险因素

    -          制定达成项目目标的创建计划

    4.8.3.        构建阶段

    -          代码及功能的实现

    4.8.4.        移交阶段

    -          向用户发布产品

    -          Beta测试

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

    4.9. 每个阶段所含的工作流

    -          需求与初始分析

    -          分析

    -          设计

    -          实现

    -          测试

    -          每一次迭代执行工作流的深度不同

    -          早期的迭代在深度上覆盖初始工作流,后期迭代在深度上覆盖后期工作流

    -          80/20原则

    4.10.              迭代、递增生命周期的优化

    -          降低成本

    -          便于更好地维护项目进度

    -          便于团队的协作开发

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

    二、使用UML

    1、  UML简介

    统一建模语言是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素、构建模块、分析过程并可以通过文档说明系统中的重要细节。

    2、  UML分类

    -          静态模型

    创建并记录一个系统的静态特征,反映一个软件系统基础、固定的框架结构,创建相关问题域主要元素的视图

    包含:用例图、类图、对象图、组件图、部署图

    -          动态模型

    用于展示系统的行为

    包含:时序图、协作图、状态图、活动图

    3、  其他UML元素

    包(Package)

    UML的扩展机制:

    -          注释

    -          构造型

    -          标记值

    -          限制

  • 相关阅读:
    (转)Apache与Tomcat 区别联系
    (转)JAVA排序汇总
    (转)Java线程:大总结
    (转)Java线程:新特征-原子量,障碍器
    (转)Java线程:新特征-条件变量
    oracle中的not in和not exists注意事项
    oracle字符乱码的解决方法
    线刷和卡刷的区别
    nexus5刷机
    linux上复制行到另一个文件
  • 原文地址:https://www.cnblogs.com/Nikola/p/4716687.html
Copyright © 2011-2022 走看看