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] |