物件導向程式設計入門(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:無參數建構式

Public Class OOP

  Sub New()
  'Do Something ...
  End Sub

End Class

範例2:參數建構式

Public Class OOP

  Sub New()
  'Do Something ...
  End Sub

  '參數建構式
  Sub New(ByVal name As String)
  'Do Something ...
  End Sub

End Class

範例3:多重參數建構式

Public Class OOP

  Sub New()
  'Do Something ...
  End Sub

  '處理整理的建構式
  Sub New(ByVal a As Integer, ByVal b As Integer)
  
  End Sub
  '處理浮點數的建構式
  Sub New(ByVal a As Double, ByVal b As Double)
  
  End Sub

End Class

範例4:Me關鍵字

Public Class OOP

Public Hour As Integer

  ''' <summary>
  ''' 在函式中會使用到Class變數Hour,但Class的Hour數變與函式參數Hour同名,所以必須使用Me關鍵字來需得Class變數Hour的值。
  ''' </summary>
  ''' <param name="Hour">函式區域變數</param>
  ''' <remarks></remarks>
  Public Sub HourTrans(ByVal Hour As Integer)
    Me.Hour = Hour
    'Do Something ...
  End Sub

End Class

範例5:方法多載

Public Class OOP

  '處理整數加法
  Public Function Add(ByVal a As Integer, ByVal b As Integer) As String
  'Do Integer Add
  End Function

  '處理浮點數加法
  Public Function Add(ByVal a As Double, ByVal b As Double) As String
  'Do Double Add
  End Function

End Class

範例6:共用成員

Public Class OOP

  Public Shared dayhour As Integer = 24
  Public Shared Function HourTrans(ByVal hour As Integer) As String
  'Do Something ...
  End Function

End Class
在程式碼中:
Public Class _Default
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim resultHour As String
    '直接使用Class名稱(OOP)來引用方法
    resultHour = OOP.HourTrans(16)
  End Sub
End Class

2 則留言:

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

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

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

    回覆刪除

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