第九章 软件开发与信息处理技术
软件工程基础
数据库设计基础
数据结构与算法
程序设计基础
多媒体技术简介
9.1 软件工程基础软件的规模大小、复杂程度决定了软件开发的难度,因此,必须采用科学的软件开发方法,采用抽象、分解等科学方法降低复杂度,以工程的方法管理和控制软件开发的各个阶段,以保证大型软件系统的开发具有 正确性、易维护性、可读性和可重用性
9.1.1 软件工程基本概念软件的发展大致分为四个阶段,( 如下图)
阶段第一阶段 第二阶段 第三阶段 第四阶段程序设计阶段程序系统阶段软件工程阶段
(结构化方法发)
软件工程阶段
(面向对象方法)
典型技术面向批处理有限的分布自定义软件多用户实时数据库软件产品分布式系统嵌入“智能”
低成本硬件消费者的影响强大的桌面系统面向对象技术专家系统人工神经网络网络计算机软件危机和软件工程
软件危机主要表现在,对软件开发成本和进度的估计常常很不准确,经费预算经常突破,
完成时间一再拖延;开发的软件不能满足用户要求,用户软件不满意的现象经常发生;
开发的软件可维护性差、可靠性差
软件工程,运用系统的、规范的和可定量的方法开发、运行和维护软件。它包含三个要素:
方法( Methodologies)
工具( Tools) 过程( Procedures)
软件工程过程和软件生命周期
软件工程过程
软件生命周期
软件生命周期模型
软件工程的目标和原则
软件开发工具与软件开发环境下图为软件生命周期各阶段的任务:
时期 阶段 任务 文档软件计划问题定义 理解用户要求,划清工作范围 计划说明书可行性研究可行性方案及代价需求分析 软件系统的目标及应完成的工作 需求规格说明书软件开发概要设计 系统的逻辑设计 软件概要设计说明书详细设计 系统模块设计 软件详细设计说明书软件编码 编写程序代码 程序、数据、详细注释软件测试 单元测试、综合测试 测试后的软件、测试大纲、测试方案与结果软件维护 软件维护 运行和维护 维护后的软件图为软件生命周期的 瀑布模型 和 快速原形法模型软件计划需求分析软件设计软件编码软件测试软件维护需求分析快速设计建立模型用户评价模型修改原型生产产品软件工程目标和原则目标,在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、
可重用性、可适应性、可移植性、可追踪性并满足用户需求的产品软件工程理论和技术性研究的内容:
软件开发技术和软件管理技术原则,抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性软件开发工具与开发环境软件开发工具,是为支持软件人员开发和维护活动而使用的软件。
作用,可以帮助开发人员完成一些繁琐的程序编制和调试问题,是软件开发人员将更多的精力和时间投放到最重要的软件需求和设计上,提高软件开发的速度和质量。
9.1.2 结构化分析方法
结构化方法( Sructured
Methodology),是计算学科的一种典型的系统开发方法,它采用了系统科学的思想方法,从层次的角度,自顶向下的分析和设计系统。
内容,结构化分析( Sructured Analysis)
结构化设计( Sructured Design)
结构化程序设计( Sructured
Program Design)
软件开发过程
问题定义
可行性研究
需求分析与需求分析方法
结构化分析方法概述
软件需求规格说明书结构化分析方法使用的工具
A,数据流图( Data Flow Diagram) 从数据传递和加工的角度,以图形方式刻画数据流从输入到输出的移动变换过程
B,数据字典( Data Dictionary) 需对数据流图中的各个元素作完整的定义和说明,是数据流图的补充工具
C,加工逻辑描述工具 (常用:结构化自然语言、判定树和判定表)
9.1.3 结构化设计方法
软件设计的基本概念,是一个把软件需求转化为软件表示的过程,即把分析结果加工为在程序细节上接近于源程序的软件表示(软件描述)
软件设计阶段分为:
系统的总体设计或概要设计(确定软件系统结构)
系统的详细设计(进行各模块的具体设计)
概要设计
概要设计 又称为总体设计,它的任务是确定软件结构
结构化设计方法的基本思想,采用自顶向下的模块化设计方法,按照模块化原则和软件设计策略,将需求分析得到的数据流图,映射成由相对独立、单一功能的模块组成的软件结构概要设计
概要设计的图形工具 (层次图,HIPO
图、软件结构图)
软件设计原理
软件结构设计原则
面向数据流的设计方法 (变换流分析设计和事务流分析设计)
设计规格说明软件结构设计原则
① 提高模块独立性
② 模块规模应该适中
③ 模块的深度、宽度、扇出和扇入适当
④ 模块的作用域应该在控制域之内
⑤ 降低模块接口的复杂程度
⑥ 设计单入口和单出口模块详细设计
任务,为软件结构图中的每一个模块确定实现算法和局部数据结构,并用某种工具描述出来
结构化程序设计
详细设计工具 (程序流程图、盒图 [N-S
图 ],PAD图)
详细设计规格说明
9.1.4 软件测试一、软件测试的目的与任务目的,确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没有错。
任务,测试任务 (通过采用一定的测试策略,
找出软件中的错误)
调试任务或纠错任务 (如果测试到错误,则定位软件中的错误,加以纠正)
二、软件测试的准则三、软件测试技术与方法综述方法,静态测试法动态测试法技术,白盒测试用例设计黑盒测试用例设计
9.1.4 软件测试白盒测试用例设计
A,逻辑覆盖以程序的内部逻辑结构为基础的测试用例设计技术,它要求测试人员十分清楚程序的逻辑结构,考虑的是测试用例对程序内部逻辑覆盖的程度根据覆盖的目标,可分为,语句覆盖、判定覆盖、条件覆盖、判定 /条件覆盖、路径覆盖
B,基本路径测试黑盒测试用例设计分类:
等价类划分法边界值分析法错误推测法因果图四、软件测试的实施
单元测试
集成测试
确认测试
系统测试五、软件测试计划与测试分析报告测试 是软件生存周期中的一个独立的关键的阶段
9.1.4 软件测试
9.1.5 程序的调试程序调试可以分为:
静态调试 (主要通过人的思维来分析源程序代码和排错,是主要的调试手段)
动态调试 (是静态调试的辅助)
主要的调试方法有,强行排错法回溯法原因排除法
9.2 数据库设计基础
数据库概念
数据模型
数据库设计与管理
9.2.1 数据库概念
数据( Data)
数据处理( Data Processing)
数据库( Database,DB)
数据库管理系统( Database Management
System,DBMS)
数据库管理员( Database Administrator,DBA)
数据库系统( Database System,DBS)
数据库应用系统( Database Application
System,DBAS)
数据库系统的发展
人工管理阶段
文件系统阶段
数据库系统阶段
(在关于数据库的诸多新技术中,比较重要的三种是:
面向对象数据库系统、知识库系统,以及关系数据库系统的扩充 )
数据库系统的基本功能
数据定义功能
数据操纵功能
数据库运行控制功能
数据库的建立和维护功能数据库系统的基本特点
数据的结构化
数据的高共享性和低冗余性
数据的独立性
数据的统一管理与控制数据库系统的内部结构体系模式,是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。
模式的一个具体值称为模式的一个实例,同一个模式可以有多个实例。数据库管理系统采用 三级模式结构,
概念模式外模式(是概念模式的逻辑子集,也称子模式或用户模式)
内模式(也称存储模式)
并提供 二级映像功能
9.2.2 数据模型
数据模型( data model),是表示实体类型及实体之间联系的模型
数据模式的三个要素:
数据结构
数据操作
数据的完整性约束条件数据模型的三个级别:
概念数据模型
逻辑数据模型
物理数据模型
7.2.2 数据模型数据模型的分类
E-R 模型(实体联系模型)
是直接从现实世界中抽象出实体类型及实体间联系,然后用实体联系图( E-R图)
表示数据模型
层次模型 (若用图表示,它是一棵倒立的树)
网状模型 ( 若用图表示 是一个网络)
关系模型 (数据的逻辑结构是一张二维表)
9.2.3 数据库设计与管理数据库及其应用系统的 设计步骤:
用户需求分析
概念设计
逻辑设计
物理设计
数据库实施
数据库的维护数据库设计的需求分析
用户的信息要求
用户的处理要求
对数据的安全性、完整性的要求数据库的概念设计概念结构设计,只讲需求分析得到的用户需求抽象为信息结构即概念模型的过程概念结构 独立于数据库逻辑结构,也独立于支持数据库的 DBMS。
它是现实世界与机器世界的中介,它一方面能够充分反映现实世界,包括实体与实体之间的联系,同时又易于向关系、网状、层次等各种数据模式转换。
数据库的逻辑设计逻辑结构设计的步骤:
将概念结构向一般关系模型转化
将第一步得到的结构向特定的 DBMS
支持下的数据模型转换
依据应用的需求和具体的 DBMS特征进行调整与完善数据库的物理设计确定数据的存储安排存取路径的选择和调整确定系统配置数据库管理数据库的管理主要指:
数据库的实施和维护分三个步骤:
数据的载入和应用程序的调试数据库的试运行数据库的运行和维护数据库的维护在数据库运行阶段,对数据库经常性的维护工作主要是由 DBA完成的。包括:
数据库的存储和恢复数据库的安全性、完整性控制数据库性能的监督、分析和改进数据库的重组织与重构造
9.3 数据结构与算法
算法
数据结构的基本概念及术语
线性表
栈
队列
树与二叉树
查找与排序
9.3.1 算法
定义,是对特定问题求解步骤的一种描述。或者说,是为求解某问题而设计的步骤序列
特征,有穷性确定性有效性输入输出算法复杂度评价一个算法优劣的主要标准是:
算法的执行效率与存储需求算法的效率,指的是时间复杂度( Time
Complexity)
存储需求,指的是空间复杂度( Space
Complexity )
一般情况下,算法中的基本操作重复操作执行的次数是问题规模 n的某个函数 f(n),算法的时间复杂度记做 T(n)=O(f(n))
9.3.2 数据结构的基本概念及术语
数据与数据结构数据 是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合数据元素 是数据的基本元素,即数据集合中的个体数据项 具有独立意义的最小数据单位数据对象 具有相同特性的数据元素的集合,是数据的子集结构 被计算机加工的数据元素之间存在的关系数据结构 带有结构特性的数据元素的集合
数据的逻辑结构
集合
线性结构
树形结构
图状或网状结构
9.3.2 数据结构的基本概念及术语
数据的存储结构一、顺序存储结构主要特点:
结点中只有自身信息域,没有连接信息域,因此存储密度大,存储空间利用率高
可以通过计算直接确定数据结构中第 i个结点的存储地址 Li,计算公式,L0+( i-1) m。(其中 L0为第一个结点的存储地址,m为每个结点所占用的存储单元个数
插入、删除运算不便,会引起大量结点的移动
9.3.2 数据结构的基本概念及术语二、链式存储结构主要特点:
结点中除自身信息之外,还有表示连接信息的指针域,因此比顺序存储密度小,
存储空间利用率低
逻辑上相邻的结点物理上不必邻接,可用于线性表、树、图等多种逻辑结构的存储表示
插入、删除操作灵活方便,不必移动结点,只要改变结点中的指针值即可
数据的运算
检索,在数据结构里查找满足一定条件的结点
插入,往数据结构里增加新的结点
删除,把指定的结点从数据结构里去掉
更新,改变指定结点的一个或多个域的值
排序,保持线性结构的结点序列里结点数不变,把结点按某种指定的顺序重新排列
9.3.2 数据结构的基本概念及术语
9.3.3 线性表线性表 是最常用的一种数据结构。线性表的逻辑结构是 n个数据元素的有限序列
( a1,a2,…,an)
顺序表,指用顺序存储结构存储的线性表
链表,用链式存储结构存储的线性表
栈和队列 —— 是对线性表的插入、删除运算可以发生的位置加以限制的两种特殊的线性表顺序表和一维数组各种高级语言里的一维数组就是用顺序方式存储的线性表,因此常用 一维数组称呼顺序表若顺序表中结点个数为 n,则:
插入 一个结点平均需要移动之结点个数为 n/2,算法的时间复杂度是 O(n);
删除 一个结点平均需移动结点个数为
( n-1) /2,算法的时间复杂度是 O(n)
链 表线性链表(单链表),删除算法的时间复杂度为 O(n),其主要执行时间是搜索删除位置循环链表,指链表的最后一个结点的指针值指向第一个结点,整个链表形成一个环(如下图)
…
结点 1 结点 2 结点 n
9.3.4 栈栈,是一种特殊的线性表,是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶
( top),表头称为栈底( bottom)。
空栈,指表中无元素
栈中有元素 a1,a2,…,an,如 下页图 所示,称 a1为栈底元素。新元素进栈要置于 an之上,删除或退栈先对 an进行,即,后进先出,( LIFO) 的操作原则
栈的物理存储可以用顺序存储结构或链式存储结构
栈的运算还有取栈顶元素,检查栈是否为空,
清除等。
栈的插入和删除
A
B
A
C
B
A
B
A
F
E
B
A ATOP
TOP
TOP
TOP
TOP
TOP
an
…
a2
a1
进栈 出栈栈底栈结构
(3)(1) (2) (5)(4) (6)
9.3.5 队列队列,是限定所有的插入都在表的一端进行,所有的删除都在表的另一端进行的线性表。进行删除的一端叫 队列的头,进行插入的一端叫 队列的尾,如 下页图 所示。
在队列中,新元素总是加入到队尾,
每次删除的总是对头元素,即当前“最老的”元素,这就是,先进先出,( FIFO)
的操作原则队列的物理存储可以用:
顺序存储结构,也可用链式存储结构队列的示意(如下图)
出队列 a1 a2 a3 … an 入队列头 尾队列的插入和删除示例初态插入
A
插入
B
删除
A
插入
C
插入
D
删除
B
插入
E
F
R AF
R
R R
R
R R
F
F F F
F F
B
A
B B B
C C C C
D D D
溢出
7.3.6 树与二叉树
树形结构 是一类重要的非线性结构,
树和二叉树是最常见的树形结构
树( Tree),是一个或多个结点组成的有限集合 T,有一个特定的结点称为根( Root),其余的结点分为 m( m≥0 )
个不相交的集合 T1,T2,…,Tm,每个集合又是一棵树,称作这个根的子树
( Subtree)
树形结构的常用术语
结点的度( Degree),一个结点的子树的个数
树的度,树中各结点的度的最大值
树叶( Leaf),度为 0的结点
分支结点,度不为 0的结点
双亲( Parent)、子女( Child),结点的各子树的根称作该结点的子女;相应的该结点称作其子女的双亲
兄弟( Sibling),具有相同双亲的结点互为兄弟
结点的层数( Level)树的深度( Depth)
森林( Forest)
二 叉 树
二叉树( Binary Tree),是 n( n≥ 0)个结点的有限集合,这个集合或者为空集( n=0),或者由一个根结点及两棵不相交的、分别称作这个根的坐姿树和右子树的二叉树组成二叉树不是树的特殊情形,二者的 区别:
二叉树为有序树
性质,1、在二叉树的 i层上,最多有 2i-1个结点
( i≥ 1)
2,深度为 k的二叉树最多有 2k-1个结点
(k≥1)
完全二叉树
一棵深度为 k且具有 2k-1个结点的二叉树称为 满二叉树( Full Binary
Tree )
深度为 k,有 n个结点的二叉树,当且仅当其妹一个结点都与深度为 k的满二叉树中编号从 1到 n的结点一一对应时,称为 完全二叉树树的二叉树表示在树(森林)与二叉树间有一个自然的一一对应的关系,每一棵树都能唯一的转换到它所对应的二叉树把树和森林转化成对应的二叉树:
凡是兄弟就用线连起来,然后去掉双亲到子女的连线,只留下道第一个子女的连线不去掉二叉树的存储二叉树的存储通常采用,链接方式 。每个结点除存储结点自身的信息外再设置两个指针域 IIink和 rlink,分别指向结点的左子女和右子女,当结点的某个指针为空时,则相应的指针值为空( NIL)。
结点的形式为:
IIink info rlink
二叉树的遍历
遍历一个树形结构是指,按一定次序系统的访问该结构中的所有结点,使每个结点恰好被访问一次
前序遍历法( NLR次序)
访问根,按前序遍历左子树,按前序遍历右子树
后序遍历法( LRN次序)
按后序遍历左子树,按后序遍历右子树,访问根
中序遍历法( LNR次序)
按中序遍历左子树,访问根,按中序遍历右子树
9.3.7 查找
查找,是数据结构中的基本运算
衡量一个查找运算法的主要标志是:
查找过程中对关节码进行的平均比较次数,或称平均检索长度,以 n的函数的形式表示,n是数据结构中的结点个数顺序查找顺序查找,是线性表的最简单的查找方法方法,用待查关键码与线性表中各结点的关键码值逐个比较,若找出相等的关键码值则查找成功,若找遍所有结点都不相等,则查找失败优点,对线性表的结点逻辑次序和存储结构无要求缺点,平均检索长度大假设表中各结点被查找的概率相同,即 P=1/n,
则顺序查找成功的 平均查找长度为 (n+1)/2
二分法查找
二分法查找,是一种效率较高的线性表查找方法。
要进行二分法查找,线性表结点必须是按关键码值排号顺序的,且线性表以顺序方式存储
方法,首先用要查找的关键码值与线性表中间位置结点的关键码值相比较,这个中间结点把线性表分成两个子表,比较相等则查找完成,不等则根据比较结果确定下一步的查找应在哪个子表中进行,
如此下去,直到找到满足条件的结点
优点,平均检索长度小,为 ㏒ 2n。每经过一次关键码比较,则将查找范围缩小一半,因此经过㏒ 2n
次比较就可完成查找过程
缺点,排序线性表花费时间,顺序方式存储插入、
删除不便
9.3.8 排序排序,是数据处理中经常使用的一种运算分类:
直接插入排序
选择排序
冒泡排序
快速排序
A,直接插入排序 的 基本方法,每步将一个待排序记录按其关键码值的大小插入到前面已排序的文件中适当位置上,直到全部插入为止
B,选择排序 的 基本思想,每一趟在 n-
i+1(i=1,2,…,n-1)个记录中选取关键码最小的记录作为有序序列中的第 i个记录。它为最简单且为我们最熟悉的排序
C,冒泡排序 的 基本方法,将待排序的记录顺次两两比较,若为逆序,则进行交换
D,快速排序,又称分区交换排序,是对冒泡排序的一种改进。
快速排序 的基本方法,在待排序序列中任取一个记录,以它为基准用交换的发方法将所有记录分成两部分,关键码比它小的在一个部分,关键码值比它大的在另一个部分。再分别对两个部分实施上述过程,
一直重复到排序完成
下图为四种排序方法的比较:
排序方法 平均时间 最坏情况 辅助存储直接插入排序选择排序冒泡排序快速排序
O(n2)
O(n2)
O(n2)
O(n ㏒ 2n)
O(n2)
O(n2)
O(n2)
O(n2)
O(1)
O(1)
O(1)
O(㏒ 2n)
9.4 程序设计基础
程序设计语言发展
程序设计方法与风格
结构化程序设计
面向对象的程序设计程序设计指令,能被计算机直接识别与执行的指示计算机进行某种操作的命令,CPU每执行一条指令,就完成一个基本运算。
程序,指令的序列即让计算机解决某一问题而写出的一系列指令程序设计,编写程序的过程程序设计语言,用于描述计算机所执行的操作语言
9.4.1 程序设计语言发展
机器语言,采用计算机指令格式并以二进制编码表达各种操作的语言
汇编语言,一种符号语言,采用助记符来表达指令功能
高级语言,是一种面向问题的语言
第四代语言,是非过程化语言
9.4.2 程序设计方法与风格良好程序设计风格的侧重:
源程序文档如使用的符号名应具有一定的含义,
以便对程序功能的理解;对源程序适当的进行注解,
以便读者理解程序;在程序中利用空格、空行、缩进等技巧使程序层次清楚
对程序中的数据进行适当说明
程序中的语句结构应该简单直接,语句不复杂化
要对程序的所有输入数据检查其合法性,检查输入项的各种重要组合的合理性,输入格式要简单,
输入允许默认值,输入一批数据后最好使用结束标志,在交互式输入 /输出中使用屏幕提示信息格式
9.4.3 结构化程序设计结构化程序设计的原则
自顶向下
逐步求精
模块化
限制使用 GOTO语句结构化程序设计的基本结构与特点顺序结构,按照程序语句行的自然顺序,
一条语句一条语句的往后执行程序选择结构,又称分支结构,它根据设定的条件,判断应该选择哪一条分支执行相应的语句序列循环结构,又称重复结构,它根据给定的条件,判断是否需要重复执行某一相同的或相似的程序段
7.4.3 结构化程序设计结构化程序设计的优点
① 自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,
可以显著提高软件开发的成功率和生产率
② 先全局后局部、先整体后细节、先抽向后具体的逐步求精过程开发出的程序有清晰的层次结构,使程序容易阅读和理解
③ 使用单入口单出口控制结构而不使用 GOTO语句,使得程序的静态结构和它的动态执行情况一致
④ 控制结构有确定逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,使源程序清晰流畅,易读易懂而且容易测试
⑤ 程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大
⑥ 程序的逻辑结构清晰,有利于程序正确性证明
9.4.4 面向对象的程序设计面向对象方法的主要特点:
① 从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位
② 事物的静态特征用对象的属性表示,动态特征用对象的服务表示
③ 对象的属性与服务结合为一个独立的实体,对外屏蔽其内部细节,称作封装
④ 把具有相同属性和相同服务的对象归为一类,
类是这些对象的抽象描述,每个对象是它的类的一个实例面向对象方法的主要特点:
⑤ 通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类
⑥ 复杂的对象可以用简单的对象作为其构成部分,
称为聚合
⑦ 对象之间通过消息进行通信,以实现对象之间的动态联系
⑧ 通过关联表达对象之间的静态关系
9.4.4 面向对象的程序设计面向对象方法的概念面向对象:
面向对象 =对象 +类 +继承 +通信如果一个软件系统是使用这样四个概念设计和实现的,则认为这个软件系统是面向对象的。面向对象的程序的每一组成部分都是对象,计算是通过建立新的对象和对象之间的通信来执行的对 象对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。
静态特征,指可以用某种数据来描述的特征动态特征,指对象所表现的行为或对象所具有的功能定义,对象是系统中用来描述客观事物的一个实体,
它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组方法构成。
属性,用来描述对象静态特征的一个数据项方法,用来描述对象动态特征的一个操作序列消息和方法
一个系统由若干个对象组成,各个对象之间相互联系、相互作用。
计算机系统中,消息就是对象之间的纽带,
是用来通知、命令或请求对象执行某个处理或回答某些信息。
消息可以是 数据流,也可以是 控制流 。
一条消息可以发送给不同的对象,而消息的解释则完全由接收对象完成。不同的对象对相同形式的消息可以有不同的解释类和实例类和对象之间的关系 如同一个模具与用这个模具铸造出来的铸件之间的关系。
类给出了属于该类的全部对象的抽象定义,
而对象则是符合这种定义的一个实体。
一个对象又称为类的一个实例( Instance)
类也可称作对象的模板( Template)
继 承 性
定义,特殊类的对象拥有其一般类的全部属性与方法,称作特殊类对一般类的继承
继承关系是传递的
继承性对于软件重用有很大益处封 装 性封装具有两个涵义:
一、是把对象的全部属性和全部方法结合在一起,形成一个不可分割的独立单位
(即对象)
二、也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界,
只保留有限的对外接口使之与外部发生联系多 态 性对象的多态性:
指在一般类中定义的属性或方法被特殊类继承之后,可以具有不同的数据类型表现出不同的行为。这使得同一个属性或方法名在一般类及其各个特殊类中具有不同的语义
9.5 多媒体技术简介
多媒体技术的基本概念
多媒体计算机系统
多媒体计算机软件系统
多媒体信息的数字化和压缩技术
9.5.1 多媒体技术的基本概念定义:指信息表示媒体的多样化。
多媒体的类型 感觉媒体表示媒体显示媒体传输媒体存储媒体多媒体技术就是利用计算机把文本、声音、
视频、动画、图形和图像等多种媒体进行综合处理,使多种信息建立逻辑连接,集成为一个具有交互性的系统多媒体技术的特征
信息载体的多样性
交互性
集成性
实时性多媒体信息中的媒体元素的类型
文本( Text)
图形( Graphic)
图像( Image)
音频
动画
视频多媒体信息处理的关键技术
视频和音频数据压缩和解压缩技术关于压缩编码的国际标准有:
JPEG标准电视电话 /会议电视 P*64Kbit/s (CCITT
H.261)标准
MPEG-1标准
多媒体硬件系统的专用芯片
大容量的外部存储器
多媒体同步技术多媒体技术的应用领域
教育与培训
桌面出版
多媒体电子出版物
多媒体通信
多媒体声光艺术品的创作
9.5.2 多媒体计算机系统多媒体计算机系统的组成(如下图)
多媒体计算机系统软件系统硬件系统多媒体应用软件媒体处理系统工具软件多媒体数据处理软件多媒体操作系统多媒体驱动软件多媒体输入 /输出控制卡及接口多媒体计算机硬件多媒体外围设备多媒体计算机硬件系统
主机,常规的主板,CPU及 VGA适配卡、多功能卡等
多媒体适配卡,音频卡、视频卡、图形卡和压缩卡等
外部存储设备,软盘驱动器、硬盘驱动器和
CD-ROM驱动器
输入设备
输出设备
9.5.3多媒体计算机软件系统多媒体应用程序多媒体处理系统工具多媒体操作系统
(媒体控制接口)
音频 /视频核心处理音频 /视频设备驱动程序音频 /视频设备多媒体计算机软件的层次结构
(
如右图
)
第五层第四层第三层第二层第一层
9.5.4 多媒体信息的数字化和压缩技术音频信息
声音的特征
模拟音频和数字音频衡量一个数字声音波形的质量有:采样频率、采样精度、声道数三个要素
数字音频文件的存储格式
数字音频文件的存储量存储量 =采样频率 × 量化位数 /8× 声道数 × 时间图像信息图像信息的性能指标
分辨率
图像深度和显示深度
图像文件的大小图像文件的存储格式
① BMP格式 PCX格式
② GIF格式 TIF格式
③ JPG和 PIC格式 PCD格式
④ CDR格式 PSD格式
⑤ IFF格式 DIF格式视频信息
视频的彩色空间表示
RGB彩色空间
YUV和 YIQ彩色空间
模拟视频标准 ( NTSC制式 PAL制式
SECAM制式)
数字视频
视频序列的时间码
数字视频标准与文件格式数字视频标准与文件格式
MPEG标准
MPEG-1( 1992年正式发布)
MPEG-2( 1994年制定)
MPEG-4( 1999年正式发布)
AVI格式
PM格式
Quick Time格式数据压缩技术
无损压缩行程编码( RLE)
Huffman编码算术编码
LZW编码
有损压缩三种数据压缩国际标准,JPEG-静止图像压缩标准,MPEG-运动图像压缩编码标准,H.261-视频通信编码标准
软件工程基础
数据库设计基础
数据结构与算法
程序设计基础
多媒体技术简介
9.1 软件工程基础软件的规模大小、复杂程度决定了软件开发的难度,因此,必须采用科学的软件开发方法,采用抽象、分解等科学方法降低复杂度,以工程的方法管理和控制软件开发的各个阶段,以保证大型软件系统的开发具有 正确性、易维护性、可读性和可重用性
9.1.1 软件工程基本概念软件的发展大致分为四个阶段,( 如下图)
阶段第一阶段 第二阶段 第三阶段 第四阶段程序设计阶段程序系统阶段软件工程阶段
(结构化方法发)
软件工程阶段
(面向对象方法)
典型技术面向批处理有限的分布自定义软件多用户实时数据库软件产品分布式系统嵌入“智能”
低成本硬件消费者的影响强大的桌面系统面向对象技术专家系统人工神经网络网络计算机软件危机和软件工程
软件危机主要表现在,对软件开发成本和进度的估计常常很不准确,经费预算经常突破,
完成时间一再拖延;开发的软件不能满足用户要求,用户软件不满意的现象经常发生;
开发的软件可维护性差、可靠性差
软件工程,运用系统的、规范的和可定量的方法开发、运行和维护软件。它包含三个要素:
方法( Methodologies)
工具( Tools) 过程( Procedures)
软件工程过程和软件生命周期
软件工程过程
软件生命周期
软件生命周期模型
软件工程的目标和原则
软件开发工具与软件开发环境下图为软件生命周期各阶段的任务:
时期 阶段 任务 文档软件计划问题定义 理解用户要求,划清工作范围 计划说明书可行性研究可行性方案及代价需求分析 软件系统的目标及应完成的工作 需求规格说明书软件开发概要设计 系统的逻辑设计 软件概要设计说明书详细设计 系统模块设计 软件详细设计说明书软件编码 编写程序代码 程序、数据、详细注释软件测试 单元测试、综合测试 测试后的软件、测试大纲、测试方案与结果软件维护 软件维护 运行和维护 维护后的软件图为软件生命周期的 瀑布模型 和 快速原形法模型软件计划需求分析软件设计软件编码软件测试软件维护需求分析快速设计建立模型用户评价模型修改原型生产产品软件工程目标和原则目标,在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、
可重用性、可适应性、可移植性、可追踪性并满足用户需求的产品软件工程理论和技术性研究的内容:
软件开发技术和软件管理技术原则,抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性软件开发工具与开发环境软件开发工具,是为支持软件人员开发和维护活动而使用的软件。
作用,可以帮助开发人员完成一些繁琐的程序编制和调试问题,是软件开发人员将更多的精力和时间投放到最重要的软件需求和设计上,提高软件开发的速度和质量。
9.1.2 结构化分析方法
结构化方法( Sructured
Methodology),是计算学科的一种典型的系统开发方法,它采用了系统科学的思想方法,从层次的角度,自顶向下的分析和设计系统。
内容,结构化分析( Sructured Analysis)
结构化设计( Sructured Design)
结构化程序设计( Sructured
Program Design)
软件开发过程
问题定义
可行性研究
需求分析与需求分析方法
结构化分析方法概述
软件需求规格说明书结构化分析方法使用的工具
A,数据流图( Data Flow Diagram) 从数据传递和加工的角度,以图形方式刻画数据流从输入到输出的移动变换过程
B,数据字典( Data Dictionary) 需对数据流图中的各个元素作完整的定义和说明,是数据流图的补充工具
C,加工逻辑描述工具 (常用:结构化自然语言、判定树和判定表)
9.1.3 结构化设计方法
软件设计的基本概念,是一个把软件需求转化为软件表示的过程,即把分析结果加工为在程序细节上接近于源程序的软件表示(软件描述)
软件设计阶段分为:
系统的总体设计或概要设计(确定软件系统结构)
系统的详细设计(进行各模块的具体设计)
概要设计
概要设计 又称为总体设计,它的任务是确定软件结构
结构化设计方法的基本思想,采用自顶向下的模块化设计方法,按照模块化原则和软件设计策略,将需求分析得到的数据流图,映射成由相对独立、单一功能的模块组成的软件结构概要设计
概要设计的图形工具 (层次图,HIPO
图、软件结构图)
软件设计原理
软件结构设计原则
面向数据流的设计方法 (变换流分析设计和事务流分析设计)
设计规格说明软件结构设计原则
① 提高模块独立性
② 模块规模应该适中
③ 模块的深度、宽度、扇出和扇入适当
④ 模块的作用域应该在控制域之内
⑤ 降低模块接口的复杂程度
⑥ 设计单入口和单出口模块详细设计
任务,为软件结构图中的每一个模块确定实现算法和局部数据结构,并用某种工具描述出来
结构化程序设计
详细设计工具 (程序流程图、盒图 [N-S
图 ],PAD图)
详细设计规格说明
9.1.4 软件测试一、软件测试的目的与任务目的,确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没有错。
任务,测试任务 (通过采用一定的测试策略,
找出软件中的错误)
调试任务或纠错任务 (如果测试到错误,则定位软件中的错误,加以纠正)
二、软件测试的准则三、软件测试技术与方法综述方法,静态测试法动态测试法技术,白盒测试用例设计黑盒测试用例设计
9.1.4 软件测试白盒测试用例设计
A,逻辑覆盖以程序的内部逻辑结构为基础的测试用例设计技术,它要求测试人员十分清楚程序的逻辑结构,考虑的是测试用例对程序内部逻辑覆盖的程度根据覆盖的目标,可分为,语句覆盖、判定覆盖、条件覆盖、判定 /条件覆盖、路径覆盖
B,基本路径测试黑盒测试用例设计分类:
等价类划分法边界值分析法错误推测法因果图四、软件测试的实施
单元测试
集成测试
确认测试
系统测试五、软件测试计划与测试分析报告测试 是软件生存周期中的一个独立的关键的阶段
9.1.4 软件测试
9.1.5 程序的调试程序调试可以分为:
静态调试 (主要通过人的思维来分析源程序代码和排错,是主要的调试手段)
动态调试 (是静态调试的辅助)
主要的调试方法有,强行排错法回溯法原因排除法
9.2 数据库设计基础
数据库概念
数据模型
数据库设计与管理
9.2.1 数据库概念
数据( Data)
数据处理( Data Processing)
数据库( Database,DB)
数据库管理系统( Database Management
System,DBMS)
数据库管理员( Database Administrator,DBA)
数据库系统( Database System,DBS)
数据库应用系统( Database Application
System,DBAS)
数据库系统的发展
人工管理阶段
文件系统阶段
数据库系统阶段
(在关于数据库的诸多新技术中,比较重要的三种是:
面向对象数据库系统、知识库系统,以及关系数据库系统的扩充 )
数据库系统的基本功能
数据定义功能
数据操纵功能
数据库运行控制功能
数据库的建立和维护功能数据库系统的基本特点
数据的结构化
数据的高共享性和低冗余性
数据的独立性
数据的统一管理与控制数据库系统的内部结构体系模式,是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。
模式的一个具体值称为模式的一个实例,同一个模式可以有多个实例。数据库管理系统采用 三级模式结构,
概念模式外模式(是概念模式的逻辑子集,也称子模式或用户模式)
内模式(也称存储模式)
并提供 二级映像功能
9.2.2 数据模型
数据模型( data model),是表示实体类型及实体之间联系的模型
数据模式的三个要素:
数据结构
数据操作
数据的完整性约束条件数据模型的三个级别:
概念数据模型
逻辑数据模型
物理数据模型
7.2.2 数据模型数据模型的分类
E-R 模型(实体联系模型)
是直接从现实世界中抽象出实体类型及实体间联系,然后用实体联系图( E-R图)
表示数据模型
层次模型 (若用图表示,它是一棵倒立的树)
网状模型 ( 若用图表示 是一个网络)
关系模型 (数据的逻辑结构是一张二维表)
9.2.3 数据库设计与管理数据库及其应用系统的 设计步骤:
用户需求分析
概念设计
逻辑设计
物理设计
数据库实施
数据库的维护数据库设计的需求分析
用户的信息要求
用户的处理要求
对数据的安全性、完整性的要求数据库的概念设计概念结构设计,只讲需求分析得到的用户需求抽象为信息结构即概念模型的过程概念结构 独立于数据库逻辑结构,也独立于支持数据库的 DBMS。
它是现实世界与机器世界的中介,它一方面能够充分反映现实世界,包括实体与实体之间的联系,同时又易于向关系、网状、层次等各种数据模式转换。
数据库的逻辑设计逻辑结构设计的步骤:
将概念结构向一般关系模型转化
将第一步得到的结构向特定的 DBMS
支持下的数据模型转换
依据应用的需求和具体的 DBMS特征进行调整与完善数据库的物理设计确定数据的存储安排存取路径的选择和调整确定系统配置数据库管理数据库的管理主要指:
数据库的实施和维护分三个步骤:
数据的载入和应用程序的调试数据库的试运行数据库的运行和维护数据库的维护在数据库运行阶段,对数据库经常性的维护工作主要是由 DBA完成的。包括:
数据库的存储和恢复数据库的安全性、完整性控制数据库性能的监督、分析和改进数据库的重组织与重构造
9.3 数据结构与算法
算法
数据结构的基本概念及术语
线性表
栈
队列
树与二叉树
查找与排序
9.3.1 算法
定义,是对特定问题求解步骤的一种描述。或者说,是为求解某问题而设计的步骤序列
特征,有穷性确定性有效性输入输出算法复杂度评价一个算法优劣的主要标准是:
算法的执行效率与存储需求算法的效率,指的是时间复杂度( Time
Complexity)
存储需求,指的是空间复杂度( Space
Complexity )
一般情况下,算法中的基本操作重复操作执行的次数是问题规模 n的某个函数 f(n),算法的时间复杂度记做 T(n)=O(f(n))
9.3.2 数据结构的基本概念及术语
数据与数据结构数据 是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合数据元素 是数据的基本元素,即数据集合中的个体数据项 具有独立意义的最小数据单位数据对象 具有相同特性的数据元素的集合,是数据的子集结构 被计算机加工的数据元素之间存在的关系数据结构 带有结构特性的数据元素的集合
数据的逻辑结构
集合
线性结构
树形结构
图状或网状结构
9.3.2 数据结构的基本概念及术语
数据的存储结构一、顺序存储结构主要特点:
结点中只有自身信息域,没有连接信息域,因此存储密度大,存储空间利用率高
可以通过计算直接确定数据结构中第 i个结点的存储地址 Li,计算公式,L0+( i-1) m。(其中 L0为第一个结点的存储地址,m为每个结点所占用的存储单元个数
插入、删除运算不便,会引起大量结点的移动
9.3.2 数据结构的基本概念及术语二、链式存储结构主要特点:
结点中除自身信息之外,还有表示连接信息的指针域,因此比顺序存储密度小,
存储空间利用率低
逻辑上相邻的结点物理上不必邻接,可用于线性表、树、图等多种逻辑结构的存储表示
插入、删除操作灵活方便,不必移动结点,只要改变结点中的指针值即可
数据的运算
检索,在数据结构里查找满足一定条件的结点
插入,往数据结构里增加新的结点
删除,把指定的结点从数据结构里去掉
更新,改变指定结点的一个或多个域的值
排序,保持线性结构的结点序列里结点数不变,把结点按某种指定的顺序重新排列
9.3.2 数据结构的基本概念及术语
9.3.3 线性表线性表 是最常用的一种数据结构。线性表的逻辑结构是 n个数据元素的有限序列
( a1,a2,…,an)
顺序表,指用顺序存储结构存储的线性表
链表,用链式存储结构存储的线性表
栈和队列 —— 是对线性表的插入、删除运算可以发生的位置加以限制的两种特殊的线性表顺序表和一维数组各种高级语言里的一维数组就是用顺序方式存储的线性表,因此常用 一维数组称呼顺序表若顺序表中结点个数为 n,则:
插入 一个结点平均需要移动之结点个数为 n/2,算法的时间复杂度是 O(n);
删除 一个结点平均需移动结点个数为
( n-1) /2,算法的时间复杂度是 O(n)
链 表线性链表(单链表),删除算法的时间复杂度为 O(n),其主要执行时间是搜索删除位置循环链表,指链表的最后一个结点的指针值指向第一个结点,整个链表形成一个环(如下图)
…
结点 1 结点 2 结点 n
9.3.4 栈栈,是一种特殊的线性表,是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶
( top),表头称为栈底( bottom)。
空栈,指表中无元素
栈中有元素 a1,a2,…,an,如 下页图 所示,称 a1为栈底元素。新元素进栈要置于 an之上,删除或退栈先对 an进行,即,后进先出,( LIFO) 的操作原则
栈的物理存储可以用顺序存储结构或链式存储结构
栈的运算还有取栈顶元素,检查栈是否为空,
清除等。
栈的插入和删除
A
B
A
C
B
A
B
A
F
E
B
A ATOP
TOP
TOP
TOP
TOP
TOP
an
…
a2
a1
进栈 出栈栈底栈结构
(3)(1) (2) (5)(4) (6)
9.3.5 队列队列,是限定所有的插入都在表的一端进行,所有的删除都在表的另一端进行的线性表。进行删除的一端叫 队列的头,进行插入的一端叫 队列的尾,如 下页图 所示。
在队列中,新元素总是加入到队尾,
每次删除的总是对头元素,即当前“最老的”元素,这就是,先进先出,( FIFO)
的操作原则队列的物理存储可以用:
顺序存储结构,也可用链式存储结构队列的示意(如下图)
出队列 a1 a2 a3 … an 入队列头 尾队列的插入和删除示例初态插入
A
插入
B
删除
A
插入
C
插入
D
删除
B
插入
E
F
R AF
R
R R
R
R R
F
F F F
F F
B
A
B B B
C C C C
D D D
溢出
7.3.6 树与二叉树
树形结构 是一类重要的非线性结构,
树和二叉树是最常见的树形结构
树( Tree),是一个或多个结点组成的有限集合 T,有一个特定的结点称为根( Root),其余的结点分为 m( m≥0 )
个不相交的集合 T1,T2,…,Tm,每个集合又是一棵树,称作这个根的子树
( Subtree)
树形结构的常用术语
结点的度( Degree),一个结点的子树的个数
树的度,树中各结点的度的最大值
树叶( Leaf),度为 0的结点
分支结点,度不为 0的结点
双亲( Parent)、子女( Child),结点的各子树的根称作该结点的子女;相应的该结点称作其子女的双亲
兄弟( Sibling),具有相同双亲的结点互为兄弟
结点的层数( Level)树的深度( Depth)
森林( Forest)
二 叉 树
二叉树( Binary Tree),是 n( n≥ 0)个结点的有限集合,这个集合或者为空集( n=0),或者由一个根结点及两棵不相交的、分别称作这个根的坐姿树和右子树的二叉树组成二叉树不是树的特殊情形,二者的 区别:
二叉树为有序树
性质,1、在二叉树的 i层上,最多有 2i-1个结点
( i≥ 1)
2,深度为 k的二叉树最多有 2k-1个结点
(k≥1)
完全二叉树
一棵深度为 k且具有 2k-1个结点的二叉树称为 满二叉树( Full Binary
Tree )
深度为 k,有 n个结点的二叉树,当且仅当其妹一个结点都与深度为 k的满二叉树中编号从 1到 n的结点一一对应时,称为 完全二叉树树的二叉树表示在树(森林)与二叉树间有一个自然的一一对应的关系,每一棵树都能唯一的转换到它所对应的二叉树把树和森林转化成对应的二叉树:
凡是兄弟就用线连起来,然后去掉双亲到子女的连线,只留下道第一个子女的连线不去掉二叉树的存储二叉树的存储通常采用,链接方式 。每个结点除存储结点自身的信息外再设置两个指针域 IIink和 rlink,分别指向结点的左子女和右子女,当结点的某个指针为空时,则相应的指针值为空( NIL)。
结点的形式为:
IIink info rlink
二叉树的遍历
遍历一个树形结构是指,按一定次序系统的访问该结构中的所有结点,使每个结点恰好被访问一次
前序遍历法( NLR次序)
访问根,按前序遍历左子树,按前序遍历右子树
后序遍历法( LRN次序)
按后序遍历左子树,按后序遍历右子树,访问根
中序遍历法( LNR次序)
按中序遍历左子树,访问根,按中序遍历右子树
9.3.7 查找
查找,是数据结构中的基本运算
衡量一个查找运算法的主要标志是:
查找过程中对关节码进行的平均比较次数,或称平均检索长度,以 n的函数的形式表示,n是数据结构中的结点个数顺序查找顺序查找,是线性表的最简单的查找方法方法,用待查关键码与线性表中各结点的关键码值逐个比较,若找出相等的关键码值则查找成功,若找遍所有结点都不相等,则查找失败优点,对线性表的结点逻辑次序和存储结构无要求缺点,平均检索长度大假设表中各结点被查找的概率相同,即 P=1/n,
则顺序查找成功的 平均查找长度为 (n+1)/2
二分法查找
二分法查找,是一种效率较高的线性表查找方法。
要进行二分法查找,线性表结点必须是按关键码值排号顺序的,且线性表以顺序方式存储
方法,首先用要查找的关键码值与线性表中间位置结点的关键码值相比较,这个中间结点把线性表分成两个子表,比较相等则查找完成,不等则根据比较结果确定下一步的查找应在哪个子表中进行,
如此下去,直到找到满足条件的结点
优点,平均检索长度小,为 ㏒ 2n。每经过一次关键码比较,则将查找范围缩小一半,因此经过㏒ 2n
次比较就可完成查找过程
缺点,排序线性表花费时间,顺序方式存储插入、
删除不便
9.3.8 排序排序,是数据处理中经常使用的一种运算分类:
直接插入排序
选择排序
冒泡排序
快速排序
A,直接插入排序 的 基本方法,每步将一个待排序记录按其关键码值的大小插入到前面已排序的文件中适当位置上,直到全部插入为止
B,选择排序 的 基本思想,每一趟在 n-
i+1(i=1,2,…,n-1)个记录中选取关键码最小的记录作为有序序列中的第 i个记录。它为最简单且为我们最熟悉的排序
C,冒泡排序 的 基本方法,将待排序的记录顺次两两比较,若为逆序,则进行交换
D,快速排序,又称分区交换排序,是对冒泡排序的一种改进。
快速排序 的基本方法,在待排序序列中任取一个记录,以它为基准用交换的发方法将所有记录分成两部分,关键码比它小的在一个部分,关键码值比它大的在另一个部分。再分别对两个部分实施上述过程,
一直重复到排序完成
下图为四种排序方法的比较:
排序方法 平均时间 最坏情况 辅助存储直接插入排序选择排序冒泡排序快速排序
O(n2)
O(n2)
O(n2)
O(n ㏒ 2n)
O(n2)
O(n2)
O(n2)
O(n2)
O(1)
O(1)
O(1)
O(㏒ 2n)
9.4 程序设计基础
程序设计语言发展
程序设计方法与风格
结构化程序设计
面向对象的程序设计程序设计指令,能被计算机直接识别与执行的指示计算机进行某种操作的命令,CPU每执行一条指令,就完成一个基本运算。
程序,指令的序列即让计算机解决某一问题而写出的一系列指令程序设计,编写程序的过程程序设计语言,用于描述计算机所执行的操作语言
9.4.1 程序设计语言发展
机器语言,采用计算机指令格式并以二进制编码表达各种操作的语言
汇编语言,一种符号语言,采用助记符来表达指令功能
高级语言,是一种面向问题的语言
第四代语言,是非过程化语言
9.4.2 程序设计方法与风格良好程序设计风格的侧重:
源程序文档如使用的符号名应具有一定的含义,
以便对程序功能的理解;对源程序适当的进行注解,
以便读者理解程序;在程序中利用空格、空行、缩进等技巧使程序层次清楚
对程序中的数据进行适当说明
程序中的语句结构应该简单直接,语句不复杂化
要对程序的所有输入数据检查其合法性,检查输入项的各种重要组合的合理性,输入格式要简单,
输入允许默认值,输入一批数据后最好使用结束标志,在交互式输入 /输出中使用屏幕提示信息格式
9.4.3 结构化程序设计结构化程序设计的原则
自顶向下
逐步求精
模块化
限制使用 GOTO语句结构化程序设计的基本结构与特点顺序结构,按照程序语句行的自然顺序,
一条语句一条语句的往后执行程序选择结构,又称分支结构,它根据设定的条件,判断应该选择哪一条分支执行相应的语句序列循环结构,又称重复结构,它根据给定的条件,判断是否需要重复执行某一相同的或相似的程序段
7.4.3 结构化程序设计结构化程序设计的优点
① 自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,
可以显著提高软件开发的成功率和生产率
② 先全局后局部、先整体后细节、先抽向后具体的逐步求精过程开发出的程序有清晰的层次结构,使程序容易阅读和理解
③ 使用单入口单出口控制结构而不使用 GOTO语句,使得程序的静态结构和它的动态执行情况一致
④ 控制结构有确定逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,使源程序清晰流畅,易读易懂而且容易测试
⑤ 程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大
⑥ 程序的逻辑结构清晰,有利于程序正确性证明
9.4.4 面向对象的程序设计面向对象方法的主要特点:
① 从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位
② 事物的静态特征用对象的属性表示,动态特征用对象的服务表示
③ 对象的属性与服务结合为一个独立的实体,对外屏蔽其内部细节,称作封装
④ 把具有相同属性和相同服务的对象归为一类,
类是这些对象的抽象描述,每个对象是它的类的一个实例面向对象方法的主要特点:
⑤ 通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类
⑥ 复杂的对象可以用简单的对象作为其构成部分,
称为聚合
⑦ 对象之间通过消息进行通信,以实现对象之间的动态联系
⑧ 通过关联表达对象之间的静态关系
9.4.4 面向对象的程序设计面向对象方法的概念面向对象:
面向对象 =对象 +类 +继承 +通信如果一个软件系统是使用这样四个概念设计和实现的,则认为这个软件系统是面向对象的。面向对象的程序的每一组成部分都是对象,计算是通过建立新的对象和对象之间的通信来执行的对 象对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。
静态特征,指可以用某种数据来描述的特征动态特征,指对象所表现的行为或对象所具有的功能定义,对象是系统中用来描述客观事物的一个实体,
它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组方法构成。
属性,用来描述对象静态特征的一个数据项方法,用来描述对象动态特征的一个操作序列消息和方法
一个系统由若干个对象组成,各个对象之间相互联系、相互作用。
计算机系统中,消息就是对象之间的纽带,
是用来通知、命令或请求对象执行某个处理或回答某些信息。
消息可以是 数据流,也可以是 控制流 。
一条消息可以发送给不同的对象,而消息的解释则完全由接收对象完成。不同的对象对相同形式的消息可以有不同的解释类和实例类和对象之间的关系 如同一个模具与用这个模具铸造出来的铸件之间的关系。
类给出了属于该类的全部对象的抽象定义,
而对象则是符合这种定义的一个实体。
一个对象又称为类的一个实例( Instance)
类也可称作对象的模板( Template)
继 承 性
定义,特殊类的对象拥有其一般类的全部属性与方法,称作特殊类对一般类的继承
继承关系是传递的
继承性对于软件重用有很大益处封 装 性封装具有两个涵义:
一、是把对象的全部属性和全部方法结合在一起,形成一个不可分割的独立单位
(即对象)
二、也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界,
只保留有限的对外接口使之与外部发生联系多 态 性对象的多态性:
指在一般类中定义的属性或方法被特殊类继承之后,可以具有不同的数据类型表现出不同的行为。这使得同一个属性或方法名在一般类及其各个特殊类中具有不同的语义
9.5 多媒体技术简介
多媒体技术的基本概念
多媒体计算机系统
多媒体计算机软件系统
多媒体信息的数字化和压缩技术
9.5.1 多媒体技术的基本概念定义:指信息表示媒体的多样化。
多媒体的类型 感觉媒体表示媒体显示媒体传输媒体存储媒体多媒体技术就是利用计算机把文本、声音、
视频、动画、图形和图像等多种媒体进行综合处理,使多种信息建立逻辑连接,集成为一个具有交互性的系统多媒体技术的特征
信息载体的多样性
交互性
集成性
实时性多媒体信息中的媒体元素的类型
文本( Text)
图形( Graphic)
图像( Image)
音频
动画
视频多媒体信息处理的关键技术
视频和音频数据压缩和解压缩技术关于压缩编码的国际标准有:
JPEG标准电视电话 /会议电视 P*64Kbit/s (CCITT
H.261)标准
MPEG-1标准
多媒体硬件系统的专用芯片
大容量的外部存储器
多媒体同步技术多媒体技术的应用领域
教育与培训
桌面出版
多媒体电子出版物
多媒体通信
多媒体声光艺术品的创作
9.5.2 多媒体计算机系统多媒体计算机系统的组成(如下图)
多媒体计算机系统软件系统硬件系统多媒体应用软件媒体处理系统工具软件多媒体数据处理软件多媒体操作系统多媒体驱动软件多媒体输入 /输出控制卡及接口多媒体计算机硬件多媒体外围设备多媒体计算机硬件系统
主机,常规的主板,CPU及 VGA适配卡、多功能卡等
多媒体适配卡,音频卡、视频卡、图形卡和压缩卡等
外部存储设备,软盘驱动器、硬盘驱动器和
CD-ROM驱动器
输入设备
输出设备
9.5.3多媒体计算机软件系统多媒体应用程序多媒体处理系统工具多媒体操作系统
(媒体控制接口)
音频 /视频核心处理音频 /视频设备驱动程序音频 /视频设备多媒体计算机软件的层次结构
(
如右图
)
第五层第四层第三层第二层第一层
9.5.4 多媒体信息的数字化和压缩技术音频信息
声音的特征
模拟音频和数字音频衡量一个数字声音波形的质量有:采样频率、采样精度、声道数三个要素
数字音频文件的存储格式
数字音频文件的存储量存储量 =采样频率 × 量化位数 /8× 声道数 × 时间图像信息图像信息的性能指标
分辨率
图像深度和显示深度
图像文件的大小图像文件的存储格式
① BMP格式 PCX格式
② GIF格式 TIF格式
③ JPG和 PIC格式 PCD格式
④ CDR格式 PSD格式
⑤ IFF格式 DIF格式视频信息
视频的彩色空间表示
RGB彩色空间
YUV和 YIQ彩色空间
模拟视频标准 ( NTSC制式 PAL制式
SECAM制式)
数字视频
视频序列的时间码
数字视频标准与文件格式数字视频标准与文件格式
MPEG标准
MPEG-1( 1992年正式发布)
MPEG-2( 1994年制定)
MPEG-4( 1999年正式发布)
AVI格式
PM格式
Quick Time格式数据压缩技术
无损压缩行程编码( RLE)
Huffman编码算术编码
LZW编码
有损压缩三种数据压缩国际标准,JPEG-静止图像压缩标准,MPEG-运动图像压缩编码标准,H.261-视频通信编码标准