2022年全国计算机二级公共基础知识知识点 .pdf

上传人:Che****ry 文档编号:30534629 上传时间:2022-08-06 格式:PDF 页数:31 大小:261.95KB
返回 下载 相关 举报
2022年全国计算机二级公共基础知识知识点 .pdf_第1页
第1页 / 共31页
2022年全国计算机二级公共基础知识知识点 .pdf_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《2022年全国计算机二级公共基础知识知识点 .pdf》由会员分享,可在线阅读,更多相关《2022年全国计算机二级公共基础知识知识点 .pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 公共基础知识第一章 数据结构与算法1.1 算法1.1.1 算法的基本概念1、算法的基本特征可行性、确定性、有穷性、拥有足够的情报所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。2、算法的基本要素(1)算法中对数据的运算和操作在一般的计算机系统中,基本的运算和操作:算术运算、逻辑运算、关系运算、数据传输(2)算法的控制结构描述算法的工具:传统流程图、N-S 结构化流程图、算法描述语言等一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成3、算法设计基本方法列举法、归纳法、递推(本质上也属于归纳法,递推关系式往往是归纳的结果)

2、、递归(基础也是归纳,分为直接递归和间接递归两种)、减半递推技术、回溯法( “试” )1.1.2 算法复杂度1、算法的时间复杂度(执行算法所需要的计算工作量)算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数算法的工作量 =f(n),n 是问题的规模?两个 n 阶矩阵相乘所需要的基本运算(即两个实数的乘法)次数为n3,即计算工作量为n3,也就是时间复杂度为n3对于一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关可以用两种方法来分析算法的工作量:平均性态、最坏情况复杂性2、算法的空间复杂度(执行这个算法所需要的内存空间)如果额外空间量相对于问题

3、规模来说是常数,则称该算法是原地工作的1.2 数据结构的基本概念数据结构主要有三个方面的问题:数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构对各种数据结构进行的运算提高数据处理的效率,主要包括两个方面:提高数据处理的速度尽量节省在数据处理过程中所占用的计算机存储空间1.2.1 什么是数据结构无序表,只能用顺序查找对分查找只适用于有序表(在词典中查单词的方法类似于对分查找)数据结构是指相互有关联的数据元素的集合(向量、矩阵、图书馆中的图书卡片目录)在数据处理领域中,通常把数据元素之间这种固有的关系简单地用前后件关系(

4、直接前驱与直接后继关系)来描述,前后件关系所表示的实际意义随具体对象的不同而不同1、数据的逻辑结构一个数据结构应包含以下两方面的信息:表示数据元素的信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 31 页 - - - - - - - - - 2 表示各数据元素之间的前后件关系(数据元素之间的前后件关系是指它们的逻辑关系,而与它们在计算机中的存储位置无关)一个数据结构可以表示成:B=(D,R)D 为数据元素的集合, R 为 D 中各数据元素之间的前后件关系(一般用二元组

5、来表示)?a与 b 是 D 中的两个数据,则二元组(a,b)表示 a是 b 的前件, b 是 a的后件2、数据的存储结构各数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,而且一般也不可能相同一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构1.2.2 数据结构的图形表示在数据结构中,没有前件的结点称为根结点,没有后件的结点称为终端结点(叶子结点)数据结构中除了根结点与终端结点外的其他结点一般称为内部结点在对数据结构的处理过程中,不仅数据结构中的结点(即数据元素)个数在动态地变化,而且,各数据元素之间的关系也有可能在动态地变化1.2.

6、3 线性结构与非线性结构根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构如果一个非空的数据结构满足两个条件:有且只有一个根结点每一个结点最多有一个前件,也最多有一个后件则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构线性结构和非线性结构都可以是空的数据结构1.3 线性表及其顺序存储结构1.3.1 线性表的基本概念线性表是由n(n0)个数据元素组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件非空线性表有如下一些结构特征:有且只有一个根结点

7、,它无前件有且只有一个终端结点,它无后件除根结点和终端结点外,其他所有节点有且只有一个前件,也有且只有一个后件。线性表中结点的个数, n 称为线性表的长度。当n=0 时,称为空表1.3.2 线性表的顺序存储结构线性表的顺序存储结构具有以下两个基本特点:线性表中所有元素所占的存储空间是连续的线性表中各数据元素在存储空间中是按逻辑顺序依次存放的假设线性表中的第一个数据元素的存储地址(指第一个字节的地址, 即首地址)为 ADR(a1) ,每一个数据元素占k 个字节,则线性表中第i 个元素 ai在计算机存储空间中的存储地址为ADR(ai)= ADR(a1)+(i-1)k 在顺序存储结构中,线性表中每一

