笔记——面向对象技术

面向对象的概念

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

*对象:
*1、是面向对象开发模式的基本成分,每个对象可用它本身的一组属性和它可以执行的一组操作来定义
2、属性一般只能通过执行对象的操作来改变
3、操作又称方法或服务,它描述了对象执行的功能。
4、对象是系统中用来描述客观事物的一个实体,是构成系统的基本单位,一个对象由一组属性和这组属性进行操作的一组服务构成

**消息:**对象与对象之间的联系
定义:就是向对象发出的服务请求,
1、提供服务对象的标识
2、服务的标识
3、输入信息
4、回答信息

**类:**是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的数据描述,内部包括属性和服务两个主要的部分。

**继承:**使用已存在的定义作为基础建立新定义的技术
面向对象中的定义:特殊类的对象拥有一般类的全部属性和服务,自动拥有

面向对象方法的开发过程

**问题域:**对开发系统的应用领域,开发系统的应用范围
**系统责任:**指的是所开发系统应该具备的职能

**论域分析:**找出分析开发问题论域的模型
**应用分析:**细化在论域分析阶段所开发出来的信息,把注意力集中于当前要解决的问题
笔记——面向对象技术
类的实现
通过变量的声明、操作界面的实现及支持界面操作的函数的实现,可实现一个类的预期行为和状态
一个好的面向对象语言应当分离共有界面与其内部实现

类的测试
1、如果类的定义提供的界面比较狭窄,穷举测试就有可能实现
2、从最抽象的开始
3、已经测试过的部分不需要从新测试

求精和维护
1、最花费时间的部分
2、把一般类在抽象

对象模型化技术OMT

把分析是收集的信息构造在三类模型中:对象模型、功能模型和动态模型。

对象模型
它的作用是描述系统的静态结构,包括构成系统的类和对象
在OMT中,类与类之间的关系叫做关联
1、聚合,代表整体与部分的关系,这是一种特殊形式的关联
2、限定。用以对关联的含义做某种约束
3、角色:用来说明关联的一端。由于多数关联具有两个端点,因而设计到两个角色
笔记——面向对象技术

动态模型

着重于系统的控制逻辑
它包括状态图和事件追踪图
**状态图:**是一个状态和事件的网络,是与时序有有关的动态
笔记——面向对象技术
动态模型由多个状态图组成
各个状态图并发的执行,并可以独立的改变状态

事件

一个事件发生在某一时刻
2、每个事件都是单独发生的
3、建立事件类,并给每个事件一个名字

时间追踪图

侧重于说明发生于系统执行过程中的一个特定“场景”
笔记——面向对象技术

事件追踪图

笔记——面向对象技术
状态图与事件追踪图的关系
1、状态图叙述一个对象的个体行为、事件追踪图则给出多个对象所表现出来的集体行为

功能模型
1、通过计算,从输入数据能得到什么样的输出数据,不考虑参加计算的数据按什么时序执行
2、由多个数据流图组成
3、功能模型中所有的数据流图往往形成一个层次结构
4、数据流图中允许加入控制流,不提倡夹带控制流

基于三个模型的分析过程
1、功能模型定义“做什么”
2、动态模型定义“何时做”
3、对象模型定义“对谁做”

面向对象的分析方法(OOA)

有两个任务
1、明确对象
2、明确对象之间的关系,完成指定的功能

构造OOA概念模型的层次
1、以概念模型为中心
2、五个层次是分析过程中的层次
3、五个层次是:类与对象、属性、服务、结构和主题
原则:抽象和封装
笔记——面向对象技术

对象—类层

**1、对象—类层:**表示待开发系统的基本构造块。这一层是整个OOA模型的基础。问题在于如何建立“现实世界中事物”的抽象表示,也就是如何建立基本块

**2、信息建模:**就是指从现实世界中捕捉并抽象出应用领域的基本结构的过程。这是OOA过程中最基本和最关键的活动之一

3、应用论域:
属性层:对象的属性和实例连接共同组成了OOA模型的属性层

服务层:对象的服务,加上对象实例之间的消息通信,共同组成了OOA模型的服务层,消息连接用有向箭头表示

结构层:
1、结构层的一种类型,描绘出了该系统的整理结构
2、结构层的另一种类型称为一般特殊结构或泛化特化结构

主题层:
可以将对象归类到各个主题中,把有关的对象用一个主题边框框起来

识别类和对象的原则:
1、目标系统必须记住类和对象的某些事情
2、类和对象应当提供某些服务或处理
3、多属性:属性并不单一
4、所有属性对于类中所实例都应有意义

