项目五软件项目实现.ppt_第1页
项目五软件项目实现.ppt_第2页
项目五软件项目实现.ppt_第3页
项目五软件项目实现.ppt_第4页
项目五软件项目实现.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目五软件项目的实现 软件工程案例教程清华大学出版社 项目五软件项目的实现 任务一结构化程序设计任务二面向对象程序设计任务三程序设计语言任务四程序复杂度小结实验实训 任务一结构化程序设计 5 1 1结构化程序的提出结构化程序设计的特征主要有以下几点 1 以三种基本结构的组合来描述程序 2 整个程序采用模块化结构 3 有限制地使用转移语句 在非用不可的情况下 也要十分谨慎 并且只限于在一个结构内部跳转 不允许从一个结构跳到另一个结构 这样可缩小程序的静态结构与动态执行过程之间的差异 使人们能正确理解程序的功能 任务一结构化程序设计 4 以控制结构为单位 每个结构只有一个入口 一个出口 各单位之间接口简单 逻辑清晰 5 采用结构化程序设计语言书写程序 并采用一定的书写格式使程序结构清晰 易于阅读 6 注意程序设计风格 我们现在用到的譬如C FORTRAN PASCAL等语言都属于典型结构化程序设计语言 任务一结构化程序设计 5 1 2程序的三种基本结构顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的 其流程如图所示 图中的S1和S2表示两个处理步骤 例如在我们学生信息管理系统中S1可以代表增加学生纪录 S2代表标记学生学号 S3代表确定学生院系等 这些处理步骤可以是一个非转移操作或多个非转移操作序列 甚至可以是空操作 也可以是三种基本结构中的任一结构 整个顺序结构只有一个入口点a和一个出口点b 这种结构的特点是 程序从入口点a开始 按顺序执行所有操作 直到出口点b处 所以称为顺序结构 事实上 不论程序中包含了什么样的结构 而程序的总流程都是顺序结构的 顺序结构 b a 任务一结构化程序设计 选择结构表示程序的处理步骤出现了分支 它需要根据某一特定的条件选择其中的一个分支执行 选择结构有单选择 双选择和多选择三种形式 双选择结构 单选择结构 多选择结构 任务一结构化程序设计 循环结构循环结构表示程序反复执行某个或某些操作 直到某条件为假 或为真 时才可终止循环 在循环结构中最主要的是 什么情况下执行循环 哪些操作需要循环执行 循环结构的基本形式有两种 当型循环和直到型循环 a 当型循环结构 b 直到型循环结构 5 1 3N S流程图N S流程图是结构化程序设计方法中用于表示算法的图形工具之一 对于结构化程序设计来说 传统流程图已很难完全适应了 因为传统流程图出现得较早 它更多地反映了机器指令系统设计和传统程序设计方法的需要 难以保证程序的结构良好 另外 结构化程序设计的一些基本结构在传统流程图中没有相应的表达符号 例如 在传统流程图中 循环结构仍采用判断结构符号来表示 这样不易区分到底是哪种结构 特别是传统流程图由于转向的问题而无法保证自顶而下的程序设计方法 使模块之间的调用关系难以表达 为此 两位美国学者Nassi和Shneiderman于1973年就提出了一种新的流程图形式 这就是N S流程图 它是以两位创作者姓名的首字母取名 也称为NassiShneiderman图 任务一结构化程序设计 a 顺序 b 循环 c 当型循环 d 直到型循环 任务一结构化程序设计 5 1 4结构化程序设计方法结构化程序设计方法是公认的面向过程编程应遵循的基本方法和原则 结构化程序设计方法主要包括 只采用三种基本的程序控制结构来编制程序 从而使程序具有良好的结构 程序设计自顶而下 用结构化程序设计流程图表示算法 有关结构化程序设计及方法有一整套不断发展和完善的理论和技术 对于初学者来说 完全掌握是比较困难的 但在学习的起步阶段就了解结构化程序设计的方法 学习好的程序设计思想 对今后的实际编程是很有帮助的 任务二面向对象程序设计 面向对象程序设计 OOP 技术汲取了结构化程序设计中好的思想 并将这些思想与一些新的 强大的理念相结合 从而给你的程序设计工作提供了一种全新的方法 通常 在面向对象的程序设计风格中 你会将一个问题分解为一些相互关联的子集 每个子集内部都包含了相关的数据和函数 同时 你会以某种方式将这些子集分为不同等级 而一个对象就是已定义的某个类型的变量 当你定义了一个对象 你就隐含的创建了一个新的数据类型 任务二面向对象程序设计 5 2 1数据抽象和封装把数据和函数包装在一个单独的单元 称为类 的行为称为封装 数据封装是类的最典型特点 数据不能被外界访问 只能被封装在同一个类中的函数访问 这些函数提供了对象数据和程序之间的接口 避免数据被程序直接访问的概念被称为 数据隐藏 抽象指仅表现核心的特性而不描述背景细节的行为 类使用了抽象的概念 并且被定义为一系列抽象的属性如尺寸 重量和价格 以及操作这些属性的函数 类封装了将要被创建的对象的所有核心属性 因为类使用了数据抽象的概念 所以它们被称为抽象数据类型 ADT 封装 封装机制将数据和代码捆绑到一起 避免了外界的干扰和不确定性 它同样允许创建对象 简单的说 一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体 在一个对象内部 某些代码和 或 某些数据可以是私有的 不能被外界访问 通过这种方式 对象对内部数据提供了不同级别的保护 以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分 任务二面向对象程序设计 5 2 2继承继承是指一个对象从另一个对象中获得属性的过程 继承是软件重复使用的一种方式 新的类可以吸收已存类的数据与方法 并增加新的数据和方法 它支持按层次分类的概念 任务二面向对象程序设计 例如 学生管理系统涉及学生对象类 每一学生均拥有他们共同的属性 例如 name 姓名 idNo 身份证号 sex 性别 stNo 学号 coarseId 某公共课成绩 等 但是不同系的学生由于专业不同 他们又有各自与专业相关的课程的学分 例如 信息系的学生应该具有其属类student类全部特征和行为规则 同时还具有这个系学生独有东西 以Student类为基础建立的信息系学生类C student既具有学生类的特点 也具有信息系学生自己的特点 这里 我们称Student类是C student类的父类 类C student称为Student的子类 C Student类继承学生类Student 任务二面向对象程序设计 5 2 3多态多态是指一个方法只能有一个名称 但可以有许多形态 也就是程序中可以定义多个同名的方法 用 一个接口 多个方法 来描述 可以通过方法的参数和类型引用 例如 学生类应该有一个计算成绩的操作 信息系学生 会计系学生和机械系学生都继承自学生类 显然对于各种不同的学生类型需要统计的课程不一样 这就需要计算成绩的操作在不同的学生类中有不同的实现 但使用同一个操作名称 我们称为多态 继承和多态的结合可以轻易构造一系列功能类似但又各异的类和对象 由于继承性 这些类和对象具有相似的特征 但由于多态性 同样一种行为在不同类和对象上又有不同的实现和结果 任务二面向对象程序设计 面向对象程序设计的一些显著的特性包括 程序设计的重点在于数据而不是过程 程序被划分为所谓的对象 数据结构为表现对象的特性而设计 函数作为对某个对象数据的操作 与数据结构紧密的结合在一起 数据被隐藏起来 不能为外部函数访问 对象之间可以通过函数沟通 新的数据和函数可以在需要的时候轻而易举的添加进来 在程序设计过程中遵循由下至上 bottom up 的设计方法 任务三程序设计语言 5 3 1计算机语言与程序设计语言什么是计算机语言 狭义的指计算机可以执行的机器语言 广义的指一切用于人与计算机通讯的语言 包括程序设计语言 各种专用的或通用的命令语言 查询语言 定义语言等 现在一般采用后一种说法 程序设计语言 泛指一切用于书写计算机程序的语言 包括汇编语言 机器语言 以及一般称为高级语言的完全符号形式的独立于具体计算机的语言 任务三程序设计语言 上面两段话很清楚地说明了计算机语言与程序设计语言之间的区别和联系 计算机语言是外延较大的概念 程序设计语言只是计算机语言下的一个子概念 有人说 人们交流要通过语言 人要和计算机打交道 也要通过语言 所以要使用计算机必须学习程序设计语言 前半句话指的是计算机语言 而后半句话指的是程序设计语言 由于 偷换 了概念 推理不合逻辑 结论也就不可靠了 由于概念的混乱 出现了这种说法 我们和计算机打交道 就要用计算机语言 这句话是对的 但用计算机语言与计算机打交道 不一定要用程序设计语言 任务三程序设计语言 我们用DOS命令 就是在用计算机语言 命令语言 我们学习Windows操作 用鼠标单击某一图标 让计算机执行某一操作也是一种计算机语言 我们学习某种应用软件的操作 也是学习计算机语言 总之 我们在学习计算机知识的过程中一直在学习计算机语言 一直是通过计算机语言和计算机打交道 但它们都不是程序设计语言 程序设计语言是根据计算机的特点而编制的 它没有自然语言那么丰富多样 而只是有限规则的集合 所以它 简单易学 但是 也正因为它是根据机器的特点编制的 所以交流中无法意会和言传 而更多地表现了说一不二 表现了 规则 的严谨 例如该是 的地方不能写成 该写 a 的地方不能写成 A 这使得学习程序设计语言在一开始会有些不习惯 任务三程序设计语言 5 3 2程序语言分类1 机器语言电子计算机所使用的是由 0 和 1 组成的二进制数 二进制是计算机语言的基础 计算机发明之初 人们只能降贵纡尊 用计算机的语言去命令计算机干这干那 一句话 就是写出一串串由 0 和 1 组成的指令序列交由计算机执行 这种语言 就是机器语言 2 汇编语言为了减轻使用机器语言编程的痛苦 人们进行了一种有益的改进 用一些简洁的英文字母 符号串来替代一个特定的指令的二进制串 比如 用 ADD 代表加法 MOV 代表数据传递等等 这样一来 人们很容易读懂并理解程序在干什么 纠错及维护都变得方便了 这种程序设计语言就称为汇编语言 即第二代计算机语言 任务四程序复杂度 5 4 1程序复杂度同一问题可用不同算法解决 而一个算法的质量优劣将影响到算法乃至程序的效率 算法分析的目的在于选择合适算法和改进算法 一个算法的评价主要从时间复杂度和空间复杂度来考虑 任务四程序复杂度 1 时间频度一个算法执行所耗费的时间 从理论上是不能算出来的 必须上机运行测试才能知道 但我们不可能也没有必要对每个算法都上机测试 只需知道哪个算法花费的时间多 哪个算法花费的时间少就可以了 并且一个算法花费的时间与算法中语句的执行次数成正比例 哪个算法中语句执行次数多 它花费时间就多 一个算法中的语句执行次数称为语句频度或时间频度 记为T n 任务四程序复杂度 n称为问题的规模 当n不断变化时 时间频度T n 也会不断变化 但有时我们想知道它变化时呈现什么规律 为此 我们引入时间复杂度概念 一般情况下 算法中基本操作重复执行的次数是问题规模n的某个函数 用T n 表示 若有某个辅助函数f n 使得当n趋近于无穷大时 T n f n 的极限值为不等于零的常数 则称f n 是T n 的同数量级函数 记作T n O f n 称O f n 为算法的渐进时间复杂度 简称时间复杂度 空间复杂度与时间复杂度类似 空间复杂度是指算法在计算机内执行时所需存储空间的度量 记作 S n O f n 小结 结构化程序设计已经满足不了当代程序设计的需求 但是关于结构化编成的思想仍然很重要 传统的结构化分析与设计开发方法是一个线性过程 因此 传统的结构化分析与设计方法要求现实系统的业务管理规范 处理数据齐全 用户能全面完整地掌握其业务需求 传统的软件结构和设计方法难以适应软件生产自动化的要求 因为它以过程为中心进行功能组合 软件的扩充和复用能力很差 对象 Object 是一个现实实体的抽象 由现实实体的过程或信息来定义 一个对象可被认为是一个把数据 属性 和程序 方法 封装在一起的实体 这个程序产生该对象的动作或对它接受到的外界信号的反应 这些对象操作有时称为方法 对象是个动态的概念 其中的属性反映了对象当前的状态 类 Class 用来描述具有相同的属性和方法的对象的集合 它定义了该集合中每个对象所共有的属性和方法 对象是类的实例 因为对象是对现实世界实体的模拟 因而能更容易地理解需求 即使用户和分析者之间具有不同的教育背景和工作特点 也可很好地沟通 区别面向对象的开发和传统过程的开发的要素有 对象识别和抽象 封装 多态性和继承 实验实训 实训目的 1 培养学生运用所学开发语言的理论知识和技能 分析解决计算机的实际应用问题的能力 2 培

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论