8、个数据元素在计算机存储空间中的存储地址由该元素在线性表中的位置序号唯一确定1.3.3 顺序表的插入运算在一般情况下,要在第i(1in)个元素之前插入一个新元素时,首先要从最后一个(即第 n 个)元素开始,直到第i 个之间共 n-i+1 个元素依次向后移动一个位置,移动结束后,第名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 31 页 - - - - - - - - - 3 i 个位置就被空出,然后将新元素插入到第i 项。插入结束后,线性表的长度就增加了1 1.3.4 顺序

9、表的删除运算在一般情况下,要删除第i(1in)个元素时,则要从第 i+1 个元素开始,直到第n 个元素之间共 n-i 个元素依次向前移动一个位置。删除结束后,线性表的长度就减小了1 1.4 栈和队列1.4.1 栈及其基本运算1、什么是栈栈是限定在一端进行插入与删除的线性表(不需要移动表中其他数据元素)栈被称为“先进后出”表或“后进先出”表。栈有记忆作用(子弹夹、一端为封闭另一端为开口的容器)2、栈的顺序存储及其运算(1)入栈运算:在栈顶位置插入一个新元素(2)退栈元素:取出栈顶元素并赋给一个指定的变量(当栈顶指针为0 时,说明栈空,不可能进行退栈操作)(3)读栈顶元素:将栈顶元素赋给一个指定的

10、变量在这个运算中,栈顶指针不会改变当栈顶指针为 0 时,说明栈空,读不到栈顶元素1.4.2 队列及其基本运算1、什么是队列在操作系统中,用一个线性表来组织管理用户程序的排队执行,原则是:初始时线性表为空当有用户程序来到时,将该用户程序加入到线性表的末尾进行等待当计算机系统执行完当前的用户程序后,就从线性表的头部取出一个用户程序执行队列是指允许在一端进行插入、而在另一端进行删除的线性表尾指针 rear总是指向最后被插入的元素(队尾元素) ,排头指针 front 指向排头元素的前一个位置队列又称为“先进先出”或“后进后出”的线性表2、循环队列及其运算所谓循环队列,就是将队列存储空间的最后一个位置绕

11、到第一个位置,形成逻辑上的环状空间,供队列循环使用当循环队列满时有rear=front,而当循环队列空时也有rear=front 队列空和队列满的条件:队列空的条件为s=0 队列满的条件为s=1且 rear=front ?假设循环队列的初始状态为空,即s=0,且 rear=front=m (1)入队运算:在循环队列队尾加入一个新元素?队尾指针进一( rear=rear+1 ) ,当队尾指针 rear=m+1 时,则置 rear=1 (2)退队运算:在循环队列的排头位置退出一个元素并赋给指定的变量?排头指针进一( front=front+1) ,当排头指针 front=m+1 时,则置 fron

12、t=1 1.5 线性链表1.5.1 线性链表的基本概念在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,成为数据域;另一部分用来存放指针,成为指针域1、线性链表线性表中最后一个元素没有后件,因此,线性链表中最后一个结点的指针域为空(用NULL或 0 表示)在线性表的链式存储结构中,各数据结点的存储序号不是连续的,并且各结点在存储空间中名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 31 页 - - - - - - - - - 4 的位置关系与逻辑关系也

13、不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针HEAD 称为头指针,当HEAD=NULL(或 0)时称为空表2、带链的栈带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈计算机中的所有可利用空间都可以以结点为单位连接在可利用栈中3、带链的队列1.5.2 线性链表的基本运算1、在线性链表中查找指定元素?在非空线性链表中寻找包含指定元素值x 的前一个结点 p 的基本方法:从头指针指向的结点开始往后沿指针进行扫描,直到后面已没有结点或下一个结点的数据域为x 为止当线性链表中存在包含元素x 的结点时,则找到的p 为

