面向对象思想
前言
计算机的革命起源于机器,所以说,编程语言的产生也是始于对机器的模仿。在19世纪的早期就已经出现过计算机的雏形。那时,人们为了构建导航所需的表格对计算机产生了需求。于是有一个叫做"查尔斯巴贝奇"的人在英格兰就设计了一台叫做差分机的计算装置。它能够自动地计算构造出数学表所需的多项式的值。
遗憾的是,巴贝奇最后并没有完成它的差分机,差分机后来在1855年由Per Georg Scheutz在瑞典制造
而巴贝奇设计的机器叫做分析机,在1871年巴贝奇去世之前,他也只来得及做出其中的一部分以测试他的概念是否可行。分析机是一个完全的机械装置,拥有完成计算的处理单元,输入输出数据的手段,以及一个穿孔木片的存储器能够保存数据和程序。
巴贝奇的计算器
巴贝奇的分析机
巴贝奇分析机在计算机发展史上有着非常重要的地位,一些早期的计算机先驱都受到了巴贝奇工作的启迪甚至有人认为,巴贝奇的分析机比20实际40年代的早期电子计算机更先进,更接近现代的计算机
"奥古斯塔 阿达 金"是一位英国作家,数学家,她也曾与巴贝奇一起制作分析机。1842年她翻译了意大利数学家"路易吉 蒙博"所撰写的关于分析机的备忘录。作为工作的一部分,她重写了包括用分析机计算伯努利数的一系列注释。由于这一工作,阿达被认为是编写计算机程序的第一人。阿达之后经过了大约一百年的技术进步,人类才能真正地编写和运行程序。
计算机程序
计算机上执行的代码表示为二进制 1 和 0 组成的串,它被称作机器码。每种计算机它都只能执行一种特定的机器码。人类可读的机器码就比如ADD,R0,Time这种叫做汇编语言。能够在类型完全不同的计算机上运行。与底层计算机体系结构几乎没有关系的代码叫做高级语言,比如C语言,C++语言,Java语言等。在执行之前,高级语言程序必须首先被编译成计算机的本地机器码。
面向过程语言
面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。
早期最具有代表性的面向过程语言如C语言、Fortran语言
C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。易学,语法严谨。可以直接对矩阵和复数进行运算,这一点类似matlab。自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。很多专用的大型数值运算计算机针对Fortran做了优化。广泛地应用于并行计算和高性能计算领域。Fortran90,Fortran95,Fortran2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。
面向过程的思想
面向过程的思想就好比假如我要买一个笔记本电脑来打游戏,那么我们的步骤就是取钱,走到店里,把钱交给老板,然后把电脑带回家下载游戏即可。但是假如我要造一台笔记本电脑来玩游戏,那么使用面向过程的思想就有点不太合适了。因为造一台笔记本电脑需要很多很多的配件,一个一个列出来是很复杂的,因此面向对象的思想就诞生了~
面向对象思想
面向对象的思想更契合人的思维模式,我们需要思考的是,笔记本是由哪些配件组成,然后我们就会根据需要的那些配件来找到专门制作的厂商进行购买或者自行研发来组成一个笔记本电脑。
访问权限控制
在Java语言中提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用,哪些是不可用。访问权限的控制等级从最大权限到最小权限的顺序依次为
public int A; //所有类都可以访问
protected int B; //子类可以直接访问
int C; //同一个包下,对象可以访问
private int D; //任何情况下外界都无法访问
初始化和清理
初始化和清理是设计安全的两个问题,许多C语言出现的错误都是程序员忘记初始化变量。清理也是一个特殊的问题,当使用完一个元素的时候,程序员很容易把它忘记,这样一来,这个元素占用的资源就会一直得不到释放,结果就是资源用尽。
在C++里面提供了构造器的概念,这是一个在创建对象时自动调用的方法,Java也提供了这个概念,并且还额外提供了垃圾回收器。对于不再使用的资源,垃圾回收器会将其释放。
虽然Java有垃圾回收器负责回收无用对象占据的内存资源,但是也有特殊情况。假如你的对象获得了一块特殊的内存区域,由于垃圾回收器只知道分配那些由new分配的内存,所以它不知道该如何释放这块特殊的内存,为了应付这种情况,Java允许在类中定义一个名为finalize()的方