抽象的进步[Java编程]
本文“抽象的进步[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
全部编程语言的终究目的都是供应一种“抽象”办法.一种较有争议的说法是:办理问题的复杂程度直接取决于抽象的种类及质量.这儿的“种类”是指预备对什么举行“抽象”?汇编语言是对底子机械的少量抽象.后来的很多“号令式”语言(如FORTRAN,BASIC和C)是对汇编语言的一种抽象.与汇编语言相比,这些语言已有了长足的进步,但它们的抽象原理仍然要求我们侧重考虑计算机的构造,而非考虑问题本身的构造.在机械模子(位于“筹划空间”)与实际办理的问题模子(位于“问题空间”)之间,程序员必须成立起一种接洽.这个历程要求人们付出较大的精神,并且由于它脱离了编程语言本身的范围,造成程序代码很难编写,并且要花较大的代价举行保护.由此造成的副作用就是一门完善的“编程办法”学科.
为机械建模的另一个办法是为要办理的问题制作模子.对一些早期语言来说,如LISP和APL,它们的做法是“从差别的角度察看世界”——“全部问题都归纳为列表”或“全部问题都归纳为算法”.PROLOG则将全部问题都归纳为抉择链.关于这些语言,我们认为它们一部份是面向基于“强迫”的编程,另一部份则是专为处理图形标记计划的.每种办法都有自己特别的用处,合适办理某一类的问题.但只要超越了它们力所能及的范围,就会显得非常拙笨.
面向对象的程序计划在此底子上则跨出了一大步,程序员可操纵一些工具表达问题空间内的元素.由于这种表达非常广泛,所以没必要受限于特定范例的问题.我们将问题空间中的元素以及它们在筹划空间的表示物称作“对象”(Object).当然,还有一些在问题空间没有对应体的其他对象.通过增添新的对象范例,程序可举行机动的调整,以便与特定的问题配合.所以在阅读筹划的描写代码时,会读到对问题举行表达的话语.与我们从前见过的相比,这无疑是一种越发机动、愈加强盛的语言抽象办法.总之,OOP答应我们按照问题来描写问题,而不是按照筹划.但是,仍有一个接洽途径回到计算机.每个对象都近似一台小计算机;它们有自己的状况,并且可要求它们举行特定的操作.与实际世界的“对象”大概“物体”相比,编程“对象”与它们也存在共通的地方:它们都有自己的特点和行为.
Alan Kay总结了Smalltalk的五大基本特点.这是第一种成功的面向对象程序计划语言,也是Java的底子语言.通过这些特点,我们可理解“纯粹”的面向对象程序计划办法是什么样的:
(1) 全部东西都是对象.可将对象想象成一种新型变量;它保存着数据,但可要求它对自身举行操作.理论上讲,可从要办理的问题身上提出全部概念性的组件,然后在程序中将其表达为一个对象.
(2) 程序是一大堆对象的组合;通过消息传送,各对象知道自己该做些什么.为了向对象发出恳求,需向那个对象“发送一条消息”.更具体地讲,可将消息想象为一个调用恳求,它调用的是从属于目标对象的一个子例程或函数.
(3) 每个对象都有自己的存储空间,可包容其他对象.大概说,通过封装现有对象,可制作出新型对象.所以,固然对象的概念非常简单,但在程序中却可到达肆意高的复杂程度.
(4) 每个对象都有一种范例.按照语法,每个对象都是某个“类”的一个“实例”.此中,“类”(Class)是“范例”(Type)的同义词.一个类最重要的特点就是“能将什么消息发给它?”.
(5) 同一类全部对象都能接纳相同的消息.这实际是别有含义的一种说法,大家不久便能理解.由于范例为“圆”(Circle)的一个对象也属于范例为“形状”(Shape)的一个对象,所以一个圆完万能接纳形状消息.这意味着可以让程序代码统一批示“形状”,令其自动掌握全部符合“形状”描写的对象,此中自然包含“圆”.这一特点称为对象的“可替换性”,是OOP最重要的概念之一.
一些语言计划者认为面向对象的程序计划本身并不足以便利办理全部情势的程序问题,倡导将差别的办法组合成“多形程序计划语言”(注释②).
②:拜见Timothy Budd编著的《Multiparadigm Programming in Leda》,Addison-Wesley 1995年出版.
以上是“抽象的进步[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:对象的接口
- ·下一篇文章:对象入门
- ·中查找“抽象的进步”更多相关内容
- ·中查找“抽象的进步”更多相关内容