标识结构:
1、一般和特殊化
2、整理和部分关系
如果对象A是对象B的组成部分,则称B为A的整体对象,A为B的部分对象,并把A和B的关系称作整体和部分关系

表示一般和特殊结构的方法和策略
1、看它是否在问题论域中
2、是否在系统的职责内
3、继承性是否存在
4、是否能够符合选择类和对象的标准

标识属性
1、对前面已识别的类和对象做进一步的说明,对象所保存的信息称为它的属性
2、类的属性所描述的是状态信息,每个实例的属性值表达了该实例的状态值

标识属性的方法和策略
1、找出属性
2、将属性安放到适当的位置
3、找出实例连接
4、检查特殊情况
5、描述属性
6、考虑取值范围、极限值、缺省值、建立和存取权限、精确度、是否会受到其他属性值等

定义服务的方法和策略
1、找出每一个对象的所有状态
2、找出必要的操作
3、建立消息连接
4、描述服务:利用状态转换图、脚本和时间追踪图,描述服务的功能

找出消息连接的方法及策略
1、查询该对象需要哪些对象的服务
2、查询哪个对象需要改对象的服务

识别主题
1、主题表示此模型的整体框架
2、清晰的了解大系统

把一组具有较强联系的类组织在一起而得到类的集合

面向对象设计(OOD)

**分为两个阶段:**高层设计和类设计
高层设计:在计算机环境中进行问题解决工作所需要的概念,并增加了一批需要的类。相当于总体设计
特点:
1、可以表征为标识和定义模块的过程
2、可以使一个单个的类,也可以是由一些类组合成的子系统
3、定义过程是职责驱动的

遵循的原则:
1、通信量达到最小;
2、子系统应当把那些成组的类打包,形成高度的内聚
3、逻辑功能分组,提供一个一个单元,识别并定位问题事件

四个组成成分:
1、问题论域部分:指哪些执行基本应用功能的对象
2、人机交互部分:指定了用于系统的某个特定实现的界面技术
3、任务管理部分:指定了那些创建系统时必须建立的操作系统部分
4、数据管理部分:定义了那些与所用数据库技术接口的对象

问题论域部分:包括与应用问题直接有关的所有类和对象
设计:继续OOA的工作

**用户界面部分(人机交互)的设计:**根据需求吧交互细节加入到用户界面设计中,
1、用户分类:按技能层次分类、按组织层次分类、按职能分类
2、描述人及其任务的脚本:什么人、目的、特点、成功的关键因素、熟练程度 以及任务脚本
3、设计命令层:研究现行的人机交互活动的内容和准则、建立一个初始的命令层、细化命令层
4、设计详细的交互
1、一致性
2、操作步骤少;
3、不要“哑播放”,给出反馈信息
5、继续做原型
使用快速原型工具做出原型让用户使用,通过用户反馈、修改、演示的迭代,使界面越来越有效

6、设计人机交互类
窗口需要进一步细化,首先从窗口和部件的用户界面的设计开始

任务管理部分的设计

任务:是进程的别称
任务管理主要包括任务的选择和调整
1、识别任务驱动部分
2、识别时钟的驱动任务
3、识别优先任务
4、识别协调者
5、评审 各个任务

数据 管理部分的设计

提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理
数据管理方法:文件管理、关系数据库管理和面向对象库数据管理

面向对象软件的实现与测试

1、单元测试(类测试):不能孤立的测试
2、组装测试:按类的特点进行测试
1、基于线索测试
2、基于应用的测试:着眼于系统结构,首先测试独立类,这些类只使用很少的服务器类。
3、确认测试:着眼于用户的要求和用户能够认可的系统输出
可以利用黑盒测试的方法来驱动确认测试

按不同层次进行测试
1、类的测试用例组:
每个测试用例是一系列输入值,他们讲在要求的处理中执行,以满足测试需求
2、类测试:每个类都应是可靠的,并且细节可以复用

测试类操作的测试用例组
1、首先定义测试类的各个操作的测试用例组
2、然后将测试用立足进行扩充

类测试的种类
1、基于定义的测试:可以把它当做一个黑盒对待
2、基于程序的测试(白盒测试):代码必须要测试一遍

组装测试
1、类组装:总体组装
1、把所有组成完整软件的各个部分集合在一起
2、这种测试所选择的测试用例应当瞄准待开发软件的目标,并且应当提供数据给测试者,以确定软件开发是否与它点的目标相吻合

思维导图:
笔记——面向对象技术