14、第一次遇到的包含元素x 的前一个节点序号当线性链表中不存在包含元素x 的结点时,则找到的p 为线性链表中的最后一个结点号2、线性链表的插入可利用栈是公共的,多个线性链表可以共享它线性链表在插入过程中不发生数据元素移动的现象,只需改变有关结点的指针即可3、线性链表的删除在线性链表中删除一个元素后,不需要移动表的数据元素,只需改变被删除元素所在结点的前一个结点的指针域即可1.5.3 循环链表及其基本运算循环链表的特点:在循环链表中增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点循环链表中最后一个结点的指针域不是空,而是指向表头结

15、点。即在循环链表中,所有结点的指针构成了一个环状链在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点,而线性单链表做不到这一点由于在循环链表中设置了一个表头结点,因此,在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一1.6 树与二叉树1.6.1 树的基本概念在树的结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称为树的根在树结构中,每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点在树结构中,一个结点所拥有的后件个数称为该结点的度。叶子结点的度为0。在树中,所有结点中的最

16、大的度称为树的度在树结构中,一般按如下原则分层:根结点在第一层同一层上所有结点的所有子结点都在下一层树的最大层次称为树的度在树中,以某结点的一个子结点为根构成的树称为该结点的一颗子树在树中,叶子结点没有子树用树来表示算术表达式的原则如下:表达式中的每一个运算符在树中对应一个结点,称为运算符结点名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 31 页 - - - - - - - - - 5 运算符的每一个运算对象在树中为该运算符结点的子树(在树中的顺序为从左到右)运算对象中

17、的单变量均为叶子结点1.6.2 二叉树及其基本性质1、什么是二叉树二叉树具有以下两个特点:非空二叉树只有一个根结点每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树在二叉树中,每一个结点的度最大为2,即所有子树(左子树或右子树)也均为二叉树当一个结点既没有左子树也没有右子树时,该结点即是叶子结点2、二叉树的基本性质性质 1 在二叉树的第 k 层上,最多有 2k-1(k1)个结点性质 2 深度为 m 的二叉树最多有 2m-1 个结点(深度为 m 的二叉树是指二叉树共有m 层)性质 3 在任意一棵二叉树中,度为0 的结点(即叶子结点)总是比度为2 的结点多一个性质 4 具有 n 个结点的二

18、叉树,其深度至少为【log2n】+1,其中【 log2n】表示取 log2n 的整数部分3、满二叉树与完全二叉树(1)满二叉树除最后一层外,每一层上的所有结点都有两个子结点在满二叉树中,每一层上的结点数都达到最大值(2)完全二叉树除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点对于完全二叉树来说,叶子结点只可能在层次最大的两层上出现;对于任何一个结点,若其右分支下的子孙结点的最大层次为p,则其左分支下的子孙结点的最大层次或为p,或为 p+1 满二叉树也是完全二叉树,而完全二叉树一般不是满二叉树完全二叉树还具有以下两个性质:性质 5 具有 n 个结点的完全二叉树的深度

19、为【log2n】+1 性质 6 设完全二叉树共有n 个结点。如果从根结点开始,按层序(每一层从左到右)用自然数 1,2,n 给结点进行编号,则对于编号为k(k=1,2,n)的结点有以下结论:若 k=1, 则该结点为根结点, 它没有父结点; 若 k1, 则该结点的父结点编号为INT(k/2)若 2kn,则编号为 k 的结点的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)若 2k+1n,则编号为 k 的结点的右子结点编号为2k+1;否则该结点无右子结点1.6.3 二叉树的存储结构在计算机中,二叉树通常采用链式存储结构由于二叉树的存储结构中每一个存储结点有两个指针域,二叉树的链式存储

20、结构也称为二叉链表对于满二叉树与完全二叉树来说,可以按层序进行顺序存储,但顺序存储结构对于一般的二叉树不适用1.6.4 二叉树的遍历在遍历二叉树的过程中,一般先遍历左子树,然后再遍历右子树在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍历1、前序遍历若二叉树为空,则结束返回否则: (1)访问根结点名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 31 页 - - - - - - - - - 6 (2)前序遍历左子树(3)前序遍历

21、右子树在遍历左右子树时仍然采用前序遍历的方法2、中序遍历若二叉树为空,则结束返回否则: (1)中序遍历左子树(2)访问根结点(3)中序遍历右子树在遍历左右子树时仍然采用中序遍历的方法3、后序遍历若二叉树为空,则结束返回否则: (1)后序遍历左子树(2)后序遍历右子树(3)访问根结点在遍历左右子树时仍然采用后序遍历的方法1.7 查找技术1.7.1 顺序查找顺序查找一般是指在线性表中查找指定的元素在平均情况下,利用顺序查找法在线性表中查找一个元素,大约要与线性表中一半的元素进行比较只能采用顺序查找:如果线性表为无序表(即表中元素的排列是无序的),则不管是顺序存储结构还是链式存储结构,都只能用顺序查

