当前位置:
文档之家› 第9章 面向对象的分析设计方法
第9章 面向对象的分析设计方法
V.
不同对象的组合及其间的相互作用和联系构成了系统
VI. 对象间的相互作用通过消息传递,对象根据所接收到 的消息做出自身的反应
9.0 面向对象技术及其发展历史
4. 认知规律
归纳 演绎
天下乌鸦 一般黑
归 纳: 演 绎: 形象思维: 逻辑思维: 认知深度: 认知广度: 认知连续性: 从特殊到一般的思维过程 从一般到特殊的思维过程 从一公理体系出发,根据定理、定律等使用归纳及 演绎进行推理,从而解决给定问题。 从多个具有共性的解决问题的过程,发现解决这类 问题的通用方法 先一般、总体,后特殊、具体 根据事物之间的联系,将认识的焦点从一个事物转 移到另一个事物,从而扩大视野 认识的深入具有连续性,在继承已有知识的基础上 进行新认识。
:计算机类 :打印服务器类 :打印机类 :打印队列类
打印(文件)
1
event1 3
打印(文件)
2
[打印机空闲] 打印(文件) [打印机忙] 暂存(文件)
event2
2、 对象继承
• 人类对事物分类后,从某种角度观察,不同类之 间具有一定的联系。 • 人类认识事物从对象个体、类的认识,通过事务 间关联,进一步深入去认识其它事物,通过对不 同事物间关系的描述建立系统的层次结构。 • 人类对某一新事物的认知经常建立在已经获取的 一些认知结论的基础上,类似的情形同样常发生 在对事物的描述中,比如对一个新事物的描述通 常都将尝试应用业已存在的理论或方法。 • 对于人类的这种行为以及类之间关系的描述,面 向对象技术给予充分的技术支持。
图书1 书 名:程序设计 总页数:280 版 本:2 ...... 返回书名 返回总页数 返回版本号 ...... MyBook1 : CBook m_pczName:char* =“程序设计” nTotalPage:int =280 nEdition:int =2 ...... char* GetBookName(); int GetTotalPage(); int GetEdition(); ......
问题空间对象
分析中的对象
设计中的对象
对象数据封装
解空间对象 Class CBook { char* m_pczName; int m_nPages; int m_nEdition; …… } … … CBook b;
地址
003B0870
0012FF6C
0012FF68
0012FF64
内容 属性名 ... ... 00 C6 计 BC E8 设 C9 F2 序 D0 CC 程 B3 ... 00 m_nEdition 00 (int类型) 00 (版本) 02 00 m_nPages 00 (int类型) 01 (总页数) 18 00 m_pczName 3B (char* 类型 ) 08 (书名) 70
生产软件产品
9.0 面向对象技术及其发展历史
2. 从“软件工程” 的发展史看面向对象技术出现的必然性
结构化 程序设计 面向对象 程序设计
面向机器
面向过程
机器语言 助记符语言 汇编语言 面向机器
直接控制机器 的运行
FORTRAN BASIC 面向过程
描述解题过程
C PASCAL 结构化 程序设计
以控制结构表 示程序的物理 层次结构
CRectangle::Display()
与运算符相似
CCircle::Display()
CRectangle a; a.Display()
CCircle c; c.Display()
§9.2 面向对象分析方法
面向对象分析 OOA 分析模型 面向对象设计 OOD 设计模型 面向对象实现 OOI 实现模型
效 率
可 维
(1)系统层次结构设计
对软件系统进行的整体划分。 水平方向代表系统的不同抽象 级别与层次;纵向表明每个层 次所提供的功能模块
模块1 模块1 模块1 模块1 模块1
模块3 模块3 模块3 模块3 模块3
数据流
对象或处理的输入输出与另一对象或处理的输入输出之间的 连接,表明计算中的中间数据
邮编 城市 数字 地址 街道 楼号
数据拷贝
聚集数据分解
功能模型(数据流图)
施动者
通过产生或使用数据驱动数据流图的主动对象,与数据流图 的输入输出联系在一起。
像素操作
转换成像素
屏幕缓 冲区
数据存储
数据流图中为后继访问而存储数据的被动对象。与施动者不 同,它不产生任何操作,仅对存储和访问数据的请求响应。
CEditText
CScreenObject
CWnd
3、多态性
人类思维和描述中经常使用同一个名字代表不同的事物,客 观事物也往往具有多重身份,在不同的场合显现出不同的形 态。如:+、操作(函数)等。面向对象中使用多态性表述 这种习惯。 多态性的含义:一个标识符标识多个语义。 例如:Display()在CCircle类和CRectangle类中.
人
姓名
身份证号码 地址
老板
员工
工资帐号
管理 工作部门
公司 为…工作 名称 地址 薪水 工作职务
工人
工作效率
2、动态模型
对象的动态行为包括两个方面的内容:
单个对象自身生命周期演化; 整个对象系统中对象间消息传递及相互作用
(1) 对象生命周期
event 1 S1 event 3 event 2 S2 event 4 S3 状态转换图
1对多: 多对多:
公司
有 写
雇员
作家
电脑 班 计算机
小说
鼠标
80
1对多:
1对多: 1对多:
装有
有 有
0或1
学生
+1
屏幕
Ⅲ. 继承关系 父-子关系
人
父
子 工人
子 农民
子 商人 脸
Ⅳ.集约关系整体-部分关系
嘴
眼
鼻
…
Ⅴ. 消息关系
O1
动作
O2
O3
例: …每个为公司工作的人都可以领到一份薪水和一项工作。老板评 价每个工人的工作表现。…
(1)父类和子类
一般—特殊结构
人类对事物进行分类后,在概念上,一些种类的事物之间存在着联系, 一些类之间在行为、属性等方面具有部分相似性,其间存在一般与特 殊的对应关系:汽车与轿车、学生与班委会… … 这种关系不存在于具体对象实例之间,而存在于对象类之间。
一般性寓于特殊性之中,体现在一般类对象所具有的属性和操作包含 于特殊类对象之中。
第9章 面向对象的分析设计方法
内容提要: 面向对象技术及其发展历史 面向对象技术的一些基本概念 面向对象的分析 面向对象的设计 面向对象的实现
9.0 面向对象技术及其发展历史
1. 什么是面向对象技术
以面向对象方法学为基础的软件系统组织和结构设计的工程技术
内部组成 层次结构
特点: 标准的工艺流程 统一的生产规范 内容:面向对象分析 面向对象设计 面向对象程序设计
C++ Java 面向对象 程序设计
程序设计过程 与人类的认知 过程统一
9.0 面向对象技术及其发展历史
3. 面向对象方法学基本内涵
I. II. 客观世界的事物由各种各样的实体(对象)构成 每个对象都有各自的内部状态和运动(状态)规律
III. 根据对象的属性和运动规律的相似性可以将对象分类 IV. 复杂对象由相对简单的对象组成
§9.1 面向对象技术的基本概念 1、什么是对象
对象的含义是什么? 对象Object 在不同场合具有不同的含义: 对象是封装了数据结构及可以施加在这些数据结 构上的操作的封装体,这个封装体有可以唯一地 标识它的名字,而且对外界提供一组服务(即公 有的操作)。
(1)对象数据封装
人、学生、学校、班级、处、电视、汽车……等都可以被看作对象 对象的形态与静态特征
最高温度 读数 最低温度
气温
功能模型(数据流图)
举例
窗口
图标名 转换成像素 位置 向量表
窗口图标显示数据流图
图标定义 显示缓冲像素
视口
9.3 面向对象设计概述
面向对象设计阶段在分析模型 基础上进行未来软件的系统设 计、对象设计,从而得到设计 模型,该模型包含了解决问题 的方案和策略。是确定问题具 体解决方案的过程
将复杂问题(复 杂对象)划分为 一系列简单的组 成部分(简单对 象)
符合人类认知规律的 软件开发过程 认识各类对象
自身属性及行 为 全部事物 的完整认 识 认识对象及类 之间关系
划分
分类
按照对象间的各种 相似性将对象分类
1 2 3
4
将问题划分为不同对象。 通过类比发现对象间存在的相似性,从而得到类、子类、父类等。 对属于同一个类的对象定义一组数据用以刻画该类对象的整体特征; 定义一组“方法”(函数)用以描述能够对该类对象进行的操作 (行为)。 建立对象间的联系以反映不同对象之间的相互作用。
打电话者 电话线 接电话者
拿起耳机 拨号音开始 拨号 4 拨号 8 拨号 3 拨号 2 铃声 铃声停止 电话连通 电话断开 打电话者挂机
铃声
接受对方回答 铃声停止 电话连通 受话方挂机 电话断开
3、功能模型(数据流图)
处理
数据变换或操作,表明数据流入经处理后被变换为输出
被除数 整除 除数 商 余数
客观事物
OOA三种模型 • 对象模型—用类和关系来描述系统的静态结构 • 动态模型—用事件和对象状态来描述系统的动态 特性 • 功能模型—按照对象的操作来描述如何从输入给 出输出结果(数据流图)
1、对象模型
对象模型符号表示: ①类 ②关联 I.一般关联: 1对 1 : 国家
有
政府