面向对象分析

本文详述了面向对象分析(OOA)的过程,包括定义USE CASE、识别类、属性和操作,以及对象间的关系。同时探讨了面向对象设计(OOD)的发展历程,强调OOD在软件生命周期中的重要性,指出OOD不仅是OOA的细化,更涉及到实现条件的考虑。最后,文章阐述了问题域部分设计的原因和影响,以及人机交互部分设计的目的。

一.面向对象的分析概述

  1. OOA的基本任务:运用面向对象方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域和系统责任所需的类和对象
  2. OOA模型
    1. 基本模型:类图(对象层、特征层、关系层)
    2. 需求模型:用况图
    3. 辅助模型:包图、顺序图、状态图
    4. 模型规约:对模型中的所有元素进行详细说明和解释
  3. OOA过程:
    1. 定义USE CASE
    2. 发现对象
    3. 定义属性与操作
    4. 建立对象之间的关系
    5. 划分包·
    6. 建立顺序图、状态机图、活动图

二.识别类

  1. 研究问题域和用户需求
    • 研究用户需求,明确系统责任
    • 研究问题域
    • 确定系统边界
  2. 策略与启发
    • 考虑问题域:人员、组织、物品、设备、抽象事物、事件、文件、结构
    • 考虑系统边界
    • 考虑系统责任
  3. 审查与筛选
    • 舍弃无用的对象
    • 对象的精简
    • 与实现条件有关的对象
  4. 识别主动对象
    • 如果一个交互是由系统外的参与者发起的,第一个处理该交互的对象是主动对象
  5. 建立类图中的类
    • 对象分类
    • 异常情况的检查和调整
      • 类的属性或操作不适合全部对象实例
      • 属性和操作相同的类
      • 属性和操作相似的类
      • 同一事物的重复描述

三.识别属性和操作

  1. 识别属性
    1. 策略与启发
    2. 审查与筛选
    3. 与实现条件有关的问题都推迟到OOD考虑
    4. 属性的命名:原则与类的命名相同
    5. 属性的详细说明
  2. 识别操作
    1. 区分对象行为的类型:系统行为、对象自身的行为
    2. 发现操作的策略与启发:考虑系统责任、考虑问题域、分析对象状态、追踪操作的执行路线
    3. 审查与调整
    4. 认识对象的主动行为
    5. 操作的命名和定位
    6. 操作的详细说明

四.识别对象之间的关系

  1. 识别继承(泛化)
    1. 学习当前领域的分类学知识
    2. 按常识考虑事物的分类
    3. 使用继承的定义
    4. 考虑属性与操作的适用范围
    5. 考虑领域范围内的复用
  2. 审查与调整
  3. 继承关系的简化
    1. 取消没有特殊性的特殊类
    2. 增加属性简化继承关系
    3. 取消用途单一的一般类,减少继承层次
  4. 识别关联
    1. 认识对象之间的静态联系
    2. 认识关联的属性和操作
    3. 分析并表示关联的多重性
    4. 进一步分析关联的性质
  5. 命名与定位命名
  6. 调整对象层和特征层
  7. 识别聚合(特殊的关联关系)
    1. 识别聚合的策略
    2. 审查与筛选
    3. 调整对象层和属性层
  8. 识别依赖

五.面向对象的设计概述(OOD)

  1. OOD发展历程
    1. 早期的OOD(八十年代至九十年代初)
    2. 早期的OOD的特点:
      • 不是基于OOA的
      • 是OO编程方法的延伸
      • 不是纯OO的
      • 不是只针对软件生命周期的设计阶段
    3. 现今(90年代)的OOD特点:
      • 以面向对象的分析为基础,一般不依赖结构化分析
      • 与相应的OOA方法共同构成一种OOA&D方法体系
      • 较全面地体现面向对象方法的概念与原则
      • 大多数方法独立于编程语言,通过面向对象的分析与设计所得到的系统模型可以由不同的编程语言实现
  2. OOD的根本目标
    1. 提高软件生产率
    2. 提高质量
    3. 加强可维护性
  3. OOA与OOD的关系
    1. 第一种观点:面向对象的分析考虑做什么,面向对象的设计考虑怎么做
    2. 第二种观点:面向对象的分析考虑问题域和系统责任,面向对象的设计考虑与实现有关的因素
  4. OOD表示法
    1. 表示法:采用与OOA一致的
    2. OOA与OOD的关系
      • 从OOA到OOD不是转换,不是细化——是调整和增补
      • OOD过程:不强调次序

六.问题域部分的概念

  1. 问题域部分:它是OOA模型基础上按实现条件进行必要的修改、调整和细节补充而得到的
  2. 为什么需要问题域部分的设计
    • 在OOA阶段只考虑问题域和系统责任,OOD则要考虑与具体实现有关的问题,需要对OOA结果的补充与调整
    • 使反映问题本质的总体框架和组织结构长期稳定,而细节可变
    • 稳定部分与可变部分分开,使系统从容地适应变化
    • 有利于同一个分析用于不同的设计与实现
    • 支持系统族和相似系统的分析设计及编程结果复用
    • 使一个成功的系统具有超出其生存期的可扩展性
  3. 实现条件对问题域部分的影响
    1. 编程语言
      • 选定的编程语言可能不支持某些面向对象的概念与原则
      • OOA阶段可能将某些与编程语言有关的对象细节推迟到OOD阶段来定义
    2. 硬件、操作系统及网络设施
    3. 复用支持
    4. 数据管理系统
    5. 界面支持系统

七.如何进行问题域部分设计

  1. 继续运用OOA的方法
  2. 使用OOA的结果,并加以修改
  3. 使用OOA结果,并进行补充与调整
    • 为复用设计与编程的类而增加结构
    • 增加一般类以建立共同协议
    • 按编程语言调整继承和多态
    • 提高性能
    • 为实现对象永久存储所做的修改
    • 为编程方便增加底层细节

八.人机交互部分的设计

  1. 定义:系统中负责人机交互的部分,突出人如何命令系统以及系统如何向用户提交信息
  2. OOA与OOD的目的
    • OOA:通过人机界面反映需求
    • OOD:设计人机交互的细节
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值