22、找即使是有序线性表,如果采用链式存储结构,也只能用顺序查找1.7.2 二分法查找二分法查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)对于长度为 n的有序线性表, 在最坏情况下, 二分查找只需要比较log2n 次,而顺序查找需要比较 n 次1.8 排序技术1.8.1 交换类排序法交换类排序法是指借助数据元素之间的互相交换进行排序的一种方法1、冒泡排序法冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序对线性表的每一次来回扫描后,都将其中的最大者沉到了表的底部,最小者像气泡一样冒到表的前头。冒泡

23、排序又称下沉排序假设线性表的长度为n,则在最坏的情况下,冒泡排序需要经过n/2 遍的从前往后的扫描和n/2 遍的从后往前的扫描,需要的比较次数为n(n-1)/2 2、快速排序法冒泡排序法中,在互换两个相邻元素时只能消除一个逆序快速排序法可以实现通过一次交换而消除多个逆序快速排序法的关键是对线性表进行分割,以及对各分割出的子表再进行分割1.8.2 插入类排序法1、简单插入排序法所谓插入排序,是指将无序序列中的各元素依次插入到已经有序的线性表中名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -

24、第 6 页,共 31 页 - - - - - - - - - 7 一般来说,假设线性表中前j-1 个元素已经有序,现在要将线性表中第j 个元素插入到前面的有序子表中在简单插入排序法中,每一次比较后最多移掉一个逆序,因此,这种排序方法的效率与冒泡排序法相同。在最坏情况下,简单插入排序需要n(n-1)/2 次比较2、希尔排序法希尔排序法的基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序子序列的分割方法:将相隔某个增量h 的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当 h 减到 1 时,进行一次插入排序, 排序就完成(增量序列一般取h1=n/2k(k=1,2, 【log2n

25、】 ) ,其中 n 为待排序序列的长度)在希尔排序过程中,在子表中每进行一次比较就有可能移去整个线性表中的多个逆序在最坏情况下,希尔排序所需要的比较次数为O(n1.5)1.8.3 选择类排序法1、简单选择排序法选择排序法的基本思想: 扫描整个线性表, 从中选出最小的元素, 将它交换到表的最前面 (这是它应有的位置);然后对剩下的子表采用同样的方法对于长度为 n 的序列,选择排序需要扫描n-1 遍,每一遍扫描均从剩下的子表中选出最小的元素,然后将该最小的元素与子表中的第一个元素进行比较简单选择排序法在最坏情况下需要比较n(n-1)/2 次2、堆排序法堆顶元素(即第一个元素)必为最大项在用完全二叉

26、树表示堆时,树中所有非叶子结点值均不小于其左、右子树的根结点值在调整建堆的过程中,总是将根结点值与左、右子树的根结点值进行比较,若不满足堆的条件,则将左、右子树根结点值中的大者与根结点值进行交换。这个调整过程一直做到所有子树均为堆为止在最坏的情况下,堆排序需要比较的次数为O(nlog2n)第二章 程序设计基础2.1 程序设计方法与风格就程序设计方法和技术的发展而言,主要经过了结构化程序设计和面向对象的程序设计阶段程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路要形成良好的程序设计风格,主要应注重和考虑下述一些因素:1、源程序文档化(1)符号名的命名(2)程序注释注释一般分为序言性注释和

27、功能性注释(3)视觉组织2、数据说明的方法(1)数据说明的次序规范化(2)说明语句中变量安排有序化当一个说明语句说明多个变量时,变量按照字母顺序排序为好(3)使用注释来说明复杂数据的结构3、语句的结构(1)在一行内只写一条语句(2)程序编写应优先考虑清晰性(3)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二(4)首先要保证程序正确,然后才要求提高速度名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 31 页 - - - - - - - - - 8 (5)避免使用临时

