打字猴:1.70041561e+09
1700415610 但在实际的开发工作中,程序员却有一种对面向对象编程敬而远之的倾向。原因在于他们不得不重新学习很多知识,还会被新学到的知识束缚自己的想法,导致无法按习惯的思维开发。以笔者的经验来看,如果是讲解传统的编程方法,那么只需要写一本书就够了,而讲解面向对象编程则需要写两本书。直说的话就是面向对象编程太麻烦了。甚至还曾听到过这样的传言:若是在面向开发人员的杂志中刊登了标题中含有面向对象编程的专栏,那么仅凭这一点,杂志的销路就不好了。
1700415611
1700415612 虽然现状如此,但还是讲解一下面向对象编程吧。因为在未来的开发环境中,将成为主流的不是Java就是.NET(原作写于2003年,所以当时的情况和当时对未来的展望可能和今天的状况多少有些出入),而无论选择哪个,面向对象编程的知识者是不可缺少的。这使得在这之前还对其敬而远之的程序员也不得迎头赶上了,因为已经没有退路了。
1700415613
1700415614 的确,精通面向对象编程需要花费大量时间,所以先通过阅读本章,掌握一些基础知识,至少能够说出面向对象是什么。然后再为实践面向对象编程开始踏踏实实的深层学习吧
1700415615
1700415616
1700415617
1700415618
1700415619 计算机是怎样跑起来的 [:1700412682]
1700415620 计算机是怎样跑起来的 7.2 对OOP的多种理解方法
1700415621
1700415622 在计算机术语辞典等资料中,常常对面向对象编程做出了如下定义
1700415623
1700415624 面向对象编程是一种基于以下思路的程序设计方法:将关注点置于对象(object)本身,对象的构成要素包含对象的行为及操作(在C语言中,结构体是数据的集合,它将数据捆绑在一起,使得我们可以将这些数据看作一个整体。而对结构体中的数据进行操作的函数却写在了结构体外部。然而在面向对象编程中,将表示事件行为的函数也放入了这个整体,这就形成了对象的概念,使得这个整体既能描述属性,又能描述行为),以此为基础进行编程。这种方法使程序易于复用,软件的生产效率因而得以提升。其中所使用的主要编程技巧有继承、封装、多态三种。
1700415625
1700415626 这段话足以作为对术语的解释说明,但仅凭这段话还是无法理解面向对象编程的概念
1700415627
1700415628 “面向对象编程是什么?”如果去问十个程序员,恐怕得到的答案也会有十种。就此打个可能稍微有点特别的比方吧。有几个人去摸一只刺猬,但他们看不到刺猬的全身。有的人摸到了刺猬的后背,就会说“摸起来扎手,所以是像刷子一样的东西”;有的人摸到了刺猬的尾巴,就会说“摸起来又细又长,所以是像绳子一样的东西”(图7.1)
1700415629
1700415630 图7.1 面向对象编程是什么?
1700415631
1700415632
1700415633
1700415634
1700415635 同样的道理,随着程序员看问题角度的不同,对面向对象编程的理解也会仁者见仁,智者见智。
1700415636
1700415637 那么到底哪种理解方法才是正确的呢?其实无论是哪种方法,只要能够通过实际的编程将其付诸实施,那么这种方法就是正确的。诸位可以用自己的理解方法去实践面向对象编程。虽然是这么说,但如果仅仅学到了片面的理解方法,也是无法看到面向对象编程的全貌的,会感到对其概念的理解是模糊的。因此,下面我们就把各种理解方法和观点综合起来,以此探究面向对象编程的全貌
1700415638
1700415639
1700415640
1700415641
1700415642 计算机是怎样跑起来的 [:1700412683]
1700415643 计算机是怎样跑起来的 7.3 观点1:面向对象编程通过把组件拼装到一起构建程序
1700415644
1700415645 在面向对象编程中,使用了一种称为“类”的要素,通过把若干个类组装到一起构建一个完整的程序。从这一点来看,可以说类就是程序的组件(component)。面向对象编程的关键在于能否灵活地运用类
1700415646
1700415647 首先讲解一下类的概念。在第1章中讲过,无论使用哪种开发方法,编写出来的程序其内容最终都会表现为数值的罗列,其中的每个数值要么表示“指令”,要么表示作为指令操作对象的“数据”。程序最终就是指令与数据的集合
1700415648
1700415649 在使用古老的C语言或BASIC等语言编程时(它们不是面向对象的编程语言,即不是用于表达面向对象编程思想的语言),用“函数”表示指令,用“变量”表示数据。对于C语言或BASIC的程序员而言,程序就是函数和数据的集合。在代码清单7.1中,用Function X的形式为函数命名,用Variable X的形式为变量命名
1700415650
1700415651 代码清单 7.1 程序是函数和数据的集合
1700415652
1700415653
1700415654
1700415655
1700415656 在大型程序中需要用到大量的函数和变量。假设要用非面向对象的编程方法编写一个由10000个函数和20000个变量构成的程序,那么结果就很容易造成代码混乱不堪,开发效率十分低下,维护十分困难
1700415657
1700415658 于是一种新的编程方法被发明出来了,即把程序中有关联的函数和数据汇集到一起编成组,这里的组就是分类。在C++,Java、C#等面向对象编程语言中,语法上支持类的定义。在代码清单7.2中,定义了一个以MyClass为名称的类。因为程序的构成要素中只有函数和变量,所以把它们分门别类组织起来的类也理所当然地成了程序的组件。通常把汇集到类中的函数和变量统称为类的“成员”(Member)
1700415659
[ 上一页 ]  [ :1.70041561e+09 ]  [ 下一页 ]