物件導向程式設計入門(Object-Oriented Programming,OOP) for Visual Basic(二)--物件建立

  1. Class
    Class是用來封裝功能程式碼的邏輯單位。
  2. 建立Class的Instance
    dim MyObject as New OOP

    • MyObject是你所要建立的Instance
    • New關鍵字,指定要建立的Class名稱
    流程:

    1. 配置RAM空間給MyObject
    2. 建立一個OOP的Object(物件的實體)
    3. 將MyObject參考物件實體所在位置的RAM Address
    在我學習物件導向的過程裡,Class→Object(Instance)想了很久才想通,一般都是用車子之類當例子,但我想用自身實例最有感覺,我的第二個小孩快到出了,你這樣想,人類男性的精子與女性的卵子就是Class,Class就是基因,基因裡有許許多多密碼(資料成員、方法、屬性、建構子),而精子與卵子結合後就會產生Instance(New),Instance就是實體,是一個活泩生的實體,基因你看不到、摸不到,未結合前我們無法使用它,一但結合後才能產生一個有血有肉的實體,我們才能教育他,在基因裡封裝了許多密碼,也就是會讓你小孩出生後會產生「眼睛像爸爸」「臉像媽媽」…這叫做繼承,這些密碼除了繼承了父母親的基因之外,到了小孩的身上,小孩本身還會自己覆寫這些基因,所以才會有青出於藍勝於藍。
  3. 建構式"參數"與"多重"建構式

    • 無參數(參考範例1)
    • 參數(參考範例2)
    • 多重建構式(參考範例3)
      在同一Class可新增多個建構式來處理不同Data Type(資料型別)的問題,例如一個處理Integer,一個處理Double,在你初始化時,依你傳入的參數型別來呼叫對應的建構式。
  4. 屬性(Property)
    屬性讓引用Class的程式碼於存取Class內部資料成員時,受到進一步的控管。一個設計良好的Class,變數通常被宣告為Private,被限定為只能在定義它的Class內部作存取,然後藉由使用屬性成員公開資料成員值。
  5. Me關鍵字(參考範例4)
    Me讓我們用來區別是Class變數或區域變數,Me能讓你取得Class變數。
  6. 方法多載(參考範例5)
    在同一Class中,你可以使用同一名稱為一個以上的方法命名,只要方法成員所接受的參數不同即可。
  7. 共用(靜態)成員(參考範例6)
    共用成員以物件導向實作"全域變數",不需要產生Class Instance,即不需要透過New的程式(dim MyObject as New OOP),即可直接引用。共用成員須使用Shared關鍵字宣告,一但宣告為共用成員,可直接透過點(.)運算子直接取用。共用成員並不會隨Object建立有不同的值,固因只有固定不隨物件Instance改變的資料成員,才考慮建立為共同成員。

範例1:無參數建構式

1Public Class OOP
2 
3  Sub New()
4  'Do Something ...
5  End Sub
6 
7End Class

範例2:參數建構式

01Public Class OOP
02 
03  Sub New()
04  'Do Something ...
05  End Sub
06 
07  '參數建構式
08  Sub New(ByVal name As String)
09  'Do Something ...
10  End Sub
11 
12End Class

範例3:多重參數建構式

01Public Class OOP
02 
03  Sub New()
04  'Do Something ...
05  End Sub
06 
07  '處理整理的建構式
08  Sub New(ByVal a As Integer, ByVal b As Integer)
09   
10  End Sub
11  '處理浮點數的建構式
12  Sub New(ByVal a As Double, ByVal b As Double)
13   
14  End Sub
15 
16End Class

範例4:Me關鍵字

01Public Class OOP
02 
03Public Hour As Integer
04 
05  ''' <summary>
06  ''' 在函式中會使用到Class變數Hour,但Class的Hour數變與函式參數Hour同名,所以必須使用Me關鍵字來需得Class變數Hour的值。
07  ''' </summary>
08  ''' <param name="Hour">函式區域變數</param>
09  ''' <remarks></remarks>
10  Public Sub HourTrans(ByVal Hour As Integer)
11    Me.Hour = Hour
12    'Do Something ...
13  End Sub
14 
15End Class

範例5:方法多載

01Public Class OOP
02 
03  '處理整數加法
04  Public Function Add(ByVal a As Integer, ByVal b As Integer) As String
05  'Do Integer Add
06  End Function
07 
08  '處理浮點數加法
09  Public Function Add(ByVal a As Double, ByVal b As Double) As String
10  'Do Double Add
11  End Function
12 
13End Class

範例6:共用成員

1Public Class OOP
2 
3  Public Shared dayhour As Integer = 24
4  Public Shared Function HourTrans(ByVal hour As Integer) As String
5  'Do Something ...
6  End Function
7 
8End Class
在程式碼中:
1Public Class _Default
2  Inherits System.Web.UI.Page
3 
4  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
5    Dim resultHour As String
6    '直接使用Class名稱(OOP)來引用方法
7    resultHour = OOP.HourTrans(16)
8  End Sub
9End Class

2 則留言:

  1. 你好:
    最近才要學習vb,可以之前已經用Dos 寫程式幾拾年了,那是因為一直抗拒學習,現在因桌邊買不到了,定址受限,不得不開始學習,請你告訴我那裡可以找到介紹vb物件的書?例如有没有書在介紹MsgBox(),InputBox(),add(),...等等,我覺得有無限多的這種東西,如何找到他們?

    回覆刪除
  2. 1. 書局;
    2. MSDN;
    3. books, kingstone;
    4. Internet (Blog ...)

    我除了大學時是上課學習,畢業後都是自修,以上是我自修的資料來源。提供給你參考。

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。