28、变量而使程序的可读性下降(6)避免不必要的转移(7)尽可能使用库函数(8)避免采用复杂的条件语句(9)尽量减少使用“否定”条件的条件语句(10)数据结构要有利于程序的简化(11)要模块化,使模块功能尽可能单一化(12)利用信息隐蔽,确保每一个模块的独立性(13)从数据出发去构造程序(14)不要修补不好的程序,要重新编写4、输入和输出(1)对所有的输入数据都要检验数据的合法性(2)检查输入项的各种重要组合的合理性(3)输入格式要简单,以使得输入的步骤和操作尽可能简单(4)输入数据时,应允许使用自由格式(5)应允许缺省值(6)输入一批数据时,最好使用输入结束标志(7)在以交互式输入 /输出方式进行

29、输入时,要在屏幕上使用提示符明确提示输入的要求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息(8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输出加注释,并设计输出报表格式2.2 结构化程序设计2.2.1 结构化程序设计的原则1、自顶向下2、逐步求精3、模块化4、限制使用 goto 语句(1)滥用 GOTO 语句确实有害,应尽量避免(2)完全避免使用GOTO 语句也并非是个明智的方法,有些地方使用GOTO 语句,会使程序流程更清楚、效率更高(3)争论的焦点不应该放在是否取消GOTO 语句,而应该放在用什么样的程序结构上2.2.2 结构化程序的基本

30、结构与特点程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法1、顺序结构最基本、最常用的结构2、选择结构又称为分支结构,包括简单选择和多分支选择结构3、重复结构又称为循环结构对先判断后执行循环体的称为当型循环结构对先执行循环体后判断的称为直到型循环结构2.2.3 结构化程序设计原则和方法的应用在结构化程序设计的具体实施中,要注意把握如下要素:(1) 使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑(2) 选用的控制结构值准许有一个入口和一个出口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -

31、- - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 31 页 - - - - - - - - - 9 (3) 程序语句组成容易识别的块,每块只有一个入口和一个出口(4) 复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现(5) 语言中所没有的控制结构,应该采用前后一致的方法来模拟(6) 严格控制 GOTO 语句的使用用一个非结构化的程序设计语言去实现一个结构化的构造若不使用 GOTO 语句会使功能模糊在某种可以改善而不是损害程序可读性的情况下2.3 面向对象的程序设计2.3.1 关于面向对象方法以 60 年代末挪威奥斯陆大学和挪威计算中心共同研制的SIMULA

32、 语言为标志,面向对象方法的基本要点首次在SIMULA 语言中得到了表达和实现面向对象方法的本质:系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系面向对象方法的主要优点:1、与人类习惯的思维方法一致传统的程序设计方法是面向过程的,其核心方法是以算法为核心,把数据和过程作为相互独立的部分面向对象方法和技术以对象为核心面向对象的设计方法的基本原理是使用现实世界的概念抽象地思考问题从而自然地解决问题2、稳定性好面向对象的软件系统,当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要做一些局部性的调整用传统方法所建立起来的软件系统,当功能需求发生变化时将引起软件结构的整

33、体修改3、可重用性好传统的软件重用技术是利用标准函数库面向对象的软件开发技术,有两种方法可以重复使用一个对象类:创建该类的实例,从而直接使用它从它派生出一个满足当前需要的新类4、易于开发大型软件产品5、可维护性好(1)用面向对象的方法开发的软件稳定性比较好(2)用面向对象的方法开发的软件比较容易修改在面向对象方法中,核心是类(对象) ,它具有理想的模块机制,独立性好,修改一个类通常很少会牵扯到其他类面向对象技术特有的继承机制面向对象技术的多态性机制(3)用面向对象的方法开发的软件比较容易理解面向对象的技术符合人们习惯的思维方式,用这种方法所建立的软件系统的结构与问题空间的结构基本一致(4)易于

34、测试和调试对用面向对象的方法开发的软件,维护后的测试与调试工作主要围绕新派生出来的类进行2.3.2 面向对象方法的基本概念1、对象?例如,一个人、一家公司、一个窗口、贷款和借款等,都可以作为一个对象面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作过程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 31 页 - - - - - - - - - 10 ?例如,一辆汽车是一个对象,它

35、包含了汽车的属性(如颜色、型号、载重量等)及其操作(如启动、刹车等)。一个窗口是一个对象,它包含了窗口的属性(如大小、颜色、位置等)及其操作(如打开、关闭等)属性即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变?如对象 Person的属性有姓名、年龄、体重等不同对象的同一属性可以具有相同或不同的属性值?如张三的年龄为 19,李四的年龄为 20。张三、李四是两个不同的对象,他们共同的属性“年龄”的值不同属性值应该指的是纯粹的数据值,而不能指对象对象的基本特点:标识唯一性。指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分分类性。指可以将具有相同属性和操作的

36、对象抽象成类多态性。指同一个操作可以是不同对象的行为封装性。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变模块独立性好。对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作2、类和实例类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例当使用“对象”这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用“实例”这个术语时,必然是指一个具体的对象?例如: Integer 是一个整数类,它描述了所有整数的性质。因此任何整数都是整

37、数类的对象,而一个具体的整数“ 123”是类 Integer的一个实例?例如,三个圆心位置、半径大小和颜色均不相同的圆,是三个不同的对象。但是,它们都有相同的属性(圆心坐标、半径、颜色)和相同的操作(显示自己、放大缩小半径、在屏幕上移动位置,等等) 。因此,它们是同一类事物,可以用“Circle 类”来定义3、消息消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流所传送的消息实质上是接受对象所具有的操作/方法名称,有时还包括相应的参数消息中只包含传递者的要求,它告诉接收者需要做哪些处理,接收者独立决定采用什么方式完成所需的处理,发送者对

38、接收者不起任何控制作用一个对象能够接受不同形式、不同内容的多个消息;相同形式的消息可以送往不同的对象,不同的对象对于形式相同的消息可以有不同的解释,能够做出不同的反映一个对象可以同时往多个对象传递信息,两个对象也可以同时向某个对象传递信息通常,一个消息由下述三部分组成:接收消息的对象的名称消息标识符(也称为消息名)零个或多个参数4、继承一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继承其父类的描述(数据和操作)或特性,子类自动地共享基类中定义的数据和方法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -

39、- - - - 名师精心整理 - - - - - - - 第 10 页,共 31 页 - - - - - - - - - 11 继承具有传递性,一个类实际上继承了它上层的全部基类的特性,属于某类的对象除了具有该类所定义的特性外,还具有该类上层全部基类定义的特性继承分为单继承与多重继承使用多重继承时要注意避免二义性5、多态性多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象?例如,在两个类 Male(男性)和 Female (女性)都有一项属性为Friend。一个人的朋友必须属于类 Male 或 Female,这是一个多态性的情况。因为,Friend 指

40、向两个类之一的实例。如果 Tom 的朋友或者是 Mary 或者是 John,类 Male 就不知道 Friend 应该与哪个类关联。这里参照量Friend 必须是多态的,多态意味着可以关联不同的实例,而实例可以属于不同的类第三章 软件工程基础3.1 软件工程的基本概念3.1.1 软件定义与软件特点计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合软件有两部分组成:机器可执行的程序和数据机器不可执行的,与软件开发、运行、维护、使用等有关的文档软件的特点:软件是一种逻辑实体,而不是物理实体,具有抽象性软件的生产与硬件不同,它没有明显的制作过程软件在运行、使用期间

41、不存在磨损、老化问题软件的开发、运行对计算机系统具有依赖性软件复杂性高,成本昂贵。软件是人类有史以来生产的复杂度最高的工业产品软件开发涉及诸多的社会因素软件按功能可以分为:应用软件事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件系统软件操作系统,编译程序,汇编程序,网络软件,数据库管理系统支撑软件需求分析工具软件,设计工具软件,编码工具软件,测试工具软件,维护工具软件,计划进度管理工具软件,过程控制工具软件,质量管理及配置管理工具软件3.1.2 软件危机与软件工程软件危机主要表现在:软件需求的增长得不到满足软件开发成本和进度无法控制软件质量难以保证软件不可维护或维护程度

42、非常低软件的成本不断提高软件开发生产率的提高赶不上硬件的发展和应用需求的增长之所以存在这些严重的问题:与软件本身的特点有关与软件开发和维护方法不正确有关,这是主要原因1968 年在北大西洋公约组织会议上,软件工程作为一个概念首次被提出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 31 页 - - - - - - - - - 12 在软件开发过程中需要应用工程化原则软件工程包括 3 个要素:方法、工具、过程从根本上来说,其目的是研究软件的开发技术,软件工程的名称意味着用

43、工业化的开发方法来替代小作坊式的开发模式软件工程的核心思想是把软件产品看作是一个工程产品来处理工程项目的三个基本要素:进度、经费、质量3.1.3 软件工程过程与软件生命周期1、软件工程过程软件工程过程是把输入转化为输出的一组彼此相关的资源和活动其一,软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。软件工程过程通常包含4 种基本活动:P软件规格说明D软件开发C软件确认A软件演进其二,从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)2、软件生命周期将软件

