2011年軟考系統分析師整理資料:面向對象(8)
十、面向對象的例子
這里我們將通過一個具體的實例來認識它的封裝性! 在面向對象方法
中,對象可看成是屬性(數據)以及這些屬性上的專用操作的封裝體。
封裝是一種信息屏蔽技術,封裝的目的是使對象的定義和實現分離。
Step1:
1.1新建一個工程命名為VBOOP;
1.2單擊工程菜單,選擇添加類模塊后并單擊確定按鈕;
1.3在其屬性窗口中將類的名稱改為TScore。
Step2:編輯TScore類模塊代碼
2.1.這里為TScore類定義四個私有(Private)變量,它們只能在本模塊
中是可見的,即類的一些成員被隱藏起來,用戶只能通過屬性過程
或函數等方法來訪問,從而對對象進行封裝。
定義變量的基本語法:
Private/Publc <變量名> As <變量類型>
代碼部分:
Private FName As String\'學生的姓名
Private FMath As Single\'數學成績
Private FEnglish As Single \'英語成績
2.2.為TScore類定義六個公用(Public)的屬性(Property)過程和一
個計算總分的方法函數。
定義方法的基本語法:
Private/Publc Property Get <讀屬性過程名> As <屬性返回值類型>;
Private/Public Property Let <寫屬性過程名>(ByVal 變量名 As 返回值類型);
Private/Publc Function <函數名> As <函數返回值類型>;
get: 將模塊中的私有變量的值賦給屬性過程,通常稱為讀;
Let: 通過屬性過程給模塊中的私有變量值賦,通常稱為寫。
代碼部分:
Public Property Get GetName() As String
GetName = FName
End Property
Public Property Let SetName(ByVal Name As String)
FName = Name
End Property
Public Property Get GetMath() As Single
GetMath = FMath
End Property
Public Property Let SetMath(ByVal Math As Single)
FMath = Math
End Property
Public Property Get GetEnglish() As Single
GetEnglish = FEnglish
End Property
Public Property Let SetEnglish(ByVal English As Single)
FEnglish = English
End Property
Public Function Total() As Single\'計算總成績函數
Total = GetMath + GetEnglish
End Function
Step3:回到Form1窗口,在窗口上添加12個控件:
3.1添加5個文本框txtName、txtMath、txtEN、txtTotal;
3.2添加5個標簽labName、labMath、labEN、labTotal
其Caption屬性分別為姓名、數學、英語、總成績;
3.3添加2個命令按鈕ComSetValues、ComSearch
其Caption屬性分別為賦值、查詢。
Step4:編輯窗口事件
4.1.構造Score對象及查詢關鍵字SearchKey。在面向對象方法
中,我們可以這樣說定義類就是定義數據類型,而聲明對
象就是聲明變量。也就是說,對象實際上就是變量。
Dim Score As New TScore
Dim SearchKey As String
4.2.給模塊中四個私有變量賦值的單擊事件
Private Sub ComSetValues_Click()
If Val(txtMath.Text) >= 0 And Val(txtMath.Text) <= 100
And Val(txtEN.Text) >= 0 And Val(txtEN.Text) <= 100
Then
With Score
.SetName = txtName.Text
.SetMath = Val(txtMath.Text)
.SetEnglish = Val(txtEN.Text)
End With
txtName.Text = \"\"
txtMath.Text = \"\"
txtEN.Text = \"\"
Print \"姓名:\" & Score.GetName & \"數學:\" & Score.GetMath & \"英語:\" & Score.GetEnglish
Else
MsgBox \"成績的取值范圍:[0,100]\", 64, \"提示\"
End If
End Sub
【編輯推薦】