软件工程学习笔记(六)面向对象分析

面向对象方法概述

面向对象=对象+类+继承+消息通信

  1. 对象Object由一组属性以及作用于这组属性的一组操作(也称方法)共同构成。
    属性:描述对象静态特征的一个数据项。
    操作(或方法):描述对象动态特征的一个函数或过程。
  2. 类(Class) 具有相同属性和相同操作的一组对象可归并为一个“类”
    属性的表达方式
    可见性 属性名:数据类型 = 初始值
    操作的表达方式
    可见性 操作名(参数列表):返回值数据类型
    类中的属性和操作的可见性分为:
    公有(public):+
    私有(private):-
    保护(protected):#
  3. 封装(Encapsulation) 把对象的属性和操作封装在一起形成一个独立的整体,从而对外界隐藏了对象内部的所有实现细节。
  4. 继承(Inheritance)
  5. 多态性(Polymorphism)
    在父类中定义的属性或操作被子类继承后,可以具有不同的数据类型或表现出不同的实现方式。
  6. 消息(Message)
    消息一般应包含以下内容:接收消息的对象名、消息名(操作或方法名)、输入参数、返回参数。
  7. 类间关系(Relationship between classes)
    (1) 泛化关系(Generalization)
    软件工程学习笔记(六)面向对象分析_第1张图片
    (2) 组成关系
    具体分为两种情况:
    聚合关系(Aggregation)整体类对象与部分类对象在生命周期上是相互独立的
    软件工程学习笔记(六)面向对象分析_第2张图片
    组合关系(Composition) 整体类对象与部分类对象具有同样的生命周期
    软件工程学习笔记(六)面向对象分析_第3张图片
    (3) 关联关系(Association)
    (4) 依赖关系(Dependency)
    一个类是另一个类的某个操作(或方法)的参数。
    一个类在另一个类的某个操作(或方法)中被使用。
    在这里插入图片描述
    五种类间关系小结:
    (1) 泛化/继承:一般与特殊的关系 分类结构
    (2) 组合:整体与部分的关系,彼此不可分 组成结构

(3) 聚合:整体与部分的关系,但彼此可分 组成结构

(4) 关联:对象之间长期的静态联系 实例连接
(5) 依赖:对象之间动态的、临时的通信联系 消息连接
类间关系的强度:继承 > 组合 > 聚合 > 关联 > 依赖

用例模型

面向对象分析(Object Oriented Analysis,简称OOA)
软件工程学习笔记(六)面向对象分析_第4张图片
用例模型就是从用户 角度获取系统的功能需求
用例模型主要由三种模型元素构成
1、角色(actor)
2、用例(use case)
3、通讯关联(communication association)
用例建模的基本过程

Step 1:识别角色(actor)
Step 2:识别用例每个用例至少应该涉及到一个actor。每个actor也必须至少涉及到一个用例
Step 3:识别角色与用例之间的通讯关联,并绘制用例图
Step 4: 给出每个用例内部的详细描述(也称用例说明)
描述:简要介绍该用例将完成什么功能或操作。
角色:该用例由哪个角色来启动。
前置条件:该用例在满足什么前提条件下才能执行。
后置条件:该用例执行完后会达到什么结果。
事件流分为两类:常规事件流和备选事件流
备选流的描述:
起点:该备选流从事件流的哪一步开始;
条件:在什么条件下会触发该备选流;
动作:系统在该备选流下会采取哪些动作;
恢复:该备选流结束之后,该用例应如何继续执行
Step 5:细化用例模型
利用以下关系调整已有的用例模型:

  • 角色与角色之间的泛化关系(generalization)
  • 用例与用例之间的泛化关系(generalization)
    当多个用例共同拥有一种类似的行为时,可将它们的共性抽象成为父用例,其它用例作为泛化关系中的子用例
  • 用例与用例之间的包含关系(include)
  • 用例与用例之间的扩展关系
    (extend)
    表示只有在某些特定情况下用例2才会使用到用例1,此时用例1的事件流将被插入到用例2的事件流中。

UML中的活动图和泳道图

活动图和泳道图中的基本元素:
起始点;结束点;泳道;
活动;活动之间的时序连接;
决策点;活动之间的并发点;

静态结构模型与动态行为模型

面向对象分析的基本过程

  • 建立用例模型;
  • 从用例模型入手,识别“分析类”;
  • 识别类之间的关系,绘制类图(静态结构模型);
  • 定义分析类对象之间的交互行为,绘制时序图或协作图(动态行为模型);
  • 识别分析类的属性和操作;
  • 评审OOA模型。

在面向对象分析阶段(OOA阶段)所描述的类,统称为分析类。分析类直接与系统的应用逻辑和需求相关,而与技术实现无关
分析类一般分为三种类型:

  • 边界类
    用于描述系统外部的角色与系统之间的交互接口。着重描述用户与系统之间的交互信息(比如,传入或传出哪些信息或指令),而不是描述用户界面的表现形式(比如,按钮、菜单、文本框等)
    三种类型:用户界面、软件系统接口、硬件设备接口

  • 控制类
    控制类负责协调边界类和实体类:控制类接收由边界类收集上来的信息或指令,然后根据用例的执行逻辑,再将具体任务分发给不同的实体类去完成

  • 实体类

典型的OO分层
软件工程学习笔记(六)面向对象分析_第5张图片
1、识别边界类
通常,用例模型中的一个角色与一个用例之间的通信关联对应一个边界类。
2、识别控制类
控制类负责协调边界类和实体类。通常在现实世界中没有对应的事物。
3、识别实体类
实体类通常是用例中的一些参与对象,对应着现实世界中的“事物”

绘制时序图的基本步骤:

  1. 列出启动该用例的角色;
  2. 列出启动该用例时角色所使用的边界类对象;
  3. 列出管理该用例的控制类对象;
  4. 列出该用例执行过程中涉及到的实体类对象;
  5. 根据该用例描述的所有流程(用例说明中的事件流),按照时间先后顺序,依次列出各个分析类对象之间进行消息访问的序列。

你可能感兴趣的:(软件工程)