java自学day1

1.java概述    

         java语言是一种纯面向对象的程序设计语言,它能够比较直观的反映客观世界的本来面目,并让软件开发人员能够运用人类认识事物的思维方式去进行软件开发,所有的面对对象的开发语言都支持对象,类,消息,封装,继承,多态等形态。

2.编程语言的发展过程

    2.1机器语言

          机器语言是一种计算机能够直接理解并执行的唯一语言,整个语言采用二进制之的'0'和'1'两种符号,用机器语言编写的程序,无论是它的指令,数据还是其存储地址,都是以二进制组成。这种语言离计算机最近,能够让计算机直接执行,但是因为离人类的思维最远,因此其编写程序的效率最低,也最容易在编写程序时发生错误。

    2.2汇编语言

         为了克服机器语言的缺陷,人类决定用一些易于理解和记忆的符号来代替二进制数,因此出现了汇编语言。汇编语言用符号构成程序,用符号来代表指令,数据,寄存器,地址等物理概念。汇编语言比起机器语言更加适合人类的思维方式,但是因为使用汇编语言编写程序时,编程人员需要更多的考虑寄存器等大量的机器细节,即汇编语言仍然是一种与具体机器硬件有关的编程语言,是一种面向机器的编程语言,因此,我们也称其为符号化的机器语言。

    2.3高级语言

          高级语言的提出是因为机器语言和汇编语言都离不开具体的机器指令系统,使用它们的编程人员必须要熟悉所使用的计算机的硬件特性,且用它们编写程序的技术复杂,效率不高,并且其可维护性和可移植性差,人们为了彻底摆脱语言对机器的依附,在1956年推出了一种与具体机器指令系统无关,表达方式接近自然语言的计算机语言——FOETRAN语言。在FORTRAN语言中,采用了具有一定含义的数据命名和人们比较容易理解的执行语句, 通过屏蔽机器细节使得人们在书写和阅读程序时可以联系到程序所描述的具体事物。因此,人们把这种“与具体机器指令系统无关,表达方式接近自然语言”的计算机语言称之为高级语言。高级语言的出现缩小了编程语言与自然语言的鸿沟。

          此后,高级语言向体现客观事物的结构和逻辑含义的方向发展。结构化数据,结构化语句,数据抽象,构成抽象等概念被相继提出。在1971年推出的Pascal为典型的结构化程序语言的代表,进一步缩小了编程语言与自然语言之间的差距。而后的十几年中,结构化程序设计得到了进一步的发展。在上世界七十年代到八十年代,程序化结构设计风靡一时,成为了党史软件开发设计的主流技术。

          在程序化语言设计当中,把程序概括为:

                                               程序=数据结构+算法

其中,数据结构是指利用计算机的离散逻辑来量化表达所以需要解决的问题,而算法则研究如何搞笑,快捷地组织结局按问题的具体过程。由此可见,以结构化程序设计为代表的高级语言是一种面向数据或者过程的程序设计语言,人类也把这类语言称之为面向过程的语言。但是它很难把一个具有多种相互关系的复杂事物表达清楚。因此人们又提出了面向对象的程序设计方法。

 

    2.4面向对象的语言

           面向对象的汇编语言(Object-Oriented Programming Language,OOPL)的设计出发点是为了能够更加直接的描述问题当中客观存在的事物/对象以及它们之间的关系。面向对象技术追求的是软件系统对现实世界的直接模拟。它的出现是希望用户能够最大限度的利用软件系统,花费少量的时间来解决需要解决的问题。

          在面向对象的程序设计语言当中,可以把程序描述为:

                                                   程序=对象+消息

          

         面向对象的语言对现实世界的直接模拟存在于以下几个方面:

(1)对象(object)。

           我们所研究的程序设计的面对的问题域来自于我们的客观世界,而客观世界只有一些具体的事物所构成,每个事物都有属于自己的一组静态特征(属性)和一组动态特征(行为)。要把客观世界的这一事实映射到面向对象的程序设计语言当中,则需要把问题抽象成对象,用一组数据描述该对象的属性,用一组方法来刻画该对象的行为 。

(2)类(class)。

          客观世界中的事物既具有特殊性又具有共同性。人类认识客观事物的基本方法之一就是对事物进行分类,即根据事物的共同性把事物归结为某类。OOPL就很自然地用类来表示具有相同属性和方法的对象。

(3)继承(inheritance)。

          在同一类事物当中,每个事物既具有同类的共同性,又具有自己的特殊性。OOPL用父类和子类的概念来描述这一事实。在父类当中表述事物的共同性,然后派生(derive)子类的机制来体现事物的个性。考虑同类事物当中某个事物的特殊性时,可以有父类派生出子类,子类可以继承父类的共同性,又具有自己的特殊性。

(4)封装(encapsulation)。

          客观世界的事物是一个独立的整体,它的许多内部细节是外部漠不关心的。例如,对于一个开出租车的司机而言,他可能不知道他所驾驶的车辆是怎么组装和运行的,它只需要知道如何安全的驾驶就已经足够。OOPL用封装机制把对象的属性和方法结合为一个整体,并且屏蔽了许多对象的内部细节。

(5)关联(association)。

          客观世界当中一个事物可能要与其他事物之间存在某种行为之间的联系。例如,一辆行驶当中的车辆遇到斑马线需要减速礼让行人。OOPL便通过消息连接表示对象之间的这种动态联系,也称之为关联。

(6)组合体(composite)。

          拥有其他对象的对象被称为组合体。客观世界中较为复杂的事物往往是由一些比较简单的事物构成。

   综述,面向对象的编程语言能够直观反映客观事物的本来面目。其与自然语言的差距也较小。

2.5面向对象的语言发展

        1967年由挪威计算中心开发的Simula67语言首先引入了类的概念和继承机制,被认为是面向对象语言的鼻祖。

        纵观所有面向对象设计语言,我们将其分为两大类:

1.纯粹的面向对象语言,如Smalltalk,Java。在这类语言中,几乎所有的语言成分都是“对象”,这类语言强调的是开发快速原型的能力。没有独立于类之外的代码。

2.混合型的面对对象语言,如C++,Oeject Pascal。这类语言实在传统的过程化语言中加入了面向对象的语言机构,强调的是运行效率。

      

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值