UML面向对象建模与设计 - OO开发

目录

OO开发强调以下三点

对概念而非实现建模

OO方法论

三种模型

OO技术中的主题


首先明确背景,本书所描述的OO开发是高于编程语言,基于现实世界以及程序中的抽象为基础思考软件的方式,在此前提下,这里的开发描述的软件的生命周期(分析、设计、实现

OO开发的本质是识别和组织应用领域中的概念

作者认为软件开发中困难的部分是对本质的操作,映射成某种语言是次要层面

OO开发强调以下三点

对概念而非实现建模

  • 传统设计方法的弊端是过度专注实现机制,忽略了底层思维过程
  • OO开发鼓励在软件生命周期内应用概念来工作和思考
  • OO开发是思维方式而不是编程技术,利于表达抽象概念
  • 它充当 分析(规约、分析)、设计(文档、接口)、实现(编程)的一种媒介

OO方法论

一种OO开发过程和一种图形化表示法来表示OO的概念

强调构建应用模型,然后在设计中增加细节

从分析到设计再到实现使用的是相通的无缝表示法,这样某一个开发阶段增加的信息就不会再下一阶段丢失或转化

提出一个问题:这里提到的无缝表示法,指的是图形化表达的应用模型吗?是说在生命周期中都是用这个模型,具象表现是一张图?完成所有步骤吗?还是一个抽象?

OO方法论包括以下阶段

  1. 系统构思
    1. 由业务人员、用户产生的一种构思并形成的临时性需求
  2. 分析
    1. 通过创建模型,分析人员重新描述系统构思阶段的需求。
    2. 此阶段分析人员与请求者协同工作。
    3. 分析模型为了描述要做什么,而不是如何做,不包含任何决策
      • 领域模型---描述系统内部反映的现实世界对象
      • 应用模型---描述可见的应用系统本身组成部分
      • 举例 对于股票经纪人系统,领域对象包括股票、债券、交易、佣金,应用对象会控制交易的的执行过程,并输出结果
    4. 应用专家非技术但是可以理解评议好的模型(业务流程) 
  3. 系统设计
    1. 系统架构- - - 用于解决应用程序问题的高层策略,是开发团队的产物
    2. 解决问题资源分配明确目标为导向
  4. 类的设计
    1. 根据系统策略给分析模型添加细节
    2. 使用OO概念阐释域对象、应用对象
    3. 焦点在于实现每个累的数据结构和算法
  5. 实现
    1. 将设计阶段的产物转化为编程语言、数据库、硬件
    2. 困难的决策都在设计阶段,程序设计理应变得简单、直接
    3. 遵循良好的软件工程实践很重要

OO开发贯穿整个生命周期,各个阶段使用相同的类,后续阶段添加细节(这里的类指的是一个领域模型,是一个抽象的东西)

提倡迭代开发,非瀑布式(因为不需要并行的开发系统,历经几个阶段开发部分系统,然后增加功能)

这里特意提到不将测试列为一个阶段,是因为测试贯穿于整个生命周期中,检查、测试模型是必要的,将质量控制归于单个步骤,代价更大,效率更低

三种模型

用三种模型从不同的视角来描述系统

  • 类模型 --- class model
    • 描述系统内部对象及其关系的静态结构
    • 界定了软件开发的上下文形成论域  (universe of discourse  任何科学理论都有它的研究对象,这些对象构成一个不空的集合,称为论域。)
    • 产物 类图 class diagram
    • 节点是类 ,弧表示类间的关系
  • 状态模型 --- state model
    • 描述对象随事件发生变化的方面
    • 产物 状态图 state diagram
    • 节点是状态,弧是由事件引发的状态转移
  • 交互模型 --- interaction model
    • 描述系统中的对象如何协作完成任务
    • 用例图 --- 关注系统的功能, 即系统为用户做什么
    • 顺序图 --- 显示对象间发生交互的顺序
    • 活动图 --- 描述重要的处理步骤
    • 交互模型由用例开始,后两者做补充详细描述

三种模型相互独立的描述了一套完整的系统的相互独立的部分

总结 --- 三种模型描述了何物何时如何发生何种变化

OO技术中的主题

  1. 抽象
    • OO开发中最重要的一项技能
    • 使开发者专注于应用程序最本质的方面
  2. 封装
    • 使代码整洁有力
    • 将对象的外部因素与内部实现细节分离
    • 代码解耦
  3. 组合数据和行为
    • 封装?
  4. 共享
    • 通过继承、封装、抽象增效
  5. 强调对象的本质
    • 更注重数据结构,特性比使用方式更稳定,用法以来应用细节
  6. 协同
    • 标识、分类、多态、继承 都是OO语言的特性,可分开用,也可结合,互相促进,互相补充,强调对象的本质,迫使开发者摄入思考对象是什么,做了什么,比只关注数据和操作更通用、更健壮
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值