> 文档中心 > 面向对象分析(OOA)——如何开始做一个像样的”项目“?如何分析别人的项目?

面向对象分析(OOA)——如何开始做一个像样的”项目“?如何分析别人的项目?

面向对象分析(OOA)

  • 面向对象设计(OOA)阶段三大模型
    • 一、功能模型
      • 功能模型和用例图
      • 用例图的简单组成
    • 二、动态模型
      • 动态模型的描述
      • 动态模型设计启发方法
    • 三、对象模型
      • 对象启发
      • 欢迎关注我、一起共勉

面向对象设计(OOA)阶段三大模型

在这里插入图片描述

  • 功能模型:用例图简要的揭示系统需要实现的功能
  • 动态模型:以时序图的形式展现用户交互发生过程
  • 对象模型:使用类图表示系统需要设计的对象

一、功能模型

功能模型和用例图

功能模型指描述系统功能的模型,可以有多种实现方式,但最常使用用例图描述。以下是用例图的相关描述

尽管用例本身会涉及大量细节和各种可能性,用例图却能提纲挈领地让人了解系统概况。它为“系统做什么”提供了简化了的图形表示,因此被誉为“搭建系统的蓝图”。

由于其简单纯粹的本质,用例图是项目参与者间交流的好工具。用例图的画法是对现实世界的一种刻画,可以让项目参与者明白系统要做成什么样,相对于复杂庞大的类图让人看得不清不楚,令人昏头脑涨,描述功能的用例图更为简洁

用例图的目的就是为了可以让人在一个更高的层次概览整个系统,用平白的话语让项目参与者理解系统。它可以辅以额外的图表和文档,以更加完整地展现系统的功能和技术细节

面向对象分析(OOA)——如何开始做一个像样的”项目“?如何分析别人的项目?

用例图的简单组成

在这里插入图片描述

简单来说:用例图就是对某个对象(用户)触发某个功能(在某些辅助系统的帮助下)的描述。包含三个元素:

  • 使用者:功能的调用者,在不同层面有不同的含义,最外层一般就是整个系统的用户;深入到各个模块衔接,可能是指更上层模块的调用;再细节一点甚至可以视为对象
  • 用例:功能的简单描述——登录,查询,取款…再底层就是获取,删除,判断…一般只在较抽象的层次设计而不会到底层
  • 辅助系统:执行功能必要的参与角色,有些功能并不是单独完成的,而是需要其他模块加以辅助

简单来说:使用用例图来描述的功能模型仅仅作为一个大概方向,具体流程可细化为动态模型——流程图,具体对象细化为对象模型——类和对象图

二、动态模型

动态模型的描述

动态模型是对整个系统发生事件的流程描述,一般又分为两类,一种是对某类对象的动态行为,可以简单理解为在某阶段触发哪些功能;另一类是对于某个事件的跟踪,通过对事件的处理——输入——转化——输出——每个阶段的处理进行分解。

一般有泳道图,状态转化图等方式描述如下:

在这里插入图片描述

在这里插入图片描述

动态模型设计启发方法

对于事件跟踪:一般用来处理某个阶段的执行情况

  • 首先确定起点和终点,对于交互操作(从触发事件到返回结果),对于复杂的内部处理(找到直接的返回提供者)
  • 然后产生中间状态,可能产生的中间结果,使用到的中间对象
  • 处理中间状态分配,对于每一个判断分支,在图上表现额外开一个分支,并给分支分配中间状态
  • 标识状态转化条件和简要描述

对于泳道图:用以处理复杂功能的调用结构

  • 统计该处理流程中参与过的对象
  • 从触发函数到函数中又触发函数,在对象中跳转
  • 匹配时序画出泳道图

三、对象模型

最基础的模型,主要通过继承,切分等设计提高对象模型的简洁和复用以及合理性。

面向对象分析(OOA)——如何开始做一个像样的”项目“?如何分析别人的项目?

对象启发

  • 关注三个方面:类和关联、类和属性、继承和组织合并
  • 寻找类的方法:名称分析(在系统中出现的名词)、多次使用的中间信息、类似功能的集合…选取完之后在进行切分功能,或者合并类
  • 类确定后,对类的关系、类所属的层次(分包)、类应该包含的属性和应该具备的功能进行描述
  • 在确定类图框架后,在结合动态模型判断是否功能都有对应的类或者几个类支持

欢迎关注我、一起共勉

⭐️⭐️代码之狐⭐️⭐️
主要内容:

  • 时不时更新算法题解,算法与数据结构
  • 时不时分享心灵鸡汤,详见杂谈栏
  • 目前主要在学Java高级内容(虚拟机、框架什么的),会将书中的知识点提炼总结分享

怎么还没人关注我😢
面向对象分析(OOA)——如何开始做一个像样的”项目“?如何分析别人的项目?

身份验证指纹锁商城