2021-2022-1学期 20212320 《网络空间安全专业导论》第四周学习总结
第八章
8.1抽象数据类型
抽象数据类型是属性明确地与特定现实分离的容器。应用层是特定问题中的数据的视图。
逻辑层是数据值和处理他们的操作的抽象视图。
实现层明确表示出了存放数据项的结构,并用程序设计语言对数据的操作进行编码。这涉及了数据结构,即一种抽象数据类型中的复合数据域的实现。
这些ADT是存储器数据项的容器,每种ADT都具有特定的行为,称为容器。
8.2栈
栈是一种抽象复合结构,只能从一端访问栈中的元素。可以在第一个位置插入元素,也可以删除第一个元素,这种类型的处理称为LIFO。插入操作叫作PUSH,删除操作叫作POP。我们把项目推进栈,栈没有长度属性,所以没有返回栈中项目的个数的操作。
8.3队列
队列也是种抽象结构,队列中的项目从一端入,从另一端出。这种称为FIFO.
8.4列表
列表有三个属性特征:项目是同构的,项目是线性的,列表是变长的。线性的意思是,每个项目除了第一个都有一个独特的组成部分在它之前,除了最后一个也都有一个独特的组成部分在它之后。
列表通常提供插入一个项目的操作(insert),删除delete,检索一个项目是否存在(Isthere),报告列表中的项目(GetLength)。
注意的是,列表不能误认为是数组,数组是内嵌结构,列表是抽象结构。列表也可以被形象化链式结构。链式结构以节点的概念为基础,一个节点由两部分构成:用户的数据和指向列表下一个节点的链接或指针。
8.5树
1 二叉树 是一种抽象结构,其中每个节点可以有两个后继节点,叫作子女。每个子女仍然是二叉树的节点,因此也可以有两个节点。树的头部是一个起始节点,叫做根,它不是任何节点的子女。如果一个节点没有子女,这个节点就叫做树叶。每个节点都只有一个父母节点。
2 二叉检索树 具有二叉树的形状属性,也就是说,二叉检索树的节点可以具有0,1,2个子女。二叉检索树还具有语义属性来刻画树中节点上的值,即任何节点的值都要大于它左子树中的所有的值,并且要小于它的右子树中的所有节点的值。
8.6图
图由一组节点和连接节点的线段构成,图中的节点叫作顶点,图中的线段叫作边(弧)
无向图:其中的边没有方向的图
有向图:其中的边是从一个顶点指向另一个顶点的图。
两个顶点有一条边相连,则把他们称为邻顶点,两个顶点通过一条有顺序的路径相连。
图算法 1深度优先搜索 2广度优先搜索 3单元最短路搜索
8.7子程序
许多子程序都是高级语言或语言附带库的一部分。
参数列表:程序中两部分之间的通信机制。形参:列在子程序后的括号中的标识符。实参:子程序调用中列在括号中的标识符
传递参数的方式基本有两种,即通过传递和通过引用传递。如果一个形参是值参,调用单元将把实参的一个副本传递给子程序。如果一个形参是引用参数,调用单元将把实参的地址传递给子程序。
要访问一个引用参数,子程序必须访问留言板上列出的地址的内容。要访问一个值参,子程序只需要访问留言板自身的内容即可。
第九章
9.1设计方法
对象 是在问题背景中具有意义的事物或实体;对象类:描述了一组的类似的对象
对象之间通过发送消息进行通信。类中包含的字符表示类的属性。方法是处理对象中的数据值的制定算法。
封装:就是把数据和动作集中在一起,使数据和动作集中在一起,使数据和动作的逻辑顺序与它们的细节分离。
9.1.3
责任算法 1 person 类 2 name 类
9.2翻译过程
用汇编语言编写的程序要输入汇编器,由它把汇编语言指令翻译成机器码,最终执行的是汇编器输出的机器码。使用高级语言,我们要采用其他软件工具协助翻译过程。
汇编器:把要用高级语言编写的程序翻译成机器码的程序。编译器本质是一种程序,因此,要编译一个程序,就必须要有这个编译器在特定机器上的机器码版本
解释器:是一种程序,用于翻译和执行语句序列,翻译器在翻译过语句后会立即执行这个语句。可以把解释器看作理解编写程序所使用的语言的模拟器或虚拟机。翻译器只用适合的机器生成等价的程序。
在java中,可移植性是最重要的特性,java被编译成一种标准的机器语言--字节码。而任何具有JVM的机器可以运行编译过的Java程序。
9.3.1命令式范型
1 面向过程的范型。面向过程编程是一种命令式模型,在这里语句被分组为子程序。
2 面向对象的范型。面向对象视角是对象交互的一种方式。
9.3.2声明式范型
是一个描述结果的模型。 1 函数式模型。 2逻辑编程
9.4高级程序设计语言的功能性
1 布尔表达式 是一个标识符序列,标识符之间由相容的运算符分隔,求得的值是True或false。一个布尔表达式可以是一个布尔变量;一个算术表达式加一个关系运算符,再加一个算术表达式;一个布尔表达式加一个布尔运算符,再加一个布尔表达式。
2 数据归类 强类型化:每个变量都有一个类型,只有这种类型的值才能存储到该变量中。 数据类型:一组值以及能够应用这种类型的值基本操作集合的说明。
数据类型 1整数:整数数据类型表示的是一个整数值的范围;2实数:实数的数据类型表示的是特定精度的数的范围;3字符 4布尔型 5字符串,字符串是一个字符序列,在某些语言中这个序列通常被看作一个数据值。用单引号圈起字符,用双引号圈起字符串。
保留字:一种语言中具有特殊意义的字,不能用它作为标识符。
控制结构 1嵌套逻辑 在任何控制语句中被执行或跳过的语句可以是简单的语句或块,对于这些语句没有任何限制。
2异步处理 不与计算机中的其他操作同时发生,与操作不同步。
9.5.1封装
1封装:实施信息屏蔽的语言特性
2对象:与问题背景相关的事物或实体(问题求解)
3类:对象的模式(实现阶段)
4对象类或类 属性和行为相似的一组对象的说明(问题求解)
5对象:类的一个实例(实现阶段)
9.5.3继承 继承是面向对象语言的一种属性,即一个类可以继承另一个类的数据。超类是被继承的类,派生类是继承的类。
9.5.4多态 程序设计语言处理这种明显的二义性的能力叫作多态。
学习中的问题:在这两章中都出现了很多的代码实例,比如第八章中参数传递,第九章嵌套逻辑等等。这些代码对于我们这些初学者而言较为陌生,并不能很好地理解它的具体含义,还有如何规范地写出这些符合语法的代码。
解决方法:按照书本上给出的实例,配合课后作业的一些实例,逐句理解每一句的功能是怎么样的。