什么是对象?

在现实世界中的一个东西,只要是有概念或者是实体存在。

如:一名职工、一本图书、一项贷款、一项生产计划、一场演出等。

几种著名的面向对象方法

  • UML(一种可视化建模语言,能描述开发需要的各种视图,并以此为基础组建系统。
  • OMT
  • OOSE

面向对象的软件开发模型

1、数据模型(对象模型):

描述系统数据结构的对象模型;

2、行为模型(动态模型)

描述系统控制结构

3、功能模型(用例图)

描述系统功能。

一个典型的软件系统使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。

面向功能的架构是什么 面向对象的功能模型_系统功能

功能模型——用例图UCD

(1)用例图的基本图形符号

用例建模用于描述系统需求,把系统当作黑盒,从用户的角度,描述系统的场景。

主要图形元素有以下几个:

参与者:是指外部用户或外部实体在系统中扮演的角色。可以是一个人、一个计算机子系统、硬件设备或者时间等角色【一个小人儿】

用例:对一组动作序列的描述,系统通过执行这一组动作序列为参与者产生一个可观察的结果。用例名往往用动宾结构命名。【一个椭圆】

执行关联: 参与者(Actor )执行用例(Use Case)之间的关系【直线儿】

面向功能的架构是什么 面向对象的功能模型_面向功能的架构是什么_02

(2)用例建模的过程

建立用例模型的顺序是:

1.确定谁会直接使用该系统。这些都是参与者(Actor)。

2.选取其中一个参与者。

3.定义该参与者希望系统做什么,参与者希望系统做的每件事成为一个用例。

4.对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用例的基本过程。

5.描述该用例的基本过程

6.考虑一些可变情况,把他们创建为扩展用例

7.复审不同用例的描述,找出其中的相同点,抽出相同点作为共同的用例

8.重复步骤2~7,找出每一个用例。

要素

(1)参与者

参与者(actor)是指系统以外的、需要使用系统或与系统交互的东西,包括人、设备、外部系统等。

参与者的三种表示形式

面向功能的架构是什么 面向对象的功能模型_面向功能的架构是什么_03

如何确定参与者?

在获取用例前首先要确定系统的参与者,开发人员可以通过回答以下的问题来寻找系统的参与者。
(1)谁将使用该系统的主要功能?
(2)谁将需要该系统的支持以完成其工作?
(3)谁将需要维护、管理该系统,以及保持该系统处于工作状态?
(4)系统需要处理哪些硬件设备
(5)与该系统交互的是什么系统
(6)或什么系统对本系统产生的结果感兴趣

示例:饮料自动售货系统

在饮料自动售卖机中,最先想到的参与者是顾客。

其次,供应商向自动贩卖机添加饮料。收银员从自动贩卖机收钱。

面向功能的架构是什么 面向对象的功能模型_用例_04

(2)用例(Use Case)

“用例”的定义

对一组动作序列的描述,系统通过执行这一组动作序列为参与者产生一个可观察的结果

图形表示

用椭圆形表示

面向功能的架构是什么 面向对象的功能模型_面向功能的架构是什么_05

用例特征

  • 说明了系统具有的一种行为模式
  • 说明了一个参与者与系统执行的一个相关的事件序列
  • 提供了一种获取系统需求的方法
  • 提供了一种与最终的用户领域专家进行沟通的方法
  • 提供了一种测试系统的方法

怎么获取用例?

参与者希望用户执行什么任务?

参与者在系统中访问哪些信息(创建、存储、修改、删除等)?

需要将哪些外界信息提供给系统

需要将系统的什么事情告诉参与者

如何维护系统

(3)系统和关联

系统:用于界定系统功能范围,描述该系统功能的用例都置于其中,而描述外部实体的参与者都置于其外。

面向功能的架构是什么 面向对象的功能模型_用例_06

关联:连接参与者和用例,表示参与者所代表的系统外部实体与该用例所描述的系统需求有关。

面向功能的架构是什么 面向对象的功能模型_面向功能的架构是什么_07

用例之间的关系

关联(Association):、泛化(Inheritance)、包含(Include)、扩展(Extend)

(1)关联(Association)

表示参与者与用例之间的通信,任何一方都可发送或接受消息。

【箭头指向】:指向消息接收方

注:参与者可以参与多个用例,由此形成子系统

面向功能的架构是什么 面向对象的功能模型_用例图_08

(2)泛化(Inheritance)

【箭头指向】:指向父用例

就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。

子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。

面向功能的架构是什么 面向对象的功能模型_系统功能_09

(3)包含(Include)

【箭头指向】:指向分解出来的功能用例

  包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。一个用例可以包含另外一个用例。

面向功能的架构是什么 面向对象的功能模型_用例图_10

(4)扩展(Extend)

【箭头指向】:指向基础用例

扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。由一个用例的扩展点可以扩展出另外一个用例。

面向功能的架构是什么 面向对象的功能模型_系统功能_11

包含(include)、扩展(extend)的区别:

包含:在执行基本用例时一定会执行包含用例部分

扩展:一个基本用例执行时,可以执行、也可以不执行扩展用例部分

关联、包含、扩展、泛化 的区别:

面向功能的架构是什么 面向对象的功能模型_面向功能的架构是什么_12

举例:自动售货系统 初步的用例图

面向功能的架构是什么 面向对象的功能模型_面向功能的架构是什么_13

用例扩展后的用例图

面向功能的架构是什么 面向对象的功能模型_系统功能_14

用例实例一:ATM系统用例图

面向功能的架构是什么 面向对象的功能模型_用例_15

用例实例二:图书借阅系统用例图

面向功能的架构是什么 面向对象的功能模型_面向功能的架构是什么_16

面向功能的架构是什么 面向对象的功能模型_用例_17

--------------------------- “朝着一个既定的方向去努力,就算没有天赋,在时间的积累下应该也能稍稍有点成就吧。”