打印本文 打印本文 关闭窗口 关闭窗口
VB.Net中文教程(8) 对象(Object)基本概念
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3748  更新时间:2009/4/23 19:01:09  文章录入:mintao  责任编辑:mintao
bsp; Inherits System.WinForms.Form
   
    Public Sub New()
        MyBase.New()
        Form1 = Me
        ''''This call is required by the Win Form Designer.
        InitializeComponent()
        ''''TODO: Add any initialization after the InitializeComponent() call
    End Sub
    ''''Form overrides dispose to clean up the component list.
    Public Overrides Sub Dispose()
        MyBase.Dispose()
        components.Dispose()
    End Sub
#Region " Windows Form Designer generated code "
     .......
#End Region
    Protected Sub Form1_Click(ByVal sender As Object,
                            ByVal e As System.EventArgs)
        Dim a As New FruitTree()
        Dim k As New FruitTree()
        a.SetPrice(20)
        a.SetHeight(2.1)
        k.SetPrice(10)
        k.SetHeight(0.5)
        Dim amount As Double
        Dim height As Double
       
        amount = a.computeAmount(25)
        height = a.inquireHeight()
        Messagebox.Show(str(amount) + "元 ,  " + str(height) + "公尺", "结果")
        amount = k.computeAmount(25)
        height = k.inquireHeight()
        Messagebox.Show(str(amount) + "元 ,  " + str(height) + "公尺", "结果")
    End Sub
End Class

当您把这程序输入计算机﹐并利用VB执行它﹐则计算机输出结果如下﹕

           500元,   2.1公尺
           250元,    .5公尺

请注意﹕这程序中有数个public专用字﹐此刻您不要为它们而伤脑筋﹐此后各章将详细说明之。现在您必须了解之重点是﹕

(1) 如何表明您所设计之类别﹐以及类别之间的父子关系。
    例如﹐类别关系是﹕
                  
              
    在程序里﹐从上层类别开始﹐依照由上而下之顺序逐一把各类别叙述清楚。各类别所属之数据项(变量)﹐也得说明清楚。

(2) 如何把函数加入类别中﹐以支持对象之行为﹐使对象能接受讯息、进行运算并输出结果。
   例如﹕FruitTree已加入 4 个函数﹐使得Fruit_tree类别之对象能接受并处理 4种讯息。

  
为了让对象能接受并处理讯息﹐必须把适当的函数加入类别中﹔因之﹐类别内含有两种重要成份──

                 1.数据项
                 2.函数

我们称这数据项为类别之「资料成员」(Data Member) ﹔并称这函数为类别之「成员函数」(Member Function)。例如:FruitTree类别含两个资料成员──

                  成熟月份
                  价格

FruitTree类别含 4个成员函数──
                
                 computeAmount()
                 inquireHeight()
                 SetPrice()
                 SetHeight()

(3) 如何产生对象。
如果您把类别视为一种资料型态(Data Type )﹐那就轻而易举了。想产生两个FruitTree类别之对象﹐就写指令如下﹕

              Dim a As New FruitTree()
              Dim b As New FruitTree()

 能以两种方法了解上述之指令﹕

1. 把FruitTree视为类别﹐则a, k就是对象﹔则此指令就宣告两个「对象」(Object)。
2. 把FruitTtree视为一种资料型态(Data Type) ﹐则 a , k 就是FruitTree型态之变量﹔则此指令宣告两个「变量」(Variable)。

综合上述两种看法﹐您可认为﹕FruitTtree是一种「型态」﹐a 和k 是「变量」﹐而类别型态之变量就是「对象」(Object)。

(4) 对象中含有那些资料。
    类别的父子关系﹐决定了对象之「继承」(Inheritance) 关系﹐也决定对象中所含有之数据项。例如﹕FruitTree是Tree之「子类别」(Subclass)﹐则FruitTree类别之对象继承Tree类别内之数据项。所以指令──

                 Dim a As New FruitTree()

   产生了对象 a﹐它含有 FruitTree 类别内之「资料成员」﹐也含有Tree类别内之「资料成员」。

          
               
(5) 如何把讯息送给对象。
    讯息与对象之关系可表示如下﹕

             
                                  
    程序的写法为﹕

              
   例如﹕  a.SetPrice( 20.0 )
   及      a.SetHeight( 2.1 )

   当计算机执行了这两个指令﹐亦即对象 a接受到这两个讯息﹐则 a之内容会有所变化﹔对象内部之变化也是一种行为﹐是对象对讯息之反应。此时Tree类别的height值为 2.1﹐price 值为 20.0 。如果想把传回之结果存入变量中﹐程序写法为﹕
            
                 
例如﹕
               

       当计算机执行这两个指令﹐即把此二讯息送给对象 a﹐则 a会传回值﹐并经由 "="运算而存入变量中。于是amount值为 500元﹐而height值为 2.10 公尺。


习题
[1]「马上相逢无纸笔﹐凭君传语报平安」在此句话中﹐牵涉到几个「人」对象呢﹖其传递了什么讯息﹖其讯息对这些「人」对象之行为会有何影响呢﹖
[2] 林老师请小芳打电话向小美说﹕「祝你生日快乐」。可表示如下﹕
            小美. 打电话(「祝您生日快乐」)
     或者   小芳. 请打电话(小美﹐「祝您生日快乐」)
     或者   林老师. 打电话(小芳﹐小美﹐「祝您生日快乐」)
     何者较合理﹖理由何在﹖
[3] 有对男女朋友﹐互相询问对方的母亲的生日﹐该如何表达其讯息传递情形呢﹖
[4] 当您要求银行人员替您算出某帐户本月的利息时﹐其讯息可表示为﹕
          银行人员. 计算利息(帐户)
  或者    帐户. 计算利息()
  何者较合理呢﹖

 

 


 

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

打印本文 打印本文 关闭窗口 关闭窗口