接下來的幾篇都不會太大,因為物件導向本身是個思考的過程,所以小小一篇有利吸收,一次吸收一點點,慢慢了解物件導向的思考過程,進而加強整體程式設計的實力。
- 類別(Class)
Class有同類的意思。 - 物件(Object)
Object都是參考某個Class類別產生Instance(實例、實體),所以Class可視為Object的"樣板"或"藍圖"。 - 設計類別
一個類別裡包含四大元素:
- 資料成員、資料變數、欄位(Field)成員;
為Class中所定義各種Data Type變數。名稱很多種,簡單記成Class裡的"變數"就好了。 - 方法(函式、副程式);
資料成員用來記錄資料,但如果要行進資料處理或資料邏輯判斷,則要用方法。
- 副程式(Sub),執行後無回傳值。
- 函式(Function),執行後可將結果傳回(return)。
- 屬性;
用來存取Class資料成員的值。它提供外部程式存取Class內部資料成員的彈性,又可以在存取同時加入邏輯判斷。 - 建構子;
在Object建立時(初始化)執行一段程式。
- 資料成員、資料變數、欄位(Field)成員;
- 修飾元
- Public
共用成員,Class內外程式碼都可以存取。 - Private
私有成員,只有成員宣告範圍內的程式碼才能存取(預設)。
即這個Class.vb程式碼(此物件本身)內部才能存取。 - Protected
介於Public與Private之間,只有宣告範圍及繼承架構下的Class才能引用。
即這個Class.vb程式碼(此物件本身)內部及繼承此Class.vb物件的物件才能存取。
- Public
屬性範例
我們Class中放一個Private _birthday As Date,基本上是可以存放"任何時間",但Birthday是不可能發生在未來。Public Class OOP Private _birthday As Date ''' <summary> ''' 生日,但生日無法設定在未來。 ''' </summary> ''' <value></value> ''' <returns>日期(生日)</returns> ''' <remarks>設定(Set)時必須判斷是否小於現在(Now)</remarks> Public Property Birthday() As Date Get Return _birthday End Get Set(ByVal value As Date) If value <= Now Then _birthday = value Else _birthday = Now.Date End If End Set End Property End Class如果我們想在加一個年紀屬性呢?分析一下,你會發現年記會隨時間遞增不固定,而且無法設定,必須從生日計算。
Public Class OOP Private _birthday As Date ''' <summary> ''' 生日,但生日無法設定在未來。 ''' </summary> ''' <value></value> ''' <returns>日期(生日)</returns> ''' <remarks>設定(Set)時必須判斷是否小於現在(Now)</remarks> Public Property Birthday() As Date Get Return _birthday End Get Set(ByVal value As Date) If value <= Now Then _birthday = value Else _birthday = Now.Date End If End Set End Property ''' <summary> ''' 年紀會隨時間遞增,不固定,可從Birthday推得。 ''' </summary> ''' <value></value> ''' <returns>String(年紀)</returns> ''' <remarks></remarks> Public ReadOnly Property Age() As String Get Return (Now.Year - _birthday.Year + 1).ToString() End Get End Property End Class
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。