44、生命周期分为:软件定义阶段可行性研究初步项目计划、需求分析软件开发阶段概要设计、详细设计、实现、测试软件运行维护阶段使用、维护、退役软件生命周期的主要活动阶段:可行性研究与计划制定需求分析软件设计在系统比较复杂的情况下,设计阶段可分解成概要设计阶段和详细设计阶段软件实现把软件设计转换成计算机可以接受的程序代码软件测试运行和维护3.1.4 软件工程的目标与原则1、软件工程的目标软件工程的目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品软件工程需要达到的基本目标:付出较低的开发成本;达到要求的软件功

45、能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用软件工程的理论和技术性研究的内容主要包括:(1)软件开发技术:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学(2)软件工程管理:软件管理学、软件工程经济学、软件心理学等内容2、软件工程的原则抽象:抽取事物最基本的特征和行为,忽略非本质细节信息隐蔽:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单模块化:模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义局部化:要求在一个物理模块内集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,模块内

46、部有较强的内聚性名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 31 页 - - - - - - - - - 13 确定性:软件开发过程中所有概念的表达应是确定的、无歧义且规范的一致性完备性:软件系统不丢失任何重要成分,完全实现系统所需的功能可验证性3.1.5 软件开发工具与软件开发环境1、软件开发工具2、软件开发环境软件开发环境或称软件工程环境是全面支持软件开发全过程的软件工具的集合计算机辅助软件工程( CASE)是当前软件开发环境中富有特色的研究工作和发展方向3.2

