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
1700415660
代码清单7.2 定义类MyClass,将函数和变量组织到一起(C++)
1700415661
1700415662
1700415663
1700415664
1700415665
为了使C语言支持面向对象编程,人们扩充了它的语法,开发出C++语言。而通过改良C++又开发出了Java和C#。在本章中,将会分别介绍C语言、C++、Java和C#编写的示例程序。在阅读时只需抓住其大意即可,不必深究每个程序的具体内容
1700415666
1700415667
1700415668
1700415669
1700415671
计算机是怎样跑起来的 7.4 观点2:面向对象编程能够提升程序的开发效率和可维护性
1700415672
1700415673
在使用面向对象编程语言开发时,并不是所有的类都必须由程序员亲自编写。大部分类都已内置于面向对象编程语言中了,这些类可以为来自各个领域的程序员使用。通常将像这样的一组类(一组组件)称为“类库”。通过利用类库可以提升编程的效率。还有一些类原本是为开发其他程序而编写的,如果可以把这些现成的类拿过来使用,那么程序的开发效率会更高
1700415674
1700415675
所谓企业级的程序,指的是对可维护性有较高要求的程序。可维护性体现在当程序投入使用后对已有功能的修改和新功能的扩充上。如果所维护的程序是用一组类封装起来的话,那么维护工作就轻松了。之所以这样说,是因为作为维护对象的函数和变量,已经被汇聚到名为类的各个组中了。举个例子来说,假设已经编写出了一个用于员工薪资管理的程序,随着薪资计算规则的变化,程序也要进行修改,那么需要修改的函数和变量就应该已集中在一个类中了,比如一个叫做CalculationClass的类(如图7.2所示)。
1700415676
1700415677
图7.2 只要把组件组合起来就可以高效地开发、轻松地维护
1700415678
1700415679
1700415680
1700415681
1700415682
也就是说维护时没有必要去检查所有的类,只需修改类CalculationClass就可以了。关于可维护性,在第12章中还会继续介绍
1700415683
1700415684
“我创造类的人,你是使用类的人”–在实际应用面向对象编程时要带着这个感觉。开发小组中的全体成员没有必要都对程序的方方面面都了解,组中有些人只负责制作组件(类),有些人负责使用组件。当然也会有需要同时做这两种工作的情况。另外,还可以把一部分组件的开发任务委托给合作公司,或者购买商业组件使用。
1700415685
1700415686
对于创造类的程序员,他们考虑的是程序的开发效率和可维护性,并决定应该将什么抽象成类。如果一个类的修改导致其他的类也要跟着修改,这样的设计是不行的。必须把组件设计成即使是坏了(有缺陷)也能轻松地替换,就像在汽车或家电等工业产品中所使用的组件那样。
1700415687
1700415688
在功能升级后,旧组件能够被新组件所替换的设计也是必不可少的。因此,创造者和使用者之间就需要事先商定类的使用规范。请记住,对于类的使用者而言“类看起来是什么样子的”这种关于规范的描述通常被称为“接口(Interface)”。例如,只要把接口告诉合作公司,就可以要求他们编写类,编写出的类也就自然能够与程序中的其他部分严密地拼装起来。在面向对象语言中,也提供了用于定义接口的语法
1700415689
1700415690
1700415691
1700415692
[
上一页 ]
[ :1.700415643e+09 ]
[
下一页 ]