第一章对象引论.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章对象引论.doc

第一章 对象引论 “我们之所以将自然界分解,组织成为各种概念,并总结出其重要性,主要是因为我们知道我们的语言社区所共同持有的,并以我们的语言的形式所固定下来的一种约定…除非赞成这个约定中所颁布的有关数据的组织和分类的内容,否则我们根本无法交谈。”Benjamin Lee Whorf(1897-1941) 计算机革命起源于机器,因此,编程语言的起源也始于对机器的模仿趋近。但是,计算机并非只是机器那么简单。计算机是头脑延伸的工具(就象 Steven Jobs常喜欢说的“头脑的自行车”一样),同时还是一种不同类型的表达媒体。因此,这种工具看起来已经越来越不像机器,而更像我们头脑的一部分,以及一种诸如写作、绘画、雕刻、动画、电影等的表达形式一样。面向对象程序设计(Object-oriented Programming, OOP)便是这种以计算机作为表达媒体的大潮中的一波。 本章将向您介绍包括开发方法概述在内的OOP的基本概念。本章,乃至本书中,都假设您在过程型编程语言(Procedural Programming Language)方面已经具备了某些经验,当然不一定必须是C。如果您认为您在阅读本书之前还需要在编程以及C语法方面多做些准备,您可以研读本书所附的培训光盘“Java基础(Foundations for Java)”。 本章介绍的是背景性的和补充性的材料。许多人在没有了解面向对象程序设计的全貌之前,感觉无法轻松自在地从事此类编程。因此,此处将引入众多的概念,以期助您建立对OOP的扎实全面的见解。然而,还有些人可能直到在看到运行机制的某些实例之前,都无法了解面向对象程序设计的全貌,这些人如果没有代码在手,就会陷于困境并最终迷失方向。如果您属于后面的这个群体,并且渴望尽快获取Java语言的细节,那么您可以越过本章——在此处越过本章并不会妨碍您编写程序和学习语言。但是,您最终还是会回到本章来填补您的知识,这样您才能够了解到为什么对象如此重要,以及怎样使用对象来进行设计。 抽象过程 所有编程语言都提供抽象(abstraction)机制。可以认为,你所能够解决的问题的复杂性直 接取决于抽象的类型和质量。我所谓的“类型”是指“你所抽象的是什么? ”汇编语言是对底层机器的小型抽象。接着出现的许多所谓“命令式(Imperative)”语言(诸如 FORTRAN、BASIC、 C等)都是对汇编语言的抽象。这些语言在汇编语言之上有了大幅的改进,但是它们所作的主要抽象仍要求你在解决问题时要基于计算机的结构,而不是基于你试图要解决的问题的结构来考量。程序员必须建立在机器模型(Machine Model)(位于你对问题建模所在的解空间(Solution Space)内,例如计算机)和实际待解问题模型(Problem Model)(位于问题所在的问题空间(Problem Space)内)之间的关联。建立这种映射(Mapping)是费力的,而且它不属于编程语言的内在性质,这使得程序难以编写,并且维护代价高昂。由此,产生了完整的“编程方法(Programming Method)”产业。 另一种对机器建模的方式就是对待解决问题建模。早期的编程语言,诸如LISP和 APL都选择世界的某种特定视图(分别对应于“所有问题最终都是列表(List)”或者“所有问题都是算法形式的(algorithmic)”)。PROLOG则将所有问题都转换成为决策链(Chain of decisions)。此外还产生了基于约束条件(constraint-based)编程的语言和专门通过对图形符号操作来实现编程的语言(后者被证明限制性过强)。这些方式对于它们被设计时所瞄准要解决的特定类型的问题都是不错的解决方案,但是一旦超出其特定领域,它们就力不从心了。 面向对象方式(Object-oriented approach)通过向程序员提供用来表示在问题空间中的元素的工具而更进一步。这种表示方式具有足够的概括性,使得程序员不会受限于任何特定类型的问题。我们将问题空间中的元素及其在解空间中的表示成为“对象(Object)”。(你还需要一些无法类比为问题空间元素的对象)。这种思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。因此,当你在阅读描述解决方案的代码的同时,也是在阅读问题的表述。相比以前我们所拥有的所有语言,这是一种更灵活和更强有力的语言抽象。 所以,OOP允许以问题的形式来描述问题,而不是以执行解决方案的计算机的形式来描述 问题。但是它仍然与计算机有联系:每个对象看起来都有点像一台微型计算机——它具有状 态,并且能够执行你赋予它的各种操作。如果要在现实世界中对对象作类比,那么说它们都 具有特性(Characteristic)和行为(Behavior)似乎不错。 Al

文档评论(0)

ziyouzizai + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档