转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB.Net中文教程(8) 对象(Object)基本概念         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2992 更新时间:2009/4/23 19:01:09
bsp;                  Dim x As New Tree()

此时计算机就诞生对象 x。x 能储存此树之资料如下﹕
                  
                   
如果您想记录别棵树之资料﹐可再宣告Tree类别之对象如下﹕
                Dim y As New Tree()

对象 y就可储存此树的资料了。实物上之关系﹕
                树林 <----> 树

树林是一个集合(Set),一棵树是集合里的元素。其表现于计算机程序上是﹕
                类别 <----> 对象

类别是一个集合,一个对象是集合里的元素。
    此为 OOP之基本观念。类别设计之优劣常决定软件之生命和价值﹐好的设计其软件寿命源源流长﹐价值连城。类别之设计并非到此为止﹐还要继续做一项重要工作──分类(Classification)﹐亦即寻找「子类别」(Subclass)。例如﹕上述树林中的树若可分为两种──果树与竹子﹐则「树林」类别可分为两个子类别──「果树」与「竹子」。
                   
  
                     图5  类别之细分(Refine)

此为实物上之类别关系。程序中的类别关系必须和实物上的情况相呼应。程序中的类别宣告格式为﹕

                Class Tree
                      品种
                      年龄
                      高度
                End Class
               
                Class FruitTree
                     Inherits Tree
                       成熟月份
                       价格
                End Class

                Class Bamboo
                     Inherits Tree
                       用途
                End Class

其中﹐FruitTtree及Bamboo是Tree之子类别(Subclass)﹔而Tree是FruitTree及Bamboo之父类别 (Super Class)。于程序中﹐其关系表示如下──

                 Class 类别
                    Inherits 父类别

    FruitTree类别中含有两项新特性──「成熟月份」及「价格」。这告诉计算机说﹕对于果树﹐必须多储存两项资料。这两项资料是果树才有的﹐竹子就没有。Bamboo类别中含有一项新特性﹐这告诉计算机说﹕对于竹子﹐必须多储存一项资料──「用途」。这是竹子才有的资料﹐果树则无。例如﹕有一棵果树﹐其资料为﹕

                    品种﹕peach
                    年龄﹕8 年
                    高度﹕2.1 公尺
                    成熟月份﹕3 月
                    价格﹕20  元

在计算机中﹐必须宣告FruitTree类别之对象来储存这些资料。欲产生此对象﹐程序可写为﹕
                  Dim a As New FruitTree()

此时计算机就产生一个FruitTree类别之对象﹐叫 a。它包含5项资料──

                    
其中包含了Tree类别内之 3项资料以及FruitTree类别专有之两项资料。因为Tree为FruitTree之父类别﹐所以FruitTree「继承」(Inherit) 其父类别Tree的 3个特性。

 
                      图 6  资料的继承

同理﹐如果有一棵竹子﹐其资料为﹕

                品种﹕green
                年龄﹕2 年
                高度﹕10.0  公尺
                用途﹕chopsticks

在计算机中﹐必须宣告Bamboo类别的对象来储存这些资料。欲产生此对象﹐程序可写为﹕  Dim b As New Bamboo()
此时﹐计算机就诞生一个Bamboo类别之对象 b。它可储存 4项资料──

                 
其继承(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 ﹐指令可写为﹕
                a.computeAmount( 30 )

这意思是﹕把讯息──computeAmount(30)送给对象 a。此时对象a 内部之computeAmount()函数就会进行运算(把 30 和 20 乘起来)﹐并且送出总金额 600元。您可输入另一讯息﹐指令为﹕
                  
此时﹐对象 a内之inquireHeight()函数就会进行运算(读取高度── 2.1)并且送出该树之高度﹐亦即 2.1公尺。看看较完整的VB程序吧﹗

Protedted Sub Form1_Click( .... )

上一页  [1] [2] [3] [4]  下一页


[系统软件]14.5.10.1 Object creation expressions  [Delphi程序]The Delphi Object Model (PART III)
[Delphi程序]The Delphi Object Model (PART II)  [Delphi程序]The Delphi Object Model (PART I)
[Delphi程序]Object Pascal:从对象指针谈起  [Delphi程序]Object Pascal Style Guide
[Delphi程序]Object TreeView简要说明  [Delphi程序]Object Pascal中String类型的内幕探讨
[Delphi程序]delphi学习笔记(2)-object pascal语言的语句  [Delphi程序]delphi学习笔记(1)-object pascal语言的数据类…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台