面向对象的程序设计-jav张白一第三版第4章面向对象的程序设计-java张白一第三版第4章面向对象的程序设计-java张白一第三版第4章面向对象的程序设计-java张白一第三版第4章.ppt

面向对象的程序设计-jav张白一第三版第4章面向对象的程序设计-java张白一第三版第4章面向对象的程序设计-java张白一第三版第4章面向对象的程序设计-java张白一第三版第4章.ppt

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

第4章 类与对象      4.1 类与对象的概念   程序设计所面对的问题域——客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议)。在面向对象的程序设计中,客观世界中的事物映射为对象。对象是面向对象程序设计中用来描述客观事物的基本单位。客观世界中的许多对象,无论其属性还是其行为常常有许多共同性,抽象出这些对象的共同性便可以构成类。所以,类是对象的抽象和归纳,对象是类的实例。 4.1.1 抽象原则   所谓抽象(abstraction),就是从被研究对象中舍弃个别的、非本质的,或与研究主旨无关的次要特征,而抽取与研究工作有关的实质性内容加以考察,形成对所研究问题正确的、简明扼要的认识。例如,“马”就是一个抽象的概念,实际上没有任何两匹马是完全相同的,但是我们舍弃了每匹马个体之间的差异,抽取其共同的、本质性的特征,就形成了“马”这个概念。   抽象是科学研究中经常使用的一种方法,是形成概念的必要手段。在计算机软件开发领域,所有编程语言都提供抽象机制,人们所能够解决的问题的复杂性直接取决于抽象的层次和质量。编程语言的抽象是指求解问题时是否根据运行解决方案的计算机结构来描述问题,它是以“机器语言→汇编语言→面向过程的语言→面向对象的语言”这样的路径发展的。   随着不同抽象层次的进展,目前主要强调的是过程抽象和数据抽象。   1. 过程抽象   过程抽象(procedural abstraction)是指任何一个完成确定功能的操作序列,其使用者都可把它看做一个单一的实体,尽管这个操作可能是由一系列更低级的操作完成的。   过程抽象隐藏了过程的具体实现。例如,用于求一个正整数平方的过程可以有下面的不同实现方式。   方式1:   int square(int k)   { return k*k; }   方式2:     int square(int k)     {      int result=0;      for(int i=0; ik; i++) result+=k;      return result;     }   以上两种实现方式代表了相同的抽象操作:当传递一个正整数调用square过程时,它们都返回输入值的平方,不同的实现方式并不影响任何一个调用square过程的程序的正 确性。   面向过程的语言(如Fortran、Pascal、C等)的程序设计采用的是过程抽象。过程在C语言中称为函数,在其他语言中称为子程序等。当求解一个问题时,过程抽象的程序设计是将一个复杂的问题分解为多个子问题,如果子问题仍然比较复杂,可再分解为多个子问题,形成层次结构。每一个子问题就是一个子过程,高层的过程可以将它下一层中的过程当做抽象操作来使用,而不用考虑它下层过程的实现方法。最后,从最底层的过程逐个求解,合并形成原问题的解。   过程抽象有两个主要优点:① 通过将过程看做抽象操作,编程人员可以在无需知道过程是如何实现的情况下使用它们。② 只要抽象操作的功能是确定的,即使过程的实现被修改,也不会影响使用这个过程的程序。   然而,过程抽象只关注操作,没有把操作和被操作的数据作为一个整体来看待,存在一定的弊端。二十世纪七十年代,学者们提出了抽象数据类型的概念,后来进一步发展成数据抽象的概念。   2. 数据抽象   数据抽象(Data Abstraction)把系统中需要处理的数据和施加于这些数据之上的操作结合为一个不可分的系统单位(即对象),根据功能、性质、作用等因素把它们抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,也包含了针对这些数据的授权操作,并限定数据的值只能由这些操作来观察和修改。因此,数据抽象是相对于过程抽象的更为严格、更为合理的抽象方法。   在数据抽象中,一个抽象数据类型(值或对象)表示一组数据和一组公共操作,这些操作构成这些数据的接口。数据值的实现包括它的内部表示和基于这些表示的操作的实现。数据抽象仅提供给编程人员数据值的接口而屏蔽了它的实现,编程人员通过接口访问数据。   使用数据抽象有很多优点。首先,用户不需要了解详细的实现细节就可使用它。其次,由于对用户屏蔽了数据类型的实现,因此,只要保持接口不变,数据实现的改变并不影响用户的使用。另外,由于接口规定了用户与数据之间所有可能的交互,因此,也就避免了用户对数据的非授权操作。   面向对象的程序设计就是采用数据抽象这一方法来构建程序中的类和对象的。它强调把数据和操作结合为一个不可分的系统单位——类/对象,对象的外部只需要知道这个对象能做什么,而不必知道它是如何做的。   3. 面向过程程序设计和面向对象程序设计的不同   下面通过编写求长方形面积的程序实例来说明面向过程的

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档