一、 《计算机科学概论》第九章—面向对象设计与高级程序设计语言
(一) 面向对象方法
自顶向下设计的重点就是任务。相反的,面向对象的设计方法使用叫“对象”的独立实体生成解决方案。一旦收集全了所有问题中的对象,就能构成问题的解决方案。
1. 面向对象
(1) 对象(object)在问题背景中相关的事物或实体
(2) 对象类,简称类(object class or class)一组具有相似的属性和行为的对象的描述
(3) 域(field)类中的特定项,可以是数据或子程序
(4) 方法(method)定义了类的一种行为的特定算法。
2. 设计方法
(1) 集体讨论:确定可能需要的对象类
(2) 过滤:筛选整合,集体讨论的成果
(3) 场景:明确对象类的责任(管什么的)(动词),“如果。。。将会。。。”
(4) 责任算法:为责任编写算法
(5) 总结:在软件的设计说明书上,关注动词—程序性;关注名词—面向对象
(二) 翻译过程
1. 编译器(compiler)把用高级语言编写的程序翻译成机器码的程序
2. 解释器(interpreter)输入高级语言编写的程序,指导计算机执行每个语句制定的动作的程序
3. 解释执行,通常比编译执行慢
(1) 解释器(interpreter)输入高级语言编写的程序,指导计算机执行每个语句指定的动作的程序
(2) 字节码(bytecode) 编译java源代码使用的标准机器语言
(3) 标准化的语言提供的可移植性(在有该语言编译器的电脑上可直接运行)、与、解释字节码提供的可移植性(在有JVM的电脑上可直接运行),不同。
(三) 程序设计语言的规范
1. 命令式范性
描述解决问题的必要处理,具有顺序执行指令的特征
(1) 面向过程的范性:程序是子程序分层次构成的
(2) 面向对象的范性:对象和操作对象的代码绑在一起,使得每个对象负责控制自己的操作。Java、Python,C++既有面向对象的部分,又有面向过程的特点。
2. 声明式范性
描述结果
(1) 函数式:基本原理是函数的求值,而不是变量和赋值语句。
① Lisp、Scheme、ML
(2) 逻辑式:基于象征逻辑的原则。
(四) 高级程序设计语言的功能性
分支结构、循环结构是命令式语言的标志。
1. 布尔表达式(boolean expression)一个标识符序列,标识符之间有相容的运算符隔开,求得的值是true or false
2. 数据归类
(1) 强类型化(strong typing)每一个变量都有一个类型,只有这种类型的值才能被存储到该变量里面
(2) 数据类型(data type)一组值以及能够应用于这种类型的值的基本操作集合的说明。
(3) 数据类型:整数、实数、字符、布尔型、字符串、
(4) 声明(declaration)把变量、动作、语言中其他实体和标志符关联起来的语句,使程序员可以通过名字引用这些项目。??注释??
(5) 保留字(reserved word)具有特殊意义的字,不能用作标志符
(6) 区分大小写(case sensitive)
3. 输入/输出
4. 控制结构
(1) Control structure:确定程序中的其他指令的执行顺序的指令
① 重复、选择、子程序
(2) 嵌套逻辑
(3) 异步处理:也叫作事件驱动处理。这样的处理是背程序指令序列以外发生的事件所控制的。
① 异步(asynchronous)不与计算机中其他操作同时发生;换句话说,与计算机的动作不同步
② 异步处理经常出现在Java和VB中,而很少出现在别的语言中。
(五) 面向对象语言的功能性
1. 封装(encapsulation)实施信息隐蔽。把数据和动作打包在一个袋子里。对其他的对象一无所知,如果一个对象需要另一个对象的信息,他必须向另一个对象请求。
(1) 对象类(object class)问题求解阶段:属性和行为相似的一组对象的说明,是与问题背景相关的事物或实体
(2) 对象,实现阶段,是对象类的一个实例
(3) 类,实现阶段,对象的模式
2. 类
(1) 实例化:创建类的对象
3. 继承(inheritance)获取其他类的属性(数据域和方法)的机制
4. 多态(polymorphism)一种语言的继承体系结构中具有两个同名方法且能够根据对象应用合适的方法的能力。
(六) 杂问
1. 结构化程序设计原则
2. Java、python只能使用值参?VB、C++会使用引用参数?
3.