面向对象分析与设计

1 用例建模

  统一过程是目前最好的面向对象泛型

  分析工作流, 是为了更深的理解需求, 使设计和实现目标系统更加容易

  统一过程覆盖了三种类

    实体类(分析工作流涉及到的)

    边界类

    控制类

  面向对象分析的三项工作

    用例建模: 目标系统如何来提供功能, 不考虑这些功能的先后顺序, 结果是用例图

    类建模: 确定实体类以及实体类的属性, 结果是类图

    动态建模: 确定由或者对一个实体类的一些操作, 结果是状态图

  用例模型

    以用例的形式描述目标系统的功能性需求

    主要包括三个元素, 参与者+用例+参与者与用例之间的关系 

    参与者: 用户与目标系统用例进行交互时所扮演的角色, 不是目标系统的角色, 而是属于外部, 参与者可能是人也可能是机器也有可能是另外一个系统, 也可能是信息的主动给予者也可能是信息的被动接受者

      参与者需要用一个小人来表示, 要用单数的相关的名称命名

    用例: 用来描述一系列的行为, 对特定的客户返回可观察到的结果, 一个用例描述系统做了什么, 而不是怎么做

      用例用一个椭圆来表示, 在椭圆中标识用例名, 一般用强动词来表示

    关联: 一个参与者可以链接到一个或者多个用例

      用一条直线来表示

2 用例图

  案例1 电梯系统

  

  案例2 在线商店

  

  案例3 课程注册系统

  

  用例图需要一个用例说明

  用例说明包括: 用例名; 简单描述; 事件流; 与其他参与者或者用例之间的关系; 是否有什么特殊要求; 前置条件; 后置条件; ...

  参与者之间也有可能有关系

    继承关系(泛化): 子参与者继承所有父参与者的行为, 子参与者用空心箭头指向父参与者表示

    

    代理: 请求者发出请求, 实际执行操作的是代理者, 用请求者用虚线箭头指向执行者

    

  用例之间的关系

    泛化: 一个用例可以分成几种用例, 这种情况是泛化的关系, 使用空心三角箭头由子类指向父类用例

    

    包含: 一个用例A执行之前需要执行另一个用例B, 则原有用例A包含另一个用例B,  用实心三角箭头由用例A执行用例B, 且在箭头上面写上<<include>>

    

    扩展: 一个用例A的某种结果可能形成另一个用例B, 这个用例B就扩展了用例A, 用实心三角有用例B指向用例A

    

3 类建模

  类建模的产品是类图

  类图: 分析阶段的类图, 表达的是软件系统中的实体类与他们之间的关系, 针对功能性需求的一种静态视图

  类图表达了模型的静态结构(类, 类的内部结构, 类之间的关系)

  形成类建模的方法

    名词抽取

    CRC(类-职责-合作)卡片方法: 需要较多的领域知识, 更适合对类图进行测试

  用名词抽取方法实现类建模

    1 对目标系统的业务进行言简意赅的描述

    2 从描述中抽取出名词, 这些名词很可能成为候选类

    3 对提取出的名词进行筛选处理, 不能成为实体类的排除, 不相关的排除

    4 结合用例图等形成初步的类建模

4 动态建模

  动态建模的产品是状态图

  状态图是类图的补充, 描述了一个类的实例可能的状态以及造成这些状态的事件, 这些事件可能是造成这些状态转变的行为

  不是所有的类都需要状态图

  案例1 CD播放器

  

  案例2 图书馆的书的状态

  

  案例3 购物系统的订单

  

  案例4 电梯

  

5 面向对象测试

  crc卡片: 对每个类都贴上一个卡片, 该卡片记录了: 类名; 类的功能; 该类将激活的别的类

  crc卡片将明确的显示丢失或者不争取的项目

6 软件系统设计

  通过需求和分析, 回答了what的问题

  在分析和实现之间, 还需要回到how的问题, 这个就是设计

  软件系统设计分为

    架构设计: 软件系统的整体结构 

    模块设计: 功能上相对独立, 又可以继承的

    数据库设计: 存储和处理数据

    数据结构和算法设计: 把软件系统的各个部分连接到一起

    用户界面设计: 易用性, 美观大方

  软件系统设计先进行架构设计, 在执行后面的四种设计

7 面向对象设计

  主要包括两个工作

    完成类图: 基于分析阶段的简单类图而完成一个详细类图, 将包括所有的类(实体类; 边界类; 控制类)以及类的属性和方法

    完成详细设计: 对类的所有方法进行算法设计, 包括内部变量和数据结构

  实现步骤

  1) 给每个情景构造交互图

    交互图: 完成该情景所涉及的对象以及对象之间传递的消息

    包括顺序图和协作图

  2) 完成类图

    如何给类分配方法

      信息隐藏

      把方法分配给被激活的类或者对象

      做到职责驱动设计

  3) 实现详细设计

  顺序图

    顺序图中有一个矩形, 内含信息组织方式是 类名:对象

    一条竖线从矩形延伸下去表示时间的推移顺序

    可以在其中用箭头表示信息的传递, 在箭头附近附带调用执行的内容等必要信息

    如下表示自己调用自己

    

    条件判断

    

    循环调用

    

  顺序图的具体实例

  

  协作图的实例

  

 

人若有恒 无所不成
原文地址:https://www.cnblogs.com/weihuchao/p/6879768.html