第四讲 结构化程序设计与面向对象程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 结构化方法的基本原理
3)E-R图(实体-关系图 ) 例如:图书馆“读者借还书”的E-R图。
借书卡号
书号
1 读者
n 借还书
图书
姓名
日期
书名
2 结构化方法的基本原理
4)层次图与HIPO图(Hierarchy层次结构) 层次图用来描绘软件的层次结构,图中的一个矩形框代表一 个模块,方框间的连线表示调用关系。它适于在自顶向下设 计软件的过程中使用,描述模块的划分。 在第1层数据流图中对“书店借书系统”划分模块得到对应 的系统功能结构的层次图,如图所示。 HIPO图是“层次图加输入/处理/输出图”的英文缩写, 为了 能使HIPO图更清晰,首先要对层次图中的各个模块编号, 加了 编号后的层次图,称为H图.图中体现了编号的规则.
第四讲 面向对象程序设计基本思想
结构化程序设计与面向对象程序设计的异同
教学要求
了解:软件结构化分析方法及工具。 理解:结构化设计及面向对象设计的思路及特点。 掌握:结构化和面向对象方法学的基本概念。
1 概述
① 认识计算机(计算机组成原理)
第一,计算机由哪些部分组成,各有什么作用,少一个组成部件会有 什么后果。 第二,CPU是如何工作,CPU做了哪些事情,CPU为什么只能认识0和1, CPU的寻址方式? CPU基础计算只有3个:与,或,非。这3个逻辑门实 现了现在所有的计算机程序计算。
1 概述
结构化程序设计思想 体现了人们抽象思维和复杂问题分解的基本原则与要求; 结构化技术的三个方面:
① 结构化分析(SA) 基于功能分解的分析方法,即使用数据流程图、决策表等 工具建立符合用户需求的结构化说明书
② 结构化设计(SD) 面向数据流的设计方法,从而提出满足系统需求的最佳 软件结构,完成软件层次图或者软件结构图
读者注册信息表 图书信息表 借还记录信息表
2 结构化方法的基本原理
数据字典应用举例 以学生选课数据字典为例简要说明 如何定义数据字典。 学生选课的数据流图如右所示:
①数据项:以“学号”为例 数据项名:学号 数据项含义:唯一标识每一个学生 别名:学生编号 数据类型:字符型 长度:8 取值范围:00000~99999 取值含义:前2位为入学年号,后3位为顺序编号 与其他数据项的逻辑关系:(无) ② 数据结构:以“学生”为例 数据结构名:学生 含义说明:是学籍管理子系统的主体数据结构,定义 了一个学生的有关信息 组成:学号,姓名,性别,年龄,所在系 ③ 数据流:以“选课信息”为例 数据流名:选课信息 说明:学生所选课程信息 数据流来源:“学生选课”处理 数据流去向:“学生选课”存储 组成:学号,课程号 平均流量:每天10个 高峰期流量:每天100个
借书请求 图书和借书单
读者注册信息表
2.0 借书
图书信息表
借还记录信息表
读者信息
图书信息 借还信息
3.0 还书
书店借书系统的第一次分解后的数据流图
卡到期提醒 补收押金信息
图书有损坏罚款单 还书请求 读者
2 结构化方法的基本原理
从图中可以看出,在书店借书系统的不同业务中,借书、还书、查询这几个
处理较为复杂,使用到不同的数据较多,因此有必要对其进行更深层次的分析, 进一步细化。以借书处理为例,如图所示是上图中“2.0借书”处理分解后的数 据流图,该图中的每个处理已不用再细分了。
“2.1.1 借书处理”功能的IPO图和功能处理流程图,据此可 以编程。
2 结构化方法的基本原理
结构化设计----概要设计的系统功能结构层次图 书店借书系统功能结构的层次图
书店借书系统
登录
借还书
会员管理
借
打
还
印
书
借
处
书
理
单
会 员 注
册
会 员 注
销
查 询 会 员 信
续 卡
息
2.2 结构化方法的基本原理
2 结构化方法的基本原理
结构化分析—画出数据流图 例如,书店借书系统的顶层数据流图如图2-3所示。
会员借书卡
会员信息被注销信息 借书单
补交押金 罚款单
读者
续卡请求 注册信息
卡到期
书店借书系统 拒绝借或还书请求
读者
借书请求 还书请求 注销会员请求
图书 会员信息
查询会员信息 登录请求
登录信息
借书管理员
使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三 种基本控制结构构造;
详细描述处理过程常用三种工具:图形、表格和语言; 使用的手段主要有数据流图、数据字典、层次方框图、流程图、结构化 语言等。
结构化程序设计的一般步骤是:分析业务流程、分析数据信息的加工处 理过程;画出数据流图;建立数据字典;提出系统的总体逻辑方案;细化数 据流图;确定模块的接口;为每个模块确定采用的算法和数据结构;根据ER图设计数据库、根据模块算法编程等。
(2)为数据流命名,为加工命名。
(3)检查核对。
(4)核对无误后,进行分解,画处理的内部。
在(2)至(4)步之间反复迭代,直到处理无法进一步分解为止。
顶层数据流图只要求表示对整个系统而言的输入输出数据,如图所示。
外部实体
Baidu Nhomakorabea
输入数据流
输出数据流 外部实体
外部实体
输入数据流
软件系统
输出数据流
外部实体
顶层数据流图的画法
2 结构化方法的基本原理
2.1结构化开发--结构化分析与设计过程
结构化开发的主要过程:问题定义、可行性论证及软件计划、需求分 析、总体设计、详细设计等。
每个阶段使用的工具如图所示。
阶段
拟解决的关键性问 题
工具
问题定义
要解决的问题是什 么
可行性论证 有行得通的解决办 及软件计划 法吗
需求分析
系统必须做什么
③ 结构化编程(SP)
1 概述
面向对象的程序设计
反映了客观世界由对象组成的本质特点;面向对象技术的三个方面: ① 面向对象分析(OOA)
基于现实世界客观存在的事物出发,运用人类的自然思维方式,强调 直接以现实世界的事物为中心来思考、认识问题 ② 面向对象设计(OOD) 从客观事物的本质特点出发,把它们抽象表示为系统的类,作为系统 的基本构成单元,使得该系统的组件可以直接反映客观世界中事物及 其相互关系的本来面貌 ③ 面向对象编程(OOP)
for),结构体(struct)。
④ 面向对象的编程思想(设计模式)
面向对象的程序设计思想后来居上,在软件的模块化、可重用、可扩展性等方 面体现出了强大的优势。从程序语法上看,面向对象比结构性的程序多了两个 特性: 1, 结构体成员的私有化。结构化程序里面,结构体的成员都是公有的。然而 在面向对象里面,结构体改称为类,并且成员分为公有和私有两个部分。就因 为这一点的不同,就产生了接口的概念。接口不就是类成员的公有部分么? 2, 类的继承。因为出现了继承,才出现了多态。然而就是因为多态,才出现 诸如:隐藏啊,虚函数啊 …等等这些概念。多态的出现,能够让同一组数据, 在不同的阶段,用同一种表达方式,执行不同的操作。
2 结构化方法的基本原理
1) 数据流图(Data Flow Diagram ,DFD图)
它是描述数据加工处理过程的工具,有四种基本符号如下 图所示。
外部实体
处理
数据流
数据存储
基本符号的含义: 矩形方框表示数据的源点或终点,是系统的外部实体. 圆形表示变换数据的处理。 两条平行横线代表数据存储。 箭头表示数据流,即特定数据的流动方向。
② 过程性的编程思想(汇编语言)
学习汇编的核心是汇编是一种过程性的编程语言,并且目前的CPU只能 执行过程性的程序,任何高级语言都必须转换成过程性的编程语言后 再交给CPU执行。 在汇编里主要有三个操作:比较,跳转(goto),过程调用(call)。
1 概述
③ 结构性的编程思想(数据结构)
20世纪60年代编程思想发生了一场革命性的变化,结构性的编程方法出现了。 结构化程序设计思想曾为解决“软件危机”立下过汗马功劳,它在一定程度上 解决了软件的可靠性、可理解性、可维护性等问题; C语言里面有几个能表现出结构化思想的地方:分支(if), 循环(while,
会员管理 3.0
读者 注册
会员借书卡
1.0 注册
查询的信息
4.0 查询
图书状态信息 会员信息查询
借书管理员信息
借 还 书 处 理
2.1
借
还
书
书
处
处
理
理
2.1.1 2.1.2
打 印 借
会 员 注
会 员 注
查 询 会
续
借书请求
卡
图书和借书单
书
册
销
员
3.4
单
3.1
3.2
信
2.2
息
3.3
书店借书系统功能结构的层次图(加了编号)
2 结构化方法的基本原理
结构化分析是以系统中数据的加工处理过程分析为主要内容的分析方法。 结构化设计是以模块功能及其处理过程设计为主要内容进行详细设计的 一种设计方法。其概念最早由E.W.Dijikstra在1965年提出,它是软件发展的 一个重要的里程碑。
结构化开发方法也称为面向过程的方法或传统软件工程开发方法,它的 观点是采用自顶向下、逐步求精的程序设计方法。
图2-3书店借书系统的顶层数据流图
2 结构化方法的基本原理
会员借书卡
7.0 续卡
续卡请求
6.0 注销
登录信息
注销会员请求 会员信息被注销信息
读者 注册
会员借书卡
1.0 注册
登录请求
会员信息
借书管理员
查询的信息
4.0 查询
图书状态信息 会员信息查询
5.0 登录请求
借书管理员信息表
顶层数据流图只反映了 整个系统与外界的接口,但 未表明数据的加工细节,需 要进一步细化,得到第1层 数据流图(如图所示).
④ 数据存储:以“学生选课”为例
数据存储名:学生选课 说明:记录学生所选课程的成绩 编号:(无) 流入的数据流:选课信息,成绩信息 流出的数据流:选课信息,成绩信息 组成:学号,课程号,成绩 数据量:50000个记录
存取方式:随机存取 ⑤ 处理过程:以“学生选课”为例
处理过程名:学生选课 说明:学生从可选修的课程中选出课程 输入数据流:学生,课程 输出数据流:学生选课 处理:每学期学生都可以从公布的选修课程中选修自己愿意选 修的课程,选课时有些选修课有先修课程的要求,还要保证选 修课的上课时间不能与该生必修课时间相冲突,每个学生四年 内的选修课门数不能超过8门。
借书信息
2.4记录借 书信息
借书信息
2.5打印借 书单
借书单
读者注册信息表
借还记录信息表
图书信息表
2.1 借书请求 审核会员
借书卡
已审核正确的借书卡
2.2审核借 书的数量
已审核借书的数量 的借书卡
通过库存数量 审核的借书卡
2.3审核库 存书数量
借书卡无效
借书的数量超过 可借书的数量
借书失败
“借书”处理分解后的数据流图
结构化设计----概要设计的系统功能结构层次图(H图)
根据数据流图得出系统功能结构图。图中的7个功能模块对应第1层
数据流图中的7个加工处理。
会员借书卡
7.0 续卡
书店借书系统
续卡请求
6.0 注销
注销会员请求
登录信息 登录请求
5.0 登录请求
会员信息被注销信息会员信息
借书管理员
登录 1.0
借还书 2.0
数据流图、数据字典
总体设计
概括地说,应该怎 样做
系统结构图、层次方框图
详细设计
具体怎样做
HIPO图、处理流程图
交付成果
可行性分析报告 需求规格说明书 概要设计说明书 详细设计说明书
2 结构化方法的基本原理
2.2 结构化开发方法—结构化分析与设计举例 ----书店借书系统
用到的分析与设计工具 数据流图 数据字典 系统功能结构层次图与HIPO图、处理流程图 E-R图
数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静
止状态的数据,数据流是处于运动中的数据。
2 结构化方法的基本原理
画数据流图的基本原则:自顶向下、逐层细化、完善求精。
具体步骤:
(1)绘顶层数据流图。找出对整个系统而言的输入、输出数据,确定外部实体, 它们决定了系统与 外界的接口。
库存书无
2 结构化方法的基本原理
2)数据字典
数据字典是对所有与系统相关的数据元素的一个有组织的列表,精确、严格地定义各个数据元素,使得用户及 开发人员对于输入、输出、存储和处理形成共同的理解。 数据字典由对下列6类元素的定义组成:数据流、数据流分量、数据结构、数据存储、处理逻辑、外部实体。数 据字典是对数据流图的详细描述。 例如: 借阅制度表 = 读者类别+允许借阅册数+罚款规定+丢失图书罚款规定 读者类别 = [ 金卡 | 银卡 | 铜卡 ] 又如: 酒店客房预订请求 = 客人数据+住宿期限+客房类别 客人数据 = 客人姓名+地址+身份证号码+[护照号码] +支付方式 身份证号码 = 15{十进制数字}18 护照号码 = 字母 + 8{十进制数字}8 字母 = "A"…"Z" 十进制数字 = "0"…"9"