47、 结构化分析方法软件开发方法包括分析方法、设计方法和程序设计方法结构化方法包括已经形成了配套的结构化分析方法、结构化设计方法和结构化编程方法,其核心和基础是结构化程序设计理论3.2.1 需求分析与需求分析方法1、需求分析(1)需求分析的定义需求分析定义:用户解决问题或达到目标所需的条件或权能系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能一种反映 1 或 2 所描述的条件或权能的文档说明需求分析的内容包括:提炼、分析和仔细审查已收集到的需求;确保所有利益相关者都明白其含义并找出其中的错误、遗漏或其他不足的地方;从用户最初的非形式需求到满足用户对软件产品的要求的映射;对

48、用户意图不断进行提示和判断(2)需求分析阶段的工作需求获取需求获取涉及的关键问题有:对问题空间的理解;人与人之间的通信;不断变化的需求需求分析编写需求规格说明书需求评审2、需求分析方法常见的需求分析方法有:结构化分析方法面向数据流的结构化分析方法(SA) ,面向数据结构的Jackson方法(JSD) ,面向数据结构的结构化数据系统开发方法(DSSD)面向对象的分析方法( OOA)从需求分析建立的模型的特性来分,需求分析方法又分为静态分析方法和动态分析方法3.2.2 结构化分析方法1、关于结构化分析方法结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字

49、典为主要工具,建立系统的逻辑模型结构化分析的步骤:通过对用户的调查,以软件的需要为线索,获得当前系统的具体模型去掉具体模型中非本质因素,抽象出当前系统的逻辑模型根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型完善目标系统并补充细节,写出目标系统的软件需求规格说明评审直到确认完全符合用户对软件的需求2、结构化分析的常用工具名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 31 页 - - - - - - - - - 14 (1)数据流图( DFD)建立数

50、据流图的步骤:自外向里先画系统的输入输出,然后画系统的内部自顶向下顺序完成顶层、中间层、底层数据流图逐层分解顶层数据流图应该包含所有相关外部实体,以及外部实体与软件中间的数据流,其作用主要是描述软件的作用范围,对总体功能、输入、输出进行抽象描述,并反映软件和系统、环境的关系数据流图的构造规则和注意事项:对加工处理建立唯一、层次性的编号,且每个加工处理通常要求既有输入又有输出数据存储之间不应该有数据流数据流图的一致性:数据存储(文件)应被数据流图中的处理读和写,而不是仅读不写或仅写不读父图、子图关系与平衡规则:相邻两层DFD 之间具有父、子关系,子图代表了父图中某个加工的详细描述,父图表示了子图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