文章目录
程序设计语言的发展
- 程序:程序是指令与数据的集合
- 指令:指令是计算机CPU能够识别并执行的命令;指令就是0、1的组合序列
- 指令集:CPU能够识别并执行的指令的集合
(1)CISC:复杂指令集
(2)RISC:精简指令集 - 程序设计语言经历了
机器语言
、汇编语言
到高级语言
的发展
机器语言
- 计算机硬件系统可以识别的二进制指令组成的语言
- 机器语言与CPU架构密切相关,每种架构的CPU都有自己的机器语言
- 机器语言不能跨平台
- 使用机器语言编程就是使用二进制组成的序列进行编程
汇编语言
- 将机器指令映射为一些可以被人们读懂的助记符
- 汇编语言与CPU架构密切相关,每种架构的CPU都有自己的汇编语言,因为汇编指令与机器指令一一对应
- 汇编语言不能跨平台
- 使用汇编语言编程就是使用单词进行编程
高级语言
- 屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义的数据命名和容易理解的执行语句
- 像C/C++等高级语言可以在源代码级别上跨平台:一次编写,适当修改,到处编译
- 像Java等高级语言可以在字节码级别上跨平台:一次编译,到处运行
- 使用高级语言编程就是使用语句进行编程
- 高级语言较汇编语言的进步:引进了
数据类型
的概念,有了数据类型,编程变得简单多了:高级语言的编译器
识别并处理了数据类型
面向过程 vs 面向对象
- 面向过程的编程与面向对象的编程的区别在于编程的思想上面,至于到底使用什么编程语言其实没有多大关系,即使使用汇编也能写出面向对象的程序来
面向过程的编程
- 在解决问题的时候,面向过程的编程首先想的是:
先什么
、后什么
、再什么
- 先什么、后什么、再什么:第一步该做什么,接下来该做什么…
- 在语法的层面上将数据与对象数据处理的函数进行分离
- 基本是以函数为单位进行代码复用
面向对象的编程(物化)
- 在解决问题的时候,面向对象的编程首先想到的是:存在哪些
对象
,哪些问题由哪些对象来解决!完后之后再是先什么
、后什么
、再什么
- 从待解决的问题中提取
对象
以及对象与对象之间的关系
,将问题尽量的物化
- 面向对象的编程就是不断
物化
的过程 - 语法角度:将数据以及对数据的操作封装在一起,作为一个相互依存、不可分离的整体–对象
- 体系角度:物化
- 面向对象的编程语言将客观事物看做具有属性和行为的对象(
物化的过程
);通过抽象
找出同一类对象的共同属性(静态特征)和行为(动态特征)从而形成类
;通过类之间的组合、继承、多态等特性实现较大颗粒度(以类为单位)的代码复用 - 类
(1)对同类对象抽象出共性
(2)类中大多数数据只能被本类的方法进行处理 — 高内聚、低耦合
(3)类通过提供简单的外部接口(提供函数的声明,不提供函数的实现),与外界发生关系 - 对象
(1)万物皆对象
(2)对象之间的通信:对象与对象之间通过发送消息进行通信:给对象发消息就是调用对象的方法
把大象装进冰箱
- 面向过程编程:把大象装进冰箱
(1)把冰箱门打开
(2)把大象装进去
(3)把冰箱门关上 - 面向对象编程:把大象装进冰箱
(1)找出对象:冰箱对象与大象对象
(2)冰箱对象行为:开门与关门
(3)大象对象行为:走进冰箱
(4)冰箱把门打开 — 大象走进去 — 冰箱把门关上
面向对象的基本概念
对象
- 万物皆对象
- 对象是现实世界中一个实际存在的实体,可以是有形的也可以是无形的
- 程序中的对象就是具有一组属性与行为的变量
类(类型)
- 分类的依据是
抽象
- 是具有相同属性和行为的一组对象的集合的抽象概念
- 类是模子,对象是用模子造出来的实体
抽象
- 任何编程语言都有抽象:汇编语言是对机器语言的抽象,高级语言是对象汇编语言的抽象…
- 抽象要求忽略事物的非本质特征,抓住事物的本质特征(就是与当前目标有关的特征)
封装
- 将数据与对象数据的操作进行打包,形成一个不可分割的独立单位
- 提供访问权限:只能靠编译器把门(编译器是根据语法把门的):尽可能隐藏对象的实现细节,对外形成一个边界,只提供有限的对外接口使之与外部发生联系
继承(扩展)
- 继承的本质是扩展:子类对象中包含了父类子对象
- C++等高级语言的继承机制是
加机制
(子类继承了父类的所有,尽管父类某些成员不能访问),随着继承体现不断增加,造出来的对象会越来越大
多态
面向对象的软件开发
- OOA:面向对象的设计
- OOD:面向对象的分析
- OOP:面向对象的编程
- OOT:面向对象的测试
- OOSM:面向对象的软件维护
数据在计算机中的存储
- 在说数据在计算机存储之前,必须明确存储数据的单位长度,是用1个字节存储,还是4个字节存储还是…就是使用多大的空间存储目标数据
- 数据无论是硬盘上还是内存中都是以二进制存储的
- 这些二进制通过不同的解