教材内容总结
第九章学习了面向对象设计的重点是确定问题中的对象,并根据对象的属性和行为把它们抽象分组成类。下面是面向对象分解的四个阶段。
集体讨论:在这个阶段中,为确定问题中的类进行第一轮讨论。
过滤:在这个阶段中,将检查提出的类。
场量:在这个阶段中,将确定每个类的责任。
责任算法: 在这个阶段中,将为每个责任编写算法。
汇编器可以把汇编语言程序翻译成机器码。编译器可以把用高级语言编写的程序翻译成汇编语言(再被翻译成机器码)或机器码。解释器则不仅翻译程序中的指令,还会立即执行它们,不会输出机器语言代码。存在多种高级程序设计语言的模型,被分类为命令式(面向过程和面向对象)或者声明式(功能或逻辑)。命令式模型描述了被执行的处理过程。声明式模型描述了被执行的是什么,而不是怎样被完成。面向过程模型基于要完成的任务体系结构的概念;面向对象的模型基于交互对象的概念。丽数式模型基于函数的数学概念,而逻辑模型则是基于数学逻辑,布尔表达式是关于程序状态的断言。程序用布尔表达式来判断执行哪部分代码(条件语句)或是否重复执行某段代码(循环语句)。程序中的每个变量都有自己的数据类型。所谓强类型化指的是变量是给定类型且只有类型相符的值才能被存人变量。把一个值在人变量叫作给这个变量赋值(赋值语句)。
面向对象的程序用以下结构刻画:
封装:实施信息隐蔽的语言特性,用类结构实现。
继承:允许一个类继承另一个类的属性和行为的语言特性。
多态:语言具备的消除同名操作的歧义的能力。
相关定义
1、对象:在问题背景中相关的事物或实体
2、对象类:一组具有相似的属性和行为的对象的描述
3、域:类中的特定项,可以是数据或子程序
4、方法:定义了累的一种行为的特定算法
5、设计方法
- 集体讨论:为的是生成解决某个特定问题要用到的候选类的列表。
- 过滤:仅用于启动模拟程序,这些共同的属性和行为可以组合在一起。
- 场景:给每个类分配责任
- 封装:把数据和动作集中在一起,使数据和动作的逻辑属性与它们的实现细节分离
- 责任算法:知识和动作
责任的加入过程:创建、输出和加入。加入这个动词是让某人准备数据的指令
6、翻译过程:用汇编语言编写的程序要输入汇编器,由他把汇编语言翻译成机器码,最终执行的是汇编器输出的机器码,使用高级语言。
- 编译器:把用高级语言编写的程序翻译成机器码的程序
- 解释器:输入用高级语言编写的程序,指导计算机执行每个语句指定的动作的程序
- 字节码:编译Java源代码使用的标准机器语言,标准化的高级语言实现的可移植性与把JAVA程序翻译成字节码然后在解释它的可移植性是不同的。用高级语言编写的程序能够在任何具有适合的编译器的机器上编译和运行,程序将被翻译成计算机能够直接执行的机器码,Ada编译器就是把其语言翻译成字节码。
7、程序设计语言的范型
两种主要的范型:分别是命令和声明的
- 命令式范型:具有顺序执行指令的特征,变量的使用代表了内存地址,而使用赋值语句则改变这些变量的值
- 面向过程的范形指的是语句被分为子程序,然后每一层执行整个问题求解的一个必要的特定任务。
- 面向对象的范形:数据对象是活跃的,对象和操作对象的代码绑定在一起,使得每个对象负责控制自己的操作
- 声明式范型:是一个描述结果的模型,但是完成结果的过程不被描述。有两种基本模型,分别是函数式和逻辑式
- 函数式模型:计算通过对函数求值来实现,而问题求解通过函数调用来实现。因此基本的原理是函数的求值,而不是变量和赋值语句
- 逻辑编程:逻辑编程基于象征逻辑的原则,这个模型包括了一系列关于对象的事实和一系列关于对象间关系的规则。一个程序包括了向这些对象和关系询问可以通过事实和规则推演的问题。
8、布尔表达式:一个标识符序列,标识符之间由相容的运算符分割,求得的值是TRUE或false。关系运算符是比较两个值的运算符。小于,小于等于,大于大于等于,不等于,等于
9、强类型化:每个变量都有一个类型,只有这种类型的值才能存储到该变量中
数据类型:一组值以及能够应用于这种类型的值得基本操作集合的说明
10、大多数高级语言都有四种数据类型:整数、实数、字符和布尔型
- 整数实数字符和布尔型称为简单数据类型或原子数据类型,因为每个值都是独立的,不能再分割
- 字符串:是一个字符序列
- 声明:把变量、动作、或者语言中的其他实体与标识符关联起来的语句,使程序员可以通过名字引用这些项目
- 保留字:一种语言中具有特殊意义的字,不能用它作为标识符
- 区分大小写:大写字母和小写字母被看作是不同的,两个拼写方法相同但大小不同的标志符被看做是不同的标识符
11、控制结构:确定程序中的其他指令的执行顺序的指令。
12、异步:不与计算机中的其他操作同时发生,换句话说,与计算机的动作不同步
13、封装:实施信息隐蔽的语言特性
对象类或类:属性和行为相似的一组对象的说明
对象:与问题背景相关的事物或实体
对象(实现阶段):类的一个实例
类(实现阶段):对象的模式
14、实例化:创建类的对象
继承:类获取其他类的属性的机制
多态:一种语言的继承体系结构中具有两个同名方法且能够根据对象应用合适的方法的能力
教材学习中的问题及解决过程
- 问题一:接触比较多的是命令式编程语言,声明式编程语言与命令式编程语言比较,它有什么特别之处
- 问题一的解决过程:从博客园查阅资料,知道命令式编程是命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。声明式编程是告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。
- 问题二:什么是逻辑式语言,有什么特别之处
- 问题二的解决过程:Prolog 是一种与众不同的语言,不用来开发软件,专门解决逻辑问题。比如,"苏格拉底是人,人都会死,所以苏格拉底会死"这一类的问题。Prolog 就是"逻辑编程"(programming of Logic)的意思。只要给出事实和规则,它会自动分析其中的逻辑关系,然后允许用户通过查询,完成复杂的逻辑运算。
代码调试
主要是根据云班课的作业写一个能自动生成四则运算的程序,上网查资料以及在博客园上找其他人的,但是按别人的代码试了几次没有成功,又根据问题自己改了,才最终运行成功。
学习进度
学习教材第九章和自学是门手艺。
学习思考感悟
通过云班课老师布置的作业完成,在这个过程中查阅了很多资料,也发现自己对一些问题还没有弄明白,以及一些知识点下面隐藏着很多有趣的内容和其他知识。通过动手实践自己调试代码,也获得了提升和收获。但是在学习过程中,有些知识记不牢,在代码相关的问题上也会遇到很多系统操作问题,自己去网上查找解决办法,对于语言有些之前学过的记不熟,还要再重新翻书去看,花费比别人多的时间去完成一个任务作业。