手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

VB.Net中文教程(8) 对象(Object)基本概念

来源:互联网 作者:西部数码 时间:2008-04-10
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

其继承(Inherit) 了Tree类别之 3个特性。


图7 资料的继承

父类别Tree内之资料为子类别── FruitTree 和Bamboo都具有之共同特性。此为OOP 类别设计之基本原则。

5. 对象之行为

树林中的树会长高或变矮(遇台风等)﹐计算机中储存这些资料之对象必须随之改变﹐即对象内之资料会改变。果树的果实售价改变了﹐Fruit_tree类别之对象也须改变﹔这种对象内资料之变化是对象(Object)之「行为」(Behavior)。对象之基本行为包括﹕
(1)把资料送入对象并储存起来。
(2)改变对象内之资料。
(3)拿对象资料来做运算。
(4)从对象中送出资料。

例如﹕30公斤peach之总金额为何﹖此时﹐可拿对象a内之价格资料来做运算──

我们的目的是要拿对象 a中的价格资料(20元)和重量(30公斤)相乘﹐进而算出其总金额(600 元)。然而在OOP 的观念中﹐则必须将其解释为──「把 30 送进对象 a﹐在对象内部做相乘运算﹐然后把总金额 600送出来。」 其中﹐ 600是对象 a接受到外界的「讯息」(Message) 之后﹐才做出的反应﹐至于它的反应过程(乘法运算)则是在对象 a内部完成的。就如同一个电灯泡﹐当电流进入灯泡中﹐此灯泡会发出亮光。这是人们日常府拾可得之经验﹐如果计算机软件像灯泡一样一点就亮﹐不知可多得若干人的芳心呢﹗当你到台北火车站买车票时﹐只需把钱投入售票机中﹐经过一些处理之后﹐就有反应﹕把车票吐出来。


上述之实物对象(如自动售票机)接到讯息(Message) 时﹐其内部产生运作﹐并输出运作之结果。同样地﹐程序内之对象(Object)接到讯息时﹐其内部也对资料做运算﹐并输出运算结果。例如﹐想知道 peach树之高度为何﹖可将此讯息送进对象 a中﹐它会输出此树之高度。

对象对讯息会产生反应﹐但并非对任何讯息都有反应。例如﹕灯泡只会对电流有所反应──发光。自动售票机必须投入钱才会有反应──送出票来。如同一只猫﹐它对一个身边的馒头可能不会有反应﹐但对身旁的老鼠将会出现强烈之反应。
当我们使用灯泡或自动售票机时﹐能轻易学会其使用方法──知道输入什么讯息﹐也很清楚它们的反应。类似地﹐在OOP 程序中﹐你也能轻易学会对象(Object)的使用方法──知道输入什么讯息﹐及了解其反应。所以﹐使用程序内之对象﹐就像使用灯泡一样的简单方便。
换个角度来说﹐如果您是自动售票机之设计人﹐就须负责设计机内之处理过程(反应过程)﹐并使输入讯息更简单﹐而反应更清楚。同理﹐如果您是对象之设计师﹐就得负责设计对象内之运算过程(对讯息的反应过程)﹐并使输入讯息更简单﹐而反应更清楚。


6. 讯息与运算

如果您是手表之设计人﹐则需把电池放入手表中以提供电力。此时﹐您既使用现成之对象──电池﹐也创造新对象──手表。同样的情况﹐写计算机程序时﹐您经常是对象之使用人﹐亦为对象之设计人。因之﹐利用既有而完美之对象去创造更有用之对象﹐乃为OOP 程序员的天职。设计手表时﹐您心理必定很清楚这新手表会有何功能﹐譬如﹕如何设定时间、表示时间(指针或数字)等等。也就是说﹐您一定对这手表将呈现之「行为」(Behavior)有很清晰之构想。其行为包括﹕

(1) 它接受何种「讯息」(Message) ﹖例如﹕按键输入时间。
(2) 对讯息将会有何反应﹖例如﹕显示时间或日期等。

在我们周遭之实物世界中﹐各物体都有其固定之行为﹐所以我们能轻易掌握它﹐且觉得可爱。例如抽烟者常携带的打火机﹐只当用力按它时才有火苗出现﹔一颗手榴弹也在某种动作下﹐才会引爆﹐否则您一定不敢用打火机﹐面对敌人时也不敢用手榴弹。
设计程序中的对象时﹐也得设计它的「行为」﹐决定它将接受何种讯息﹐并且对讯息会产生何种反应。然因您是设计人﹐所以有项必须担任之工作──设计对象内部之运作﹐使它对讯息产生正确的反应。就像您组织手表内部之零件、打火机内部之结构以及手榴弹内部之引爆过程等等。这就是对象设计者之主要工作﹐其目的是﹕让别人有个好用而易于掌握之对象﹗
以前设计VB程序时﹐在我们心中ㄉ主角是「函数」(Function)或「子程序」(Subroutine)。现在就得把函数摆入对象中﹐让对象有所行为──对讯息有所反应。当您对所设计之对象的行为有清晰的构想之后﹐就自然知道应将那些函数置于对象中。就如同设计手表者依手表的功能决定应有那些零件一般。您去购买现成的零件、创造零件、选择适当的电池﹔接下来就将这些零件组织于手表内。写程序时﹐您使用既有之函数(例如﹕VB 已提供之函数)、创造新函数、也利用既有之对象﹔接下来就将这些函数和对象组织于新对象之中。
至于应如何组织这些函数﹖如何运用现成之对象﹖即为本书之主题了。现在请回到Tree类别之例吧﹗上节里﹐已经诞生对象 a如下﹕

接下来﹐可设计一个函数叫computeAmount(weight)﹐它能求算总金额。如果把这函数加入对象a 中﹐那么对象a 就有如下反应──

如果另设计个函数叫 inquireHeight() ﹐并将之加入对象 a中﹐则对象 a就能输出树之高度﹕

这如同设计灯泡者将钨丝及稀有气体放入其中﹐灯泡才会发光。至于灯泡之使用人就不必为灯泡内部的东西及运作过程而伤脑筋了﹔因之﹐人们会喜欢使用灯泡。灯泡把材料和反应之过程「封藏」(Encapsulate) 于灯泡内﹐您只需把电流(讯息)传入灯泡(对象)中﹐它就发出亮光(反应)。
写程序时﹐您把函数摆入对象中﹐对对象内之资料做运算﹐并且输出结果﹐此时函数内之指令担任这项运算工作。由于函数存于对象内﹐而资料之运算进行于函数内﹔所以﹐运算的过程(亦即反应的过程)就被「封藏」于对象之内。对象之使用人不必为这些函数之运算而伤脑筋﹐也就觉得对象是简单好用。如果计算机软件是由对象组织而成﹐人们就会觉得软件是既简单又好用。就像灯泡可装在车子上﹐也可装在房子内﹐裨构成更大之对象(车子、房子都是对象)。此程序设计观念﹐就称为「对象导向程序设计」。
假设您已把computeAmount(weight)及inquireHeight()两个函数加入对象 a中﹐就可把讯息送给对象a ﹐指令可写为﹕

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!