十、面向对象的例子 这里我们将通过一个具体的实例来认识它的封装性! 在面向对象方法
8 O- _4 z. Z( z, M 中,对象可看成是属性(数据)以及这些属性上的专用操作的封装体。 l4 h# d m$ Z5 u8 l; k
封装是一种信息屏蔽技术,封装的目的是使对象的定义和实现分离。" M/ k: B+ Q$ t# W5 ?
Step1:
8 n+ n; L* t# m+ G' [4 p: R 1.1新建一个工程命名为VBOOP;' }% b. u& \4 C
1.2单击工程菜单,选择添加类模块后并单击确定按钮;1 [9 g. W/ h& a5 I0 m
1.3在其属性窗口中将类的名称改为TScore。) p$ ?+ h9 ^: ~# H' P
Step2:编辑TScore类模块代码
; R% m% [8 V; m9 l/ w. H 2.1.这里为TScore类定义四个私有(Private)变量,它们只能在本模块- b8 r& ~9 y; r4 i; v- J
中是可见的,即类的一些成员被隐藏起来,用户只能通过属性过程& D+ O. u0 X2 R( B
或函数等方法来访问,从而对对象进行封装。 |1 P \& [7 s1 i) M) A
定义变量的基本语法:
- m }( `0 V1 q3 y* w Private/Publc As
4 v$ V, V% E' i8 X/ Z# k 代码部分:6 ?) U, i8 i4 y3 N. Q* g
Private FName As String\'学生的姓名. ~" h& p+ Q% a* r# d
Private FMath As Single\'数学成绩& |; }# n6 D( p, Z; g
Private FEnglish As Single \'英语成绩
- G) C4 z& j/ f/ V* I 2.2.为TScore类定义六个公用(Public)的属性(Property)过程和一2 H1 F6 e& ^7 j. `6 t \& Q
个计算总分的方法函数。
0 j1 {- a3 F j+ c 定义方法的基本语法:
/ {; W- z3 g6 L- a) h- T( Q Private/Publc Property Get As ; [( E' X: W4 A8 F6 B/ K" e
Private/Public Property Let (ByVal 变量名 As 返回值类型);' f. U8 ^/ x8 o6 r+ u+ i
Private/Publc Function As ;
, r. g v! D$ j" A get: 将模块中的私有变量的值赋给属性过程,通常称为读;) y) s# r2 y5 n/ U9 D& z( W( @
Let: 通过属性过程给模块中的私有变量值赋,通常称为写。" b, x1 G' p# v) r9 y* R0 t6 Q9 c; D
代码部分:
( E" ?. L1 T2 V+ W% D0 } Public Property Get GetName() As String
+ @! P% e3 d! S8 ~" d GetName = FName6 K$ B) l6 p" J* \
End Property
3 g9 M0 C1 V5 t) _6 m Public Property Let SetName(ByVal Name As String)- j& B& f% o6 h5 v) F0 K
FName = Name
+ F; ^9 _" O5 p6 X. J/ n( @ End Property
# H' B3 a; I$ U4 I; v5 Z Public Property Get GetMath() As Single" ?% j+ T3 `4 f9 L2 ^+ E& ]
GetMath = FMath7 d! j, u# {: ]/ k) e$ O
End Property3 P5 }0 U: \& @4 }( P! ?- [
Public Property Let SetMath(ByVal Math As Single). k8 j! ^* A+ ~6 |" a
FMath = Math
( p4 C5 n6 R J7 t7 w' \" K: ~ End Property/ e. u( g6 U4 h. B
Public Property Get GetEnglish() As Single4 a) @3 ^. M, T7 P; X' \
GetEnglish = FEnglish
: i& i0 b" u3 o5 g6 W, I' n. K End Property
, ], N* m! u# f/ p% { Public Property Let SetEnglish(ByVal English As Single)
+ N/ d7 a& f8 S$ b FEnglish = English) \6 G9 T. L `3 ~$ t( n* W( w8 L
End Property& x. D. ~* J; u; t$ z) h
Public Function Total() As Single\'计算总成绩函数! F1 @" q. {) {3 g+ F# u
Total = GetMath + GetEnglish
/ l( Y# h1 H2 o* O& ] End Function
_5 `0 e1 h( @7 U$ p9 e, @1 F Step3:回到Form1窗口,在窗口上添加12个控件: |