《第四讲结构化程序设计与面向对象程序设计.pptx》由会员分享,可在线阅读,更多相关《第四讲结构化程序设计与面向对象程序设计.pptx(35页珍藏版)》请在三一办公上搜索。
1、第四讲 面向对象程序设计基本思想,结构化程序设计与面向对象程序设计的异同,了解:软件结构化分析方法及工具。理解:结构化设计及面向对象设计的思路及特点。掌握:结构化和面向对象方法学的基本概念。,教学要求,1 概述,认识计算机(计算机组成原理)第一,计算机由哪些部分组成,各有什么作用,少一个组成部件会有什么后果。第二,CPU是如何工作,CPU做了哪些事情,CPU为什么只能认识0和1,CPU的寻址方式?CPU基础计算只有3个:与,或,非。这3个逻辑门实现了现在所有的计算机程序计算。过程性的编程思想(汇编语言)学习汇编的核心是汇编是一种过程性的编程语言,并且目前的CPU只能执行过程性的程序,任何高级语
2、言都必须转换成过程性的编程语言后再交给CPU执行。在汇编里主要有三个操作:比较,跳转(goto),过程调用(call)。,1 概述,结构性的编程思想(数据结构)20世纪60年代编程思想发生了一场革命性的变化,结构性的编程方法出现了。结构化程序设计思想曾为解决“软件危机”立下过汗马功劳,它在一定程度上解决了软件的可靠性、可理解性、可维护性等问题;C语言里面有几个能表现出结构化思想的地方:分支(if),循环(while,for),结构体(struct)。面向对象的编程思想(设计模式)面向对象的程序设计思想后来居上,在软件的模块化、可重用、可扩展性等方面体现出了强大的优势。从程序语法上看,面向对象比
3、结构性的程序多了两个特性:1,结构体成员的私有化。结构化程序里面,结构体的成员都是公有的。然而在面向对象里面,结构体改称为类,并且成员分为公有和私有两个部分。就因为这一点的不同,就产生了接口的概念。接口不就是类成员的公有部分么?2,类的继承。因为出现了继承,才出现了多态。然而就是因为多态,才出现诸如:隐藏啊,虚函数啊 等等这些概念。多态的出现,能够让同一组数据,在不同的阶段,用同一种表达方式,执行不同的操作。,1 概述,结构化程序设计思想 体现了人们抽象思维和复杂问题分解的基本原则与要求;结构化技术的三个方面:结构化分析(SA)基于功能分解的分析方法,即使用数据流程图、决策表等工具建立符合用户
4、需求的结构化说明书结构化设计(SD)面向数据流的设计方法,从而提出满足系统需求的最佳软件结构,完成软件层次图或者软件结构图结构化编程(SP),1 概述,面向对象的程序设计 反映了客观世界由对象组成的本质特点;面向对象技术的三个方面:面向对象分析(OOA)基于现实世界客观存在的事物出发,运用人类的自然思维方式,强调直接以现实世界的事物为中心来思考、认识问题面向对象设计(OOD)从客观事物的本质特点出发,把它们抽象表示为系统的类,作为系统的基本构成单元,使得该系统的组件可以直接反映客观世界中事物及其相互关系的本来面貌面向对象编程(OOP),2 结构化方法的基本原理,结构化分析是以系统中数据的加工处
5、理过程分析为主要内容的分析方法。结构化设计是以模块功能及其处理过程设计为主要内容进行详细设计的 一种设计方法。其概念最早由E.W.Dijikstra在1965年提出,它是软件发展的一个重要的里程碑。结构化开发方法也称为面向过程的方法或传统软件工程开发方法,它的观点是采用自顶向下、逐步求精的程序设计方法。使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造;详细描述处理过程常用三种工具:图形、表格和语言;使用的手段主要有数据流图、数据字典、层次方框图、流程图、结构化语言等。结构化程序设计的一般步骤是:分析业务流程、分析数据信息的加工处理过程;画出数据流图;建立数据字典
6、;提出系统的总体逻辑方案;细化数据流图;确定模块的接口;为每个模块确定采用的算法和数据结构;根据E-R图设计数据库、根据模块算法编程等。,2 结构化方法的基本原理,2.1结构化开发-结构化分析与设计过程 结构化开发的主要过程:问题定义、可行性论证及软件计划、需求分析、总体设计、详细设计等。每个阶段使用的工具如图所示。,2 结构化方法的基本原理,2.2 结构化开发方法结构化分析与设计举例-书店借书系统用到的分析与设计工具数据流图 数据字典 系统功能结构层次图与HIPO图、处理流程图E-R图,2 结构化方法的基本原理,1)数据流图(Data Flow Diagram,DFD图)它是描述数据加工处理
7、过程的工具,有四种基本符号如下图所示。,基本符号的含义:矩形方框表示数据的源点或终点,是系统的外部实体.圆形表示变换数据的处理。两条平行横线代表数据存储。箭头表示数据流,即特定数据的流动方向。数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。,2 结构化方法的基本原理,画数据流图的基本原则:自顶向下、逐层细化、完善求精。具体步骤:(1)绘顶层数据流图。找出对整个系统而言的输入、输出数据,确定外部实体,它们决定了系统与外界的接口。(2)为数据流命名,为加工命名。(3)检查核对。(4)核对无误后,进行分解,画处理的内部。在(2)至(4)步之间反复
8、迭代,直到处理无法进一步分解为止。顶层数据流图只要求表示对整个系统而言的输入输出数据,如图所示。,顶层数据流图的画法,2 结构化方法的基本原理,图2-3书店借书系统的顶层数据流图,结构化分析画出数据流图例如,书店借书系统的顶层数据流图如图2-3所示。,2 结构化方法的基本原理,顶层数据流图只反映了整个系统与外界的接口,但未表明数据的加工细节,需要进一步细化,得到第1层数据流图(如图所示).,书店借书系统的第一次分解后的数据流图,2 结构化方法的基本原理,“借书”处理分解后的数据流图,从图中可以看出,在书店借书系统的不同业务中,借书、还书、查询这几个处理较为复杂,使用到不同的数据较多,因此有必要
9、对其进行更深层次的分析,进一步细化。以借书处理为例,如图所示是上图中“2.0借书”处理分解后的数据流图,该图中的每个处理已不用再细分了。,2 结构化方法的基本原理,2)数据字典数据字典是对所有与系统相关的数据元素的一个有组织的列表,精确、严格地定义各个数据元素,使得用户及开发人员对于输入、输出、存储和处理形成共同的理解。数据字典由对下列6类元素的定义组成:数据流、数据流分量、数据结构、数据存储、处理逻辑、外部实体。数据字典是对数据流图的详细描述。例如:借阅制度表=读者类别+允许借阅册数+罚款规定+丢失图书罚款规定 读者类别=金卡|银卡|铜卡 又如:酒店客房预订请求=客人数据+住宿期限+客房类别
10、 客人数据=客人姓名+地址+身份证号码+护照号码+支付方式 身份证号码=15十进制数字18 护照号码=字母+8十进制数字8 字母=AZ 十进制数字=09,2 结构化方法的基本原理,数据字典应用举例以学生选课数据字典为例简要说明如何定义数据字典。学生选课的数据流图如右所示:,数据项:以“学号”为例数据项名:学号数据项含义:唯一标识每一个学生别名:学生编号数据类型:字符型长度:8取值范围:0000099999取值含义:前2位为入学年号,后3位为顺序编号与其他数据项的逻辑关系:(无)数据结构:以“学生”为例数据结构名:学生含义说明:是学籍管理子系统的主体数据结构,定义了一个学生的有关信息组成:学号,
11、姓名,性别,年龄,所在系 数据流:以“选课信息”为例数据流名:选课信息说明:学生所选课程信息数据流来源:“学生选课”处理数据流去向:“学生选课”存储组成:学号,课程号平均流量:每天10个高峰期流量:每天100个,数据存储:以“学生选课”为例数据存储名:学生选课说明:记录学生所选课程的成绩编号:(无)流入的数据流:选课信息,成绩信息流出的数据流:选课信息,成绩信息组成:学号,课程号,成绩数据量:50000个记录存取方式:随机存取 处理过程:以“学生选课”为例处理过程名:学生选课说明:学生从可选修的课程中选出课程输入数据流:学生,课程输出数据流:学生选课处理:每学期学生都可以从公布的选修课程中选修
12、自己愿意选修的课程,选课时有些选修课有先修课程的要求,还要保证选修课的上课时间不能与该生必修课时间相冲突,每个学生四年内的选修课门数不能超过8门。,2 结构化方法的基本原理,3)E-R图(实体关系图)例如:图书馆“读者借还书”的E-R图。,1,n,2 结构化方法的基本原理,4)层次图与HIPO图(Hierarchy层次结构)层次图用来描绘软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用关系。它适于在自顶向下设计软件的过程中使用,描述模块的划分。在第1层数据流图中对“书店借书系统”划分模块得到对应的系统功能结构的层次图,如图所示。HIPO图是“层次图加输入/处理/输出图”的英文
13、缩写,为了能使HIPO图更清晰,首先要对层次图中的各个模块编号,加了编号后的层次图,称为H图.图中体现了编号的规则.“2.1.1 借书处理”功能的IPO图和功能处理流程图,据此可以编程。,2 结构化方法的基本原理,结构化设计-概要设计的系统功能结构层次图书店借书系统功能结构的层次图,2.2 结构化方法的基本原理,书店借书系统功能结构的层次图(加了编号),借书处理2.1.1,还书处理2.1.2,结构化设计-概要设计的系统功能结构层次图(H图)根据数据流图得出系统功能结构图。图中的7个功能模块对应第1层数据流图中的7个加工处理。,2 结构化方法的基本原理,5)IPO图 IPO是输入、处理、输出的简
14、称,IPO图能方便地描绘输入数据、数据的处理和输出数据的关系。结构化设计-功能模块详细设计的IPO图例如:书店借书系统中的”借书处理”功能模块的详细设计-IPO图。图中的处理1-5对应第2层数据流图中的5个处理。,“借书”处理分解后的数据流图,2 结构化方法的基本原理,”2.1.1 借书处理”功能的HIPO表、功能处理流程图。据此可以编程。,结构化设计-功能模块详细设计的IPO表及功能处理流程图,2 结构化方法的基本原理,结构化开发方法-结构化分析与设计过程小结,结构化分析是以系统中数据的加工处理过程分析为主要内容的分析方法。主要工具是数据流图、数据字典。结构化设计是以模块功能及其处理过程设计
15、为主要内容进行详细设计的 一种设计方法。主要工具是系统功能结构层次图、IPO图/表、处理流程图。,3 面向对象方法学的基本概念和原则,3.1 基本概念对象(object)类(class)实例(instance)消息(message)消息的传递通常通过方法调用来实现。消息是发给对象的方法调用的通知。例如:已知圆类Circle的对象MyCircle,当要求它以绿颜色在屏幕上显示自己时,程序中应该向它发送下列消息:MyCircle.Show(GREEN);MyCircle是接收消息的对象的名字,Show是消息名称(也是方法名称),当MyCircle接收到这个消息后,将执行在Circle类中定义的Sh
16、ow操作。方法(method)属性(attribute)封装(encapsulation)继承(inheritance)多态性(polymorphism)重载(overloading),3 面向对象方法学的基本概念和原则,3.2 主要原则(1)抽象(2)分类(3)聚合:在面向对象的分析中运用聚合关系表示事物整体对象和它的组成部分对象之间的组成关系,形成一个整体/部分结构。(4)关联(5)消息通信:对象之间只能通过消息进行通信,在面向对象的分析中要求用消息连接表示出对象之间的静态联系。(6)粒度控制(7)行为分析:确定行为的归属和作用范围;认识事物之间行为的依赖关系;认识行为的起因,区分主动行为
17、和被动行为;认识系统的并发行为;认识对象状态对行为的影响。,面向对象开发方法的软件建模过程简介以“书店借书系统”为例 1.需求建模用例图(等用功能结构图),4 面向对象方法与结构化方法比较,4.1 实例,面向对象开发方法的软件建模过程简介以“书店借书系统”为例 2.“借还书”用例分析类图(确定需要哪些类及其关系,画出类图),4 面向对象方法与结构化方法比较,面向对象开发方法的软件建模过程简介以“书店借书系统”为例 3.“借还书”用例分析顺序图(根据用例描述得到)每个类对象要完成接收消息对应的操作,各个类对象的操作互相配合完成用例功能。,4 面向对象方法与结构化方法比较,面向对象开发方法的软件建
18、模过程简介以“书店借书系统”为例 4.“借还书”用例设计顺序图(把消息细化为对象的方法调用)控制类主要起控制业务逻辑流程的作用,控制消息发送的顺序。,4 面向对象方法与结构化方法比较,面向对象开发方法的软件建模过程简介以“书店借书系统”为例 5.“借还书”用例设计类图(根据顺序图设计类图:把对象接收的消息对应到类的方法)6.数据库设计 7.写出类代码 8.代码测试,4 面向对象方法与结构化方法比较,设计,2.4 面向对象方法与结构化方法比较,7.setBorrowamount(),根据顺序图设计类图:把对象接收的消息对应到类的方法,4 面向对象方法与结构化方法比较,(1)面向对象分析与设计方法
19、小结反复迭代完善需求。对已有的需求进行整理,列出需求列表。与用户交流得到有效的需求列表。画出初始用例模型,表达系统的主要功能及主要业务流程。完善需求列表,完善用例模型。反复迭代进行系统分析。识别系统中的对象及其关系,画初始类模型。确定类的职责、属性和方法。表示出主要业务过程的动态模型。由动态模型反复映射,完善类模型。反复迭代进行系统设计。确定整个系统的拓扑结构(部署图)。修订类模型。相应修订动态模型。完成反映程序模块的包图。完成反映程序软件构成的组件图。设计界面,设计数据库。,4.2 面向对象方法与结构化方法比较,4 面向对象方法与结构化方法比较,(2)结构化分析与设计方法小结。获取完整的需求。自顶向下、逐层分解,画出数据流图。书写数据字典。映射出系统的层次结构,进行系统结构(模块及其接口)设计。逐层细分,细化出每个处理。设计界面,设计数据库。,4.2 面向对象方法与结构化方法比较,4 面向对象方法与结构化方法比较,小结,结构化方法和面向对象的方法是当前两种主流的软件开发方法。面向对象的开发方法根据现实问题直接抽象出对象,分析对象的行为和与行为相关的数据,对象间通过传递消息进行通信,从问题出发,模拟现实问题,建立系统模型,易于理解和实现。结构化开发方法有一套成熟的理论基础,“自顶向下、逐步求精”,在获取完整的需求之后才能开始系统的分析和设计。,