dennyqiang 发表于 2010-3-11 14:01:01

[连载] 精通RFT-02: 理解面向对象

RFT与QTP最大的不同点在于脚本的开发语言,相对来说RFT对编程方面的能力要求更高,因为VBScript只是一个简单的脚本,并没有提供强大的程序设计功能,而RFT不一样,RFT使用Java和VB.NET两种面向对象的编程语言,对测试开发人员在程序设计方面的能力要求要高得多。

所以,要学好RFT,我们首要的必修课就是程序设计中的面向对象相关的原理和基本概念。何为面向对象呢?要理解面向对象,我们先来看看与面向对象相对应的另外一种程序设计方法:面向过程。

面向过程的编程的基本构成便是“过程”,过程实现的方式就是“函数”,我们通过不同函数来实现不同的功能,并按照程序的执行顺序调用相应的函数,组成一个完整的可以运行的应用程序。我们可以通过把不同的功能在不同的函数中实现或者给函数传递不同的参数来实现不同的功能,这是面向过程中模块化设计的原理。

但是面向过程有很多问题,当我们总是按照教科书上的小例子来学习程序设计时是永远也体会不到面向过程中存在的这些问题的,反而会觉得面向过程更简单,更容易理解。而事实是当我们设计一些大型的应用的时候你将会发现使用面向过程编程是多么的痛苦和无奈,代码极难维护,我们不得不为相似功能设计不同的函数,天长日久,代码量越来越大,函数越来越多,而重复的代码越来越多,噩梦就此产生。

于是乎产生了另外一种设计思想:面向对象,从此程序员发现编程是多么快乐的一件事情。我们可以把现实世界的很多哲学思想或者模型应用于编程,这是计算机的一次伟大的革命。那么究竟何为面向对象?要理解这两个重要的字“对象“,我们首先需要理解一下类和实例:

何为类?
类就是“一类东西”,比如“车”是一类东西,“汽车”,“自行车”也是一类东西,“大众汽车”,“永久自行车”也是一类东西。
何为实例?
实例就是明确告知哪一类东西的哪一个,比如“小明家的桑塔纳Vista”,或者“编号为1389756的永久牌自行车”就属于一个实例。
那么何为对象?
在面向对象的程序设计中,“一切皆是对象”(记住这句话,对面向对象理解得有多深取决于对这句话的理解有多深)。一个类是一个对象,一个实例是一个对象,一个变量也是一个对象,甚至一个数据类型,也都可以视为一个对象。

对象有什么特性?
对象不同于过程的最基本的特质有两点:
1)        对象有方法,比如车可以“开”,可以“停”,可以“刹车”,这些属于方法。
2)        对象有属性,比如车有“重量”,“排量”,“轴距”,“油耗”等,这些属于属性。

对于属性,这在面向过程中是没有相关概念与之对应的,而对于方法,方法本身来说就是一段处理程序,方法与面向过程的函数其实是类似的(方法和函数都由一段代码组成,可以包括参数,可以有返回值或没有返回值),它们之间唯一的区别在于函数是不存在公有私有一说的,而方法却有类型修饰符(public, private, protected等),这种类型修饰符直接决定了该方法能不能被别的子对象使用。

何为子对象呢?这里牵涉着面向对象另一个非常重要的特性:继承。简单理解继承就是“子承父业”,与生物学上的继承,遗传的概念没有区别。就拿人类来说,父亲有的方法(如走,跑,跳,吃,睡等)同样儿子也可以有,儿子还可以自创一个自己的方法(如射击,冲浪),同样,儿子也有可能某些方法不能用(比如残废,不能走,跑,跳,但可以吃,睡),这是继承。

关于继承,有两个重要的概念大家容易混淆:重写和重载,二者区别在于:
重写:父亲走路是向前走的,儿子重写父亲走路的动作,横着走。(虽然都是走,结果完全不同),这属于继承的范畴。
重载:对同一个类,比如父亲,同一个方法可以有多种实现手段,比如跑,可以快跑,可以慢跑,可以短跑,可以长跑,那么一个跑“Run”就可以对应4个实现手段。这是重载,特别注意的是重载只针对一个对象而言,与继承没有任何关系。

现实生活中还有一个很有趣的现象是:父亲是儿子的父亲,同样父亲也是爷爷的儿子,所以父亲这个对象它有时候也是儿子,那么还有可能是丈夫 。。。。。。,这表示一个对象可以有多种形态,这就是“多态”。

关于面向对象的基本概念再次总结如下:
1)        一切皆是对象
2)        类表示一类事物
3)        实例表示一类事物中明确指定的那个
4)        对象有方法和属性
5)        对象可以被继承
6)        一个对象可以有多种形态

下次课程将通过一些简单的基于Java实现的一些实例来具体实现上述理论)。

(声明:本文版权归作者个人所有,如需转载,请注明出处,如有需要,请联系QQ: 15903523 (强子))

[ 本帖最后由 dennyqiang 于 2010-3-11 14:27 编辑 ]

henry@test 发表于 2010-3-13 01:12:36

好贴要顶!

anyfrecom 发表于 2010-3-15 10:07:12

清晰明了、很容易理解、继续跟进

helen56 发表于 2010-3-24 11:23:59

跟进。。。支持:)

mr_tank 发表于 2010-4-17 16:47:07

呵呵,回顾了一遍面向对象,还好,我没怎么忘。的确,就是因为面向对象,我才爱上了Java开发

my2010mind 发表于 2010-6-1 17:43:26

清晰啊,好久没有看JAVA了,现在又拾起来了,:lol

hwm831002 发表于 2010-11-25 15:34:58

回复 1# dennyqiang


    形象生动,顶

nmicoehq 发表于 2010-12-4 09:13:11

路过..看贴回帖是一种美德..

















传奇**,新开传奇**,传奇**发布网,英雄合击传奇
英雄合击,英雄合击传奇,新开英雄合击,英雄合击发布网
连击传奇|新开连击**|连击传奇**|连击传奇发布网
1.76复古传奇,1.76精品传奇,1.76传奇**,1.76合击
1.80战神复古,1.80飞龙版本,1.80复古传奇,1.80合击
1.85狂雷版本,1.85炎龙元素,1.85传奇,1.85星王合击
1.950金牛无内功,1.950传奇私发布服,1.950传奇**
网通传奇**,新开网通传奇,网通传奇发布网,网通sf
传奇登陆器,万能登陆器,传奇**万能登陆器,xp13登陆器
传奇私发布服,传奇s发布网,传奇私发布网,新开发布网

anyfrecom 发表于 2011-2-18 13:40:53

学习了

cxwtomcat 发表于 2011-3-3 11:08:23

呵呵,回顾了一遍面向对象,还好,我没怎么忘。的确,就是因为面向对象,我才爱上了Java开发
mr_tank 发表于 2010-4-17 16:47 http://bbs.51testing.com/images/common/back.gif


    正是因为面向对象的思想和现实世界相仿,容易理解,我也爱上了java,看了很多java方面的书,只可惜工作中没怎么用过。
感谢楼主的热情奉献!

8346996 发表于 2012-10-19 15:37:02

不错,很好啊
页: [1]
查看完整版本: [连载] 精通RFT-02: 理解面向对象