Tải bản đầy đủ (.pdf) (160 trang)

Ngôn ngữ lập trình Visual Basic 2010 - 2011 - Tập 2: Phần 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.29 MB, 160 trang )

144

C h ư ơ n g 16: Thừa kế các form v à tạo các c la s s c ơ sỏ

Thừa kế các form và tạo cỏc
class cơ sở

Sau k h i hoàn th àn h chương này, bạn s ẽ có thê;
B Stc dụng Inheritance Picker đ ể kết nhập các /o rm h iện có vào các
project
M Tạo các class cơ sở riêng của bạn với các thiiộc linh và các phương

thức tùy ỷ.
Ết D ân xiiấ tcá ccla ss mới rừcác class cơ sở bảng việc sứ dụng câu ìộnh
ỉnherits.

ộ t kỹ n ăn g quan trọ n g cho hầu n h ư t ấ t cả n h à p h á t triển
p h ầ n m ềm chuyên nghiệp h iện nay là k h ả n ăn g hiểu và tậ n
dụng các kỹ th u ậ t lập trìn h hướng đối tượng (OOP). Các kỹ
th u ậ t được k ế t hợp với OOP đã đ ạ t được sự tă n g cường m ạ n h lên tro n g
phiên b ả n g ần đây của M icrosoít Visual Basic bao gồm các tín h n ã n g hỗ trợ
sự thừ a k ế (inheritance), m ột cơ cấu n h ằm cho phép m ộ t class th u n h ận
giao diện và các đặc điểm h àn h vi của m ột class khác.

M

Sự thừ a k ế tro n g Visual Basic 2010 được làm cho dễ d àn g b ằn g cả ngôn
ngữ và các công cụ Visual Basic bên tro n g Im teg rated D evelopm ent Envi-


C h ư đ n g 16: Thừa kê' các torm và tạo các class cd sò________________________ 1 4 5



ro n m e n t (IDE). Điều này có nghĩa là b ạn có th ể xây dựng m ột form trong
môi trường p h á t triể n và chuyển các đặc điểm và chức n ăn g của nó đến các
form khác. N gồi ra b ạn có th ể xây dựng các class riên g của b ạn và thừa
k ế các thuộc tín h , phương thức và sự kiện từ chúng,
T ro n g chương n ày b ạn sẽ th ử nghiệm với cả h ai loại th ừ a kế. B ạn sẽ
học cách tích hợp các form h iện có vào các project b ằn g việc sử dụng hộp
th o ạ i In h e rita n c e P icker vôn là m ột p h ần của M icrosoft V isual Studio
2010 và b ạn sẽ học cách tạo các class riêng của b ạn và d ẫn x u ất các class
mới từ chúng b ằn g việc sử dụng câu lện h In h e rits. Với nhữ ng kỹ n ăn g này
b ạ n sẽ có th ể tậ n dụng nhiều form và các thường tr ìn h v iế t m ã m à b ạn đã
p h á t triể n , làm cho việc lập trìn h Visual B asic trở th à n h m ộ t nổ lực
n h a n h hơn v à lin h h o ạ t hơn. N hững cải tiế n n ày sẽ giúp b ạn th iế t k ế
nhữ ng giao diện người dùng h ấp d ẫn m ột cách n h a n h chóng và sẽ mở rộng
công việc m à b ạn đả làm trong các project lập trìn h khác.

Thừa kế một form bằng việc sử dụng Inheritance Pỉcker
T rong cú p h áp OOP, sự thừa k ế (inheritance) có n g h ĩa là làm cho một
class n h ậ n các đối tượng, thuộc tín h , phương thức và nhữ ng thuộc tín h
k h ác của m ột class khác. N hư được dề cập tro n g p h ần "thêm các form mới
vào m ột chương trìn h " tro n g chương 14, Visual Basic đi qua tiế n trìn h này
thư ờ ng xun khi nó tạo m ột form mới tro n g mỏi trường p h á t triển . Form
đ ầ u t i é n t r o n g m ộ t p r o je c t ( F o r m l ) p h ụ th u ổ c v à o c la s s
System .W indow s.Form s.Form cho đ ịnh n g h ĩa của nó và các giá trị mặc
định. Thực t ế class này được n h ận dạng tro n g cửa sổ P ro p erties k h i bạn
chọn m ột form tro n g D esigner n h ư dược m inh họa tro n g ầ n h chụp m àn
h ìn h dưới đây:
- n X

P ro p íitie ỉ

F o rm ỉ $y5t«m.Wíndow5.Forms,Fofm

ẳ lỊiiỉ

Ị ;

M ặc đù b ạ n đã không n h ận ra, nhưng b ạn đã sử dụng sự th ừ a k ế trong
suô’t thờ i gian để định n g h ĩa các form W indows m à b ạn đã sử dụng các
ứng dụng V isual Basic. M ặc dù các form h iện có cũng có th ể được th ừ a k ế
b ằn g việc sử dụng m ã chương trìn h , nhưng những người th iế t k ế Visual
Studio đã xem tác vụ n ày quan trọ n g đến nỗi họ đă th iế t k ế m ột hộp thoại
đặc b iệ t tro n g môi trường p h á t triể n để làm dễ d àn g tiế n trìn h này. Hộp
th o ạ i này được gọi là In h eritan ce Picker và nó được tru y cập th ô n g qua


1 4 6 ________________________ C h ư ờ n g 16: Thừa kê' các form và tạo các cla ss co sỏ

lện h Add N ew Item trê n m enu Project. T rong bài tậ p sau đây b ạ n sẽ sử
dụng In h eritan c e P icker để tạo m ột bản sao th ứ h ai của m ột hộp thoại
tro n g m ột project,
T h ừ a

k ế m ột h ộ p

t h o ạ i đ ơ n g iả n

1. Khởi động V is u a l S tu d io và tạo m ột project Visual B asic Windows Form s Application mới có tê n là M y F o rm I n h e r i t a n c e .
2. H iển th ị project trê n form, và sau đó sử dụng control B utton để
th ê m h a i đối tượng n ú t ở cuôi form được đ ặ t cạnh nhau.
3. T hay đổi các thuộc tín h T ext của các n ú t B u tto n l và B utton2 th à n h

'OK" và "Cancel" .
4. N h ấp dôi OK để h iển th ị sự kiện B uttonl_C lick tro n g Code Editor.
5. Gõ n h ập cầu lệ n h chương trìn h sau đây:
MsgBoxCYou clicked OK")

6. H iển th ị lại form, n h ấp đơi nUt Cancel và sau đó gõ n h ậ p câu lệnh
chương trìn h sau đây trong th ủ tục sự k iện Button2_Click"
MsgBox("You cticked Cancel")

7. H iển th ị lại form và xác lập thuộc tín h T ext của form san g "Dialog
Box".
Bây giờ b ạn có m ột form đơn giản m à có th ể được sử dụng làm cơ sở
cho m ột hộp thoại tro n g m ột chương trìn h . Với m ột số tùy biến, bạn
có th ể sử dụng form cơ sở n ày dể xử lý m ột sô' tác vụ - b ạn chỉ cần
th ê m các control d àn h riên g cho các ứng dụng riên g lẻ của bạn.
8. N hâ'p n ú t S a v e A ll để lưu p ro ject và sau đó xác đ ịn h folder
C :\V b lO sb s\C h a p l6 làm vị trí.
Bây giờ b ạn sẽ thực h àn h th ừ a k ế form. Bước đầu tiê n tro n g tiến
trìn h n ày là xây dựng hoặc biên dịch (compile) project bởi vì b ạn có
th ể th ừ a k ế chỉ các form m à b ạn đã biên dịch th à n h các file .exe
hoặc -dll. Mỗi lần form cơ sở được tá i biên dịch, các th a y đổi được
thực h iện đôl với form cơ sở được chuyển đ ến form d ẫn x u ất (được
th ừ a kế).
9. N h ấp lệ n h B u ỉld M y F o rm In h eritan ce trê n m enu Builđ.
Visual B asic biên địch project và tạo m ột file .exe.


147

C h ư ơ n g 16: Thừa kế các form và tạo các class cơ sở


10. N hâp lện h A d d N e w ỉte m trê n menu P roject và sau đó nhấp
h ạng mục Windows Form s nằm ở p h ía b ên tr á i hộp th o ại và Inherited Form ở giữa hộp thoại.
Hộp thoại Ađd New Item trô n g giông như được m in h họa tro n g ản h
chụp m àn h ìn h dưới đây:
, - '

Add S rv te m ã Fonn nhb e U l le d T e » p t « t 0

4

S c rtb /Ị

C a m m o n (tcm t

.t
Cuttom Contrũl

Cod«

Comtrion ỉiemi

T íí* * : C o r» » íT io n lt* m ỉ

A n«w f b

ũiU

ỉ t «d ori


txiiTiriặ VVindữm

Fm
C o m rrơ rt k e /rn

íe rm i

(

Ệ^l9t«rfe>m

c « m f r i ộ n fte < n j

Rrpfi>t)n9

Ccmmsn
•A
M

'

1 ^

C o m m d n h e rrn

Comm6f^ỉtefTi»

V .;ị


3
1

ỉnhenud Fom

Cflmm««ĨUfrn

Inhtriled UiSrConvol

Cerntroriỉumỉ

Permỉ.vb

ỀOi

I

V is u a l Basic 2010 Express khơng có tem plate In h e rite d Form . N ếu

bạn đ a n g m uôn n â n g cấp lên Visual Studio P ro íessio n al, điều này
có th ể cu n g c ấp m ột s ố tem plate loại này. (Nói chung Professional
và c ác ph iên bản full khác cù a V isual Studio cu n g c âp th ê m m ộ t sô'
te m p la te hữu dụng). V ào lúc này có th ể b ạn m u ô n đơn g iản x e m lại
p ro je c t m ẫu đã được đ ậ t trên C D Practice Files và k iểm tra mã.
T u y n h iê n có m ột giải ph á p m à bạn có thể thử đ ể tạo bằn g lay mộl
fo rm th ừ a k ế . Đ ể th ử nớ, th ê m m ộ t W in d o w s F o rm có tê n là
Fo rm 2 .v b v à o p ro ject Ihay VI In h critcd Form . ớ p h ần trên cùng
củ a Solution E xplorer, nh ấp nút c h u y ển đổi S ho w All Files. M ô
rộng F orm 2 .v b và sau đó mở F o rm 2,D esign er.vb . T h a y đổi "Inhcrits
S y s te m .W in d o w .s .F o rm s .F o rm "

th á n h
" In h e r its
M y _ F o rm _ In h e rita n c e .F o rm l" , N h ấ p S a v e AU, đ ó n g
Fo rm 2 .D esig n e r.v b và sau đó nhấp lại S h ow All Files đ ể là m ẩn
c á c file n â n g cao. V ì bạn đã thực h iện c ác bước b ằ n g thủ công, bây
_______ ^ờ_bạn_c£_thểnhậy_đến_£hần tiêp theo "T ù y b iế n Form thừa kế ".

Như thường lệ, Visual Stuđio liệt kê t ấ t cả tem p late m à b ạn có th ể
đưa vào các project, khơng p h ải chỉ các tem p late liên quan đến sự
thừa kế. T em p late In h e rite d F orm cho b ạ n tru y cập hộp th o ại
Inheriteưice Picker.


148

C h ư ơ n g 16: Thừa kế các íorm và tạo các c la ss c ơ sỏ

Bạn cũng có th ể sử dụng hộp tex t N am e ở cuối hộp th o ại để g án m ột
tê n cho form thừa k ế m ặc dù nó khơng cần th iế t cho ví dụ n ày . Tên
này sẽ xuất h iện trong Solution E xploreer và trong tê n file của form
trê n đĩa.
11. N h ấp A d d để chấp n h ậ n các xác lập mặc định cho form th ừ a kẽ'
mới.
Visuaỉ Studio h iển th ị hộp thoại In h erìtan ce P icker n h ư được m m inh
họa ơ đây:
*
'' '
PKlet
ContporxrtN


lí w ~1; ^«««1 !
Hộp th o ại n ày liệ t kê tấ t cả form th ừ a k ế trong project h iệ n hàn h .
Nếu b ạ n mn duyệt dể tìm m ột form được biên dịch khác, nh ấp
n ú t Browse và định vỊ file ,dll.
________________________________________________________

N ế u b ạ n m u ôn thừa k ế m ột form vốn không ph ải là m ộ t th à n h p h ầ n
c ủ a pro je c t hiện hành , form phải được biên dịch dưới d ạ n g m ộ t file

.dll.
12. N hấp F o r m l tro n g hộp thoại In h eritan ce P ick er và sau đó nh ấp
OK.
Visual Studio tạo mục Form2.vb tro n g Solution E xplorer và h iể n th ị
form th ừ a k ế tro n g D esigner. Trong ản h chụp m àn h ìn h dưới đây
chú ý rằ n g form trô n g giống h ệ t n h ư cửa sổ F o rm l m à b ạ n đ ã tạo
trước đó ngoại trừ h ai n ú t chứa các biểu tượng nhỏ biểu th ị rằ n g các
đối tượng đến từ m ột nguồn được th ừ a kế.
Có th ể khó p h ân b iệt m ột form thừa k ế với m ột form cơ sở (các biểu
tượng in h eritan ce nhỏ không rõ ràn g như thế), như ng b ạ n cũng có
th ể sử dụng Solution E xplorer và các tab IDE để p h â n b iệ t giữa các
form.


149

C h ư ơ n g 16: Thừa kế các form v to cỏc class c s
FefmtnhôMUA<e ã N66fe>eft
P i 'r

ĩd it


V /« w

ỉiro ^ v t

StiAo

S u iit

ã-đ J

,

r

T « > rn

,



^«1«

r e > ( > 'A

> ' 'íi

T m iỡ

-ã..*


.

1

'r lộ iy

T ô i(

ằằ

.

-ằ>.1 3 ằbô3
1
1

ã'ớ

ã ! .T*

li*j3 íil
It>hc<ì1arwf

^ h^Pr»ie(l
I Fc/mlv&
T ^crrn^vb

ỉ«


l ị

T e '- - ) |

.

'^ ạ x

Fern? ^ữi'iiJnh(n
'

ỉ\ J ' t'
f o i< C c lo r

C o n b o lT tx

*

ỉ«4bl(
«»gmTjteft Nộ
Pjgh(T>Lrítl« ỉilte
ĩ»«
0i4ie9d»r

Bảy giờ b ạn sẽ th êm m ột vài p h ần tử mới vào form th ừ a kế.
T ù y b iế n f o r m

th ừ a k ế


1. Sử dụng control B utton dề th êm m ột đối tượng n ú t th ứ ba gần giữa
Form 2 (forra thừa kế).
2. Xác lập thuộc tín h T ext cho đối tượng n ú t san g "Click Me!"
3. N hấp đôi n ú t C lic k Me!
4. T rong th ủ tục sự k iện Button3_Click, gõ n h ập câu lện h chương trìn h
sau đây:
MsgBox(’T h is is the Inheritecl formỉ")

5. H iển th ị lại Form 2 và sau đó th ử n h áp dôi các n ú t OK và Cancel
trê n form.
Chú ý rằ n g b ạn không th ể h iển th ị hoặc biên tậ p các th ủ tục sự kiện
hoặc các thuộc tín h cho những đối tượng th ừ a k ế này m à không thực
hiện th ê m các bước nằm ngoài phạm vi của chương này. (Các biểu
tượng "Ổ khóa" nhỏ biểu th ị rằn g các đơi tượng th ừ a k ế chỉ đọc (readonly)). Tuy nhiên, b ạn có th ể th êm các đơ'i tượng mới vào form hoặc
tùy biến nó bằng những cách khác.
6. Mở rộng form.
Ngồi việc chỉnh sửa kích cỡ, b ạn có th ể th ay đổi vị tr í và các đặc
điểm h iể n th ị hoặc đặc điểm h o ạt động k hác của fonn. Tuy n h iên


150

C h ư ơ n g 16: Thừa kế các form và tạo các class cơ sở

nếu b ạn sử dụng cửa sổ P roperties để tùy biến m ột form, hộp danh
sách Object tro n g cửa sổ Properties hiển th ị form m à form hiện
h à n h được d ẫn xuất từ đó.
Sau dây là diện mạo của cửa sổ P roperties tro n g project k h i Form 2
được chọn:
- D X


Propertiíi
Form2 Form Inhcrttondc.Porml

-

X ỉ 1 iĩ) :n :

Bây giờ xác lập đối tượng khởi động tro n g project san g Form2.
7. N h ấp lện h M y F o rm I n h e r i t a n c e P r o p e r t i e s trê n menu Project.
P roject D esigner được giới thiệu tro n g chương 14 xuất hiện.
8. T rên ta b A pplication, n h ấp hộp danh sách S t a r t u p F o r m , n hấp
F o rm 2 , và sau đó đóng Prọịect D esigner b ằn g việc n h ấp n ú t C lo se
trê n tab.
K hông có n ú t S a v e tro n g tab Project D esigner bởi vì V isual Studio
lưu các th a y đổi k h i b ạn thực h iện chúng tro n g hộp thoại, Bây giờ
hãy chạy project mới.
• • • • • • •

Thủ thuật
C hư ơng tr ì n h Form In h e r ita n c e h o à n c h ỉn h đ ư ợ c đ ă t tro n g ío ld e r
C:\vbl Osbs\Chap16\Form Inheritance.

9. N h ấp n ú t S t a r t D e b u g g in g .
Form th ừ a k ế mở ra như dượe m inh liọa ở đây.
i ỉ òisỉog

ŨK

10. N h ấp OK.


I Canè^


151

C h ư ơ n g 16: Thửa kế các ỉorm và tạo các class cơ sỏ

F orm th ừ a k ế chạy th ủ tục sự k iện m à nó
dã th ừ a k ế từ F o rm l, và thủ tục sự kiện
h iể n th ị th ơ n g báo sau đây:

• ío r m ln h e r it a n c e

|
b

Y o u c lic k e d O K

OK

11. N hấp OK, và sau đó n h ấp n ú t C lic k Me!
Form 2 h iển th ị th ô n g báo form th ừ a kế.

N hững p điều này m in h họa là Form 2 (form th ừ a kế) có những đặc
điểm riên g của nó (một n ú t Click Me! mới và m ột kích cỡ được mở
rộng). Form 2 cũng sử dụng hai n ú t (OK và Cancel) đã được thừa k ế
từ F o rm l và chứa m à từ P o rm l, cũng n h ư sự đại điện trực quan
chính xác của các nút. Điều này có nghĩa là b ạn có th ể k h ai th á c lại

giao d iện người dùng và các tín h n ăn g m ã m à trước đó b ạn đă tạo
mà k hông p h ải làm các bước cắt v à d án vụng về. Nói cách khác, bạn
đã gặp p h ải m ột tro n g những lợi ích của OOP - tá i sử dụng và mở
rộng chức n ăn g của các form, m ã chương tr ìn h và project h iện có.
B ạn đã học sử dụng hộp thoại Visual Studio In h eritan c e Picker, hộp
th o ại n ày đưa ra m ột cách tiệ n lợi để chọn các đối tượng m à bạn
muốn tá i sử dụng.
12. N hấp OK để đóng hộp thoại và sau đó n h ấp C lo se trê n form để
k ế t thúc chưcmg trìn h .
Chương trìn h dừng lại và IDE quay trở lại.

Tạo các Class ctí sỏ riêng của bạn
In h eritan ce P icker quản lý tiế n trìn h thừa k ế tro n g bài tậ p trước bằng
việc tạo m ột class mới tro n g project có tê n là Form 2. Để xây dựng class
Form 2 In h eritan c e P ick er th iế t lập m ột liên k ế t giữa F o rm l tro n g project
My Form In h eritan c e và form mới. Sau đầy là diện mạo của class Form2
m ới trong Code Editor:

' 4*
ã

Côằ6 '
P rlv a te uớằ Boớớoria

Sn4
Sn cô (>

1
SyVal « A»'



1 5 2 ________________________ C h ư d n g 16: Thừa kê' các form v à tạo các class cơ sở

Thủ tục sự k iện Button3_Click m à b ạn đã thêm cũng là m ột th à n h viên
của class mới. N hưng h ãy nhớ lại răn g bản th â n class P o rm l phụ thuộc
vào class System .W indow s.Form s.Form cho h à n h vi và các đặc điểm cơ
bản của nó. Do đó bài tậ p vừa rồi cho th ấy m ột class d ẫn x u ấ t (Form2) có
th ể thừ a k ế chức n ăn g của nó từ m ột class dẫn xuất k h ác (P o rm l) m à lần
lượt thừ a k ế chức n ăn g cốt lõi của nó từ m ột class cơ sở gốc (Form ), vốn là
m ột th à n h viên của nam espace System .W indow s.Form s tro n g Microsoft.
N ET Fram ew ork.
N goài In h eritan ce Picker, Visuai Studio cung cấp câu lệ n h In h e rits, câu
lện h này làm cho class h iện h à n h thừa k ế các thuộc tín h , th ủ tục và biến
của m ột class khác. Để sử dụng câu lện h In h e rits để th ừ a k ế m ộ t form, bạn
phải đ ặ t câu lện h In h e rits ở p h ần trê n cùng của form dưới d ạn g câu lệnh
đầu tiê n tro n g class. Mặc dù có th ể b ạn chọn sử dụng In h e rits cho loại công
việc này với các form, nhưng sẽ hữu dụng khi b iết về In h e rits bởi vì nó cỏ
th ể được sử dụng cho các class và các giao diện {interface) ngồi trừ các
form, và có lẽ th ỉn h th o ản g b ạn sẽ gặp phải nó tro n g m ả chương trìn h của
các đồng nghiệp. B ạn sẽ xem m ột ví dụ về câu lện h In h e rits gần cuôl
chương này.
N hận ra rằ n g các class là m ột khôi tạo cơ b ản n h ư vậy tro n g các chương
trìn h Visual Basic, cũng có th ể b ạn hỏi các class mới được tạo n h ư th ế nào
và những class mới n ày có th ể được th ừ a k ế bởi các class được d ẫ n xuất tiếp
theo n h ư th ế nào. Để suy nghĩ về những k h ả n ăn g này, p h ầ n còn lại của
chương này sẽ được d àn h để thảo luận cú pháp tạo các class tro n g Visual
Basic 2010 và giới th iệu cách các class do người dùng xác đ ịn h này có th ể
được th ừ a k ế sau bởi nhiều class hcfn n h ư th ế nào. Đồng th ờ i b ạn sẽ học
việc tạo các class riên g của b ạn có th ể r ấ t hữu đụng n h ư t h ế nào.
Thêm một Class mới vào Proịect

M ộ t c la s s tro n g V is u a l B a s ic là m ộ t s ự đại d iệ n h o ặ c b lu e p rin t đ ịn h n g hĩa
cấ u trú c c ủ a m ộ t h o ặ c n h iề u đ ố i tữ ợng, T ạ o m ộ t c la s s c h o p h é p iDạn định
n g h ĩa cá c đ ố i tu ợ n g riê n g củ a b ạ n tro n g m ộ t ch ư ơ n g trin h - c á c đ ố i tư ợ n g
c ó c á c th u ộ c tín h , p h ư ơ ng thức, trư ờn g v à s ự k iệ n g iố n g n h ư c á c đ ố i tư ợng
m à c á c c o n tro l T o o lb o x tạ o trê n c á c fo rm W in d o w s , Đ ể tạ o m ộ t c la s s m ới
v à o p ro Ịe ct, b ạ n n h ấp lệ n h A d d C la s s trê n m e n u P ro je c t v à s a u đ ó bạn
đ ịn h n g h ĩa c la s s b ằ n g v iệ c sử d ụ n g m ã ch ư ơ n g trình v à m ộ t v à i từ khóa
V isu a l B asic.
T ro n g bài tậ p sa u đ â y, bạn s ẽ tạ o m ộ t c h ư ơ n g trình n h ắ c m ộ t n h â n v iê n m ới
vê tê n , h ọ v à n g à y s in h c ủ a họ. Bạn sẽ lưu trữ th ô n g tin n à y tro n g c á c th u ộ c
tín h c ủ a m ộ t c la s s m ới c ó tê n là P e rs o n , v à bạn sẽ lạ o m ộ t p h ư ơ n g thức


153

C h ư ơ n g 16: Thừa k ế các form và tạo c á c c la s s cơ sd

tro n g c la s s đ ể tính tuổi h iệ n tại củ a n h ân v iê n m ớ i. P ro je c t n à y sẽ hướng
dẫ n bạn c á c h tạ o các c la s s riê n g củ a bạn v à c ũ n g h ư ớ n g d ẫ n c á c h s ử d ụ ng
c á c c la s s tro n g nhữ ng th ủ tụ c thừ a k ế c ủ a c h ư ơ n g trìn h .
X â y d ự n g p r ọ ịe c t P e r s o n

C la s s

1. N h ấ p lệ n h C lo s e P r o j e c t tr ê n m enu F ile và sau đó tạo m ột
project W indows Porm s Application mới có tê n là M y P e r s o n C lass.
2. Sử dụng control Label để thêm m ột đối tượng n h ả n vào p h ần trên
cùng của F o rm l.
3. Sử dụng control T e x tB o x để vẽ hai đối tượng hoặc tex t rộng bên
dưới đối tượng nhãn.

4. Sử dụng control D a te T im e P ic k e r để vẽ m ột đối tượng date tim e
picker bên dưới các đòi tượng hộp text.
L ần sau cùng bạn đã sử dụng control D ateT im ePicker đế n h ập các
ngày th á n g tro n g Chương 3. Đi đến chương đó nếu b ạ n m uốn xem lại
các phương thức và thuộc tín h cơ b ản của control này.
5. Sử dụng control B u tto n để vẽ m ột đôl tượng n ú t bên dưới đối tượng
d ate/tim e picker.
6. Xác lập các thuộc tín h sau đây cho các đối tượng trê n form.
Đ ố i tư ợ n g

T h u ộ c tín h

Xác lậ p

L abell

Text

“Enter employee first name, last name,
and date of birth.”

TextBoxl

Text

“F irst nam e”

TextBox2

Text


“L ast nam e”

Buttonl

Text

“Display recorđ”

P orm l

Text

“Person Class’’

F orm trô n g tương tự như sau:

P e rs o n c i ì ỉ ỉ

E n ỉ e i e iT i( 3 lo y « e lir s t n a m e , la s t rtârTke, drư: d a l e o l b H th

Tvclnrte

Surtdạy

, Pebudiy 26.2Ũ1D





154

C h ư ở n g 16: Thừa k ế các form và tạo các ciass cơ sỏ

Đây là giao diện người dùng cơ bản cho m ột form định n g h ĩa m ột
record (bản ghi) n h ân viên mới cho m ột ứng dụng thương m ại. Tuy
nhiên, form không được k ết nối với m ột cơ sơ dữ liệu, do đó chỉ mỗi
lầ n m ột record có th ể được lưu trữ. B ạn sẽ học cách th iế t lập các nối
k ế t cơ sở dữ liệu tro n g Chương 18.
Bây giờ b ạn sẽ th êm m ột class vào project để lưu trữ th ô n g tin tro n g
record.
7. N hấp lện h A d d C la s s trê n m enu Project.
Visual Studio h iển th ị hộp thoại Add New Item , với tem p late Class
được chọn, như dược m in h họa ở đây:
I I II ,

A ổd

II

l u m * P t /S « n C l ^

W liH c 4 T e ttp h le s
C o i n m o n E te íT ii

^

Ccđr

%!kShttỉ


Cflfn<nor>bs'” }

Irpe; Coírrror) kemt
A r « m o t y < b u d « f in i( i9 n

Otf

JScnp
G *etệi»l

C«(^rriOA(tcmỉ

W tb

Winữơwiíoimi

Ịví

K c p c v t ir v g

Wertflo»

Ceinmefiftmỉ
M o d u lc

WPF

C ^ m m e r H em »


Commen

VMrvdow)lerm
^

c»rnm«nb<fr>)

U > « rC » rW o l

C«mpon(AtCl»tt

CfifT
CHoM
ồữđ r ^ " n
Hộp th o ại Ađd New Item cho b ạn cơ hội đ ặ t tê n cho class của bạn.
Bdi vì b ạn có th ể lưu trữ nhiều class tro n g m ột class module mới, có
th ể b ạn mn xác định m ột tê n có p h ần k h á i quát.
8. Gõ n h ập P e r s o n .v b trong hộp N am e và sau đó n h ấp A d d .
Visual Studio mở m ột class module trô n g tro n g Code E ditor và liệ t
kê m ột íile cổ tê n là Person.vb tro n g Solution E xplorer cho project,
n h ư được m inh họa ở dây:


155

C h ư cn g 16: T h ù a kế các form và lạ o các class co sị




Étíil Virm

: 3 * .^

P/6ịtcX 8y;w

P eb/9

0«I

. k ề ể - : ồ

T9«'i

Trtt M-Vid(5w H*tp

^

,**

.

' ‘

,

-V 'r

........ M á x ^ ^


V>ỉ*'íPơK»fl

í*utUc Cìo>»

P « r > c n C liỉi
^

M /^ r o /c ( >

^ormX,v&

gr^ri CJa&ô

**1Pnjfln*A

ã'3 SelvOe'^^.

TL):n

,

t :^r '

iOO%

Bõy gi b ạn sẽ gõ n h ập định nghĩa của class tro n g class module và
học m ột v ài từ khóa Visual Basic mới. B ạn sẽ làm theo bôn bước:
kh ai báo các biến class, tạo các thuộc tín h , tạ o m ột phương thức, và

cuối cùng tạo m ột đối tượng dựa vào cỉass mới.
B ư ớ c 1 : K h a i b á o c á c b iế n

c ia s s

K Bên dĩíới cân lệnh cbKơng trình Piibiic Class Person, gõ nhập các phần
khai báo biến san đâv:
Private IMamel As string
Private Nameíĩ As string

ở đây, b ạn khai báo h ai biến m à sẽ được sử dụng độc quyền bên
tro n g cỉass module để lưu trữ các giá tr ị cho h a i xác lập thuộc tín h
chuỗi. Các biến đâ được k h ai báo bàng việc sử đụng từ khóa P rivate
bởi vì, th eo quy ước, các n h à lập trìn h Visual B asic giữ riên g tư các
biến class nội bộ của m ìn h - nói cách khác, k hơng có sẵ n để kiểm tra
bên ngồi chinh class module. Đói k h i những biến này được gọi là
các field (trường) hoặc backing field (trường hỗ trợ) bởi vì chúng
cung cấp sự lưu trữ cho các thuộc tính.
B ư ớ c 2:

T ạ o c á c t h u ộ c t ín h

1. B ên dưới các p h ần k h a i báo biến, gõ n h ậ p câu lện h chương trìn h
sau đây và sau đó n h ấ n E N T E R :


156

C h ư ớ n g 16: T h ừ a k ế c á c fo rm v à lạ o c á c c la s s c ơ sở
Public Property RrstNameO As string


Câu lệ n h n à y tạo m ột thuộc tín h có tê n là P irtsN a m e có kiểu
s tr in g tro n g class. Đây là tấ t cả những p b ạn cần làm để thực thi
m ột thuộc tín h dơn giản. (Một backing field khơng được yêu cầu),
T rong V isual Studio 2008, nhữ ng gì x ảy r a tiế p th eo là Visual
Basic tạo m ột khuôn mẫu m ã (code tem plate) cho nhữ ng phần tử
còn lại tro n g p h ần khai báo thuộc tín h . N hững p h ần tử n ày chứa
m ột khô'i G et quyết định những gì m à các n h à lập trìn h k hác thấy
khi họ kiểm tr a thuộc tín h P irstN am e; m ột khơi S et quyết định
nhữ ng gì xảy ra khi thuộc tín h F irstN am e được xác lập hoặc được
th a y dổi; và m ột câu lện h E nd Property đ án h đấu sự k ế t thúc của
th ủ tục thuộc tín h . Tuy nhiên, tro n g V isual Studio 2010, những
p h ần tử n ày được tạo tự động khi b ạn sử dụng câu lện h Property.
T iến trìn h xảy ra nội bộ (bạn khơng th ấ y nó tro n g Code Editor), và
tro n g tà i liệu, nó được gọi là tín h n àn g các thuộc tín h tự động thực
th i (auto-im plem ented properties) mới. Điều n ày cho p h ép bạn xác
định n h a n h m ột thuộc tín h của m ột class m à k hông cần phải tự
v iế t các khô'i m ã G et và Set.
Các thuộc tín h tự động thực th i r ấ t tiệ n lợi cho nhữ ng người thường
xuyên tạo hoặc xử lý các class và thuộc tín h . Tuy n h iên , có những
tìn h huống b ạn khơng th ể sử dụng các thuộc tín h tự động thực thi
m à th a y vào đó p h ải sử dụng cú pháp thuộc tín h chuẩn hoặc mở rộng
(nghĩa là cú pháp m à b ạn sử dụng thường xuyên tro n g Visual Basic
2008). N hững tìn h huống Iiày bao gồm như sau:
m Bạn cần ihêm mã vào thù lục Gct hoặc Set của mộ! Ihuộc tinh (ví du.
khi bạn hiện lực hóa các giá trị !rong ỉnộ! khối niă Scí).
M B ạn imiốn làm cho một ỉbiiộc lính Scl trở n ên Privatc hoặc một Ibiiộc
linh Get trở nôn Public.

9 Bạn niỉiốn tạo các thuộc linh là WriteOnly boậc ReadOnly.

K Bạn muốn thêm các thuộc tinb

đ ì C Ợ c

tham số hóa đặc biệt.

# Bạn muổn đặt một thìiộc tinh hoặc comment Extensible Markìip Langitage (XML) irong m ột tníờng riơng, ẩn.
Mặc dù có th ể những công dụng này dường n h ư n ân g cao hoặc bí
ẩ n vào thời điểm này, nhưng chúng quan trọ n g đủ để cho bạn biết
cú p h áp chuẩn cho các khối m ã G et và S et là gì. T h o ạt đầu có th ể


C hự dng 16: Thửa kẽ' các form và tạo các class co sỏ________________________ 1 5 7

bạn không cần sử dụng nó, nhưng khi b ạn tạo các class và thuộc
tín h cao cấp hơn riên g của m ình, có th ể b ạn cần sử dụng nó(Ngồi ra, tài liệu Visual Studio Help thường trìn h bày những
khõi m ã Get và Set n ày khi thảo luận các class, do đó bây giờ bạn
nên học cú p h áp chuẩn).
2. Gõ n h ập cấu trúc th ủ tục thuộc tín h F irstN am e sau đây sử dụng
các từ khóa G et và Set. B ạn sẽ chú ý rằ n g p h ần lớn cấu trúc được
tự động thêm vào sau khi b ạn gõ n h ập câu lệ n h G et đầu tiên:
Get
Return Namel
End Get
Set(ByVal vaíue As string)
Namel = value
Enđ Set
End Properíy

T rong cấu trúc này, từ k h ó a R eturn xác đ ịn h rằ n g b iến chuỗi N am el

sẽ dược tr ả về k h i thuộc tín h P irstN am e được th a m chiếu. Khôi Set
gán m ột giá trị chuỗi vào biến N am el k h i thuộc tín h được xác lập. ớ
đây đặc b iệ t chú ý biến value được sử dụng tro n g các th ủ tục thuộc
tín h để đại diện cho giá trị được gán sa n g class k h i m ột thuộc tín h
được xác lập. Mặc dù có th ể cú pháp n ày trơ n g lạ nhưng đây là cách
chính thức để tạo các xác lập thuộc tín h tro n g các control và các
thuộc tín h phức tạp hơn th ậ m chí bổ sung th êm logic chương trìn h ồ
đây để te x t các giá trị hoặc thực h iện các tín h tốn.
3. Bỗn dưới câu lện h E n d P roperty, gõ n h ập m ột th ủ tục thuộc tín h thứ
hai cho thuộc tín h L astN am e trong class. L ần nữa, sau khi b ạn gõ
n h ập từ khóa Get, p h ần lớn cấu trúc cho th ủ tục thuộc tín h sẽ được
tự động th êm vào:
Public Property LastNameO As string
Geỉ
Return Name2
Enđ Get
Set(ByVal value As Sĩrỉng)
Name2 » value


1 5 8 ________________________ C h ư ờ n g 16: Thừa kế các form và tạo các class co sở
End Set
End Property

Thủ tục thuộc tín h n ày tương tự như thủ tục thuộc tín h dầu tiên
ngoại trừ nó sử dụng biến chuỗi th ứ h ai (Nam e2) m à b ạn đ ã khai báo
ở p h ần trê n cùng của class.
Bạn dã định n g h ĩa xong h ai thuộc tín h tro n g ciass. Bây giờ hãy tiếp
tục đi đ ến m ột phương thức có tê n là Age, phương thức n ày sẽ quyết
định tuổi h iệ n tạ i của n h ân viên mới dựa vào ngày sin h của n h ân

viên này.
B ư ớ c 3 : T ạ o m ộ t p h ư ơ n g th ứ c

K Bên dĩtói thủ tục thuộc tính LastName, gõ nhập định nghĩa hàm san
đáỵ:
Pubỉic Punction Age{ByVal Birthday As Date) As Integer
Return lnt(Now.Subtract(Birthday),Days / 365.25)
End Punctỉon

Để tạo m ột phương thức tro n g class thực h iện m ột h à n h động cụ thể,
bạn th ê m m ột h àm hoặc m ột thủ tục Sub vào class. Mặc dù nhiều phương
thức khơng địi hỏi các đơl số để hồn th à n h công việc của chúng, nhưng
phương thức Age m à b ạn đang định nghĩa đòi hỏi m ộ t đơ'i số B irth d ay có
kiểu D ate để hồn th à n h việc tín h to án của nó. Phương thức n ày sử đụng
phương thức S ubtract để lấy th ờ i gian hệ th ố n g h iệ n h à n h trừ cho ngày
sin h của n h â n viên mới và nó tr ả về giá trị được biểu diễn b ằn g các ngày
chia cho 365.25 - chiều dài xấp xỉ trong các ngày của m ột năm . H àm In t trả
về p h ần sô' nguyên của m ột sô', và giá trị này được tr ả về thủ tục gọi bằng
câu lệ n h R eturn - giống n h ư m ột h àm điển h ình. (Để b iế t th êm th ông tin về
việc định n g h ĩa hàm , xem Chương 10).
Đ ịnh n g h ĩa class hoàn tấ t, và trong Code E ditor, bây giờ class Person
trơ n g n h ư h ìn h m in h họa dưới đây;


159

C h ư đ n g 16: Thừa kế các form và tạ o c á c c la s s c ơ sở
P«n«ftCỈPtk iđA Vr«# ^tỌỉeet


r««m

T|K>ls 1«»* W)f»đow Help

,

^

L s?.J. ý 'J t â ì S
^

Bây giờ bạn sẽ quay trở về F o rm l và sử dụng class mứi tro n g m ột thủ
tục sự kiện.
• • • • • • •

Thủ thuật
Mặc dù bạn dã khơng làm điều này cho ví dụ này, nhưng thường sê khôn ngoan
nếu thêm m ột logic kiểm tra kiểu nào đó vào các ctass module trong những
proịect thật sự sao cho các thuộc tính hoặc phương thức được sử dụng khơng
dúng cách sẽ khơng kích khdỉ các lồi run-tim e làm tạm dừng chương trình.
B ư ớ c 4: T ạ o

m ộ t đ ố i tư Ợ n g d ự a

v à o c la s s m ớ i

1. N hấp biổu tượng F o rm l.v b trong Solution E xplorer, và sau đó nhấp
V iew D e sig n e r .
Giao diện người dùng F o rm l xuâ”t hiện.
2. N hấp đôi n ú t D is p la y R e c o r d để mở thủ tục sự kiện B uttonl_C lick

trong Code Editor,
3. Gõ nhập các câu lện h chương trìn h sau đây:
Dim Employee As New Person
Dim DOB As Date
Employee.PirstName = TextBoxl.Text
Employee.LastName = TextBox2.Text


1 6 0 ________________________ C hU đng 16: Thửa kẽ' các form và tạo các class cờ sỏ
DOB = DateTimePỉckerl.Value.Date
Msg6ox(Employee.FirstName & “ ‘ & Employee.LastName _
& “ is " & Employee.Age(DOB) & " years old.")

Thường tr ìn h này lưu trữ các giá tr ị được n h ập bởi người dùng trong
m ộ t đơ'i tượng có tê n là employee được k h a i báo là kiểu P erson. Từ
khóa New biểu th ị rằn g b ạn muốn tạo m ột in stan ce của đô'! tượng
Em ployee ngay tức thì. B ạn dã thường xuyên k h ai báo các biến
tro n g sách này ' bây giờ b ạn p h ải khai báo m ộ t biến dựa vào m ột
class m à b ạ n đã tự tạo. Sau đó thường trìn h k h ai báo m ộ t biến D ate
có tê n là DOB để lưu trữ ngày th á n g được n h ập bởi người dùng, và
các thuộc tín h P irstN am e và L astN am e của đối tượng Employee
được xác lập sa n g tê n và họ được tr ả về bởi h ai đối tượng hộp tex t
trê n form. G iá trị được tr ả về bởi dối tượng date/tim e p icker được lưu
trữ tro n g b iến DOB, và câu lện h chương trìn h sau cùng h iể n th ị một
hộp th ô n g báo chứa các thuộc tín h P irstN am e và L astN am e cộng với
tuổi của n h â n viên mới như được quyết đ ịnh bởi phương thức Age
phương thức tr ả về m ột giá trị số nguyên k h i biến DOB được chuyển
đ ến nố. Sau khi b ạn định nghĩa m ột class tro n g m ộ t class module
sử dụng nó tro n g m ột thủ tục sự k iện chỉ là m ột v ấn đề đơn giản như
thường trìn h n ày m inh họa.

4. N h âp n ú t S a v e A ll để lưu các th a y đổi và sau đó xác đ ịn h folder
C :\V b l0 s b s \C h a p l6 làm vị trí,
5. N h ấp n ú t S t a r t D e b u g g in g dể chạy chưcmg trìn h .
Giao d iện người dùng xuất h iện trong ID E sẩ n sàn g để b ạn nhập
dữ liệu vào.
6. Gõ n h ập m ột tê n trong hộp te x t F irs t N am e và m ột họ tro n g hộp
te x t L ast Name.
7. N h ấp mũi tê n của đối tượng date/tim e picker và sau đó cuộn trong
hộp đ an h sách đ ến m ột ngày sin h mẫu.
• • • • • • •

Thú thuật
Bạn có th ể cuộn nhanh hcfn vào quá khứ bằng việc nhấp trường Year khi hộp
thoại d a te /iim e picker mở. Các mũi tên cuộn xuất hiện, và bạn có thể di chuyên
lùi hoặc tiến mỗi lần một nâm. Bạn cũng có th ể di chuyển nhanh đến tháng mà
bạn muốn bằng cách nhấp trường M onlh và sau đó nhấp tên tháng.


C h ư d n g 16: Thừa kế các form và

\ỈỊ0 các class cơ sỏ

161

Form trô n g tương tự như sau:
^ PerSĐr»Cl«h

\

£nlei eỉTptộyet lv$( nvM. lAsl nam«, dnd ddte ỡf brỉK


M#k

bund«(

i

JUy
/uỉy, 1970

Sun Mofi Twe w«d Thu Prí Sat
;e
1
2
3
4
s
6
7
8
9 10 11
n
14 15 16 17 18
’ ú
19 ỉồ 22 22 23 24 25
26
2S 29 30 51
!
2 3 á
i>

e
;

r _ ! Todỉy: 2/ĨỒ/2QĨQ

8. N hấp n ú t D is p la y R e c o rd .
Chương trìn h lưu trữ các giá trị tê n và họ tro n g các xác lập thuộc
tín h và sử đụng phương thức Age để tín h tuổi h iệ n tạ i của n h â n viên
mới. M ột hộp th ông báo hiển th ị k ế t quả, n h ư được m in h h ọ a ở đây.

M ^ rk H d ỉid lỉ IS 39 y e d rỉ ộ ld.

OK

9. N hấp OK để đóng hộp thơng báo và sau đó th ử nghiệm với m ột vài
giá trị n g ày th á n g khác nhau, n h ấp D is p la y R e c o r d mỗi lầ n bạn
th a y đổi trường B irth Date.
10. Khi bạn th ử nghiệm xong với class mới, n h ấp n ú t C lo se trê n form.
Môi trường p h á t triể n quay trở lại.

Tiến xa thêm một bước: Thừa kế một Class cơ sở
N hư đã nói ở đầu chương này, có th êm m ột th ủ th u ậ t về các class do
người đùng xác đ ịn h và sự th ừ a kế. Tương tự n h ư các form có th ể th ừ a kế
zác class form, chúng cũng có th ể thừa k ế các class m à b ạn đã định nghĩa
bàng việc sử dụng lện h Add Class và m ột class mođule.
Cơ cấu để th ừ a k ế m ột class cơ sở (bố) là sử dụng câu lện h In h e rits để
aao h à m class được đ ịn h nghĩa trước đó tro n g m ột class mới. Sau đó bạn


1 6 2 ________________________ C h ư đ n g 16: Thửa kẽ' các form và tạo các cíass cơ


sở

có th ể bổ sung th ê m các thuộc tín h hoặc phương thức vào class d ẫn xuất
(con) để p h ân b iệ t nó với class cơ sd. Có th ể điều này dường như n g h e có vẻ
hơi trừu tượng, do đó h ãy th ử m ột ví dụ.
T rong b ài tậ p sau đây bạn sẽ chỉnh sửa project My Person C lass sao
cho nó 1i Aj trữ th ơ n g tin về các giáo viên mới và các lớp m à họ dạy. Đầu
tiên , b ạn sẽ th ê m m ộ t class th ứ h ai do người dùng đ ịnh nghĩa có tê n là
T eacher vào class module Person. Class mới n ày sẽ th ừ a kê' thuộc tín h
F irstN am e, thuộc tín h L astN am e và phương thức Age từ class P erso n và
sẽ bổ sung th êm m ột thuộc tín h có tê n là G rade để lưu trữ lớp m à giáo
viên mới dạy.
S ử d ụ n g t ừ k h ó a I n h e r it s

1. N h ấp c la s s P e r s o n .v b trong Solution E xplorer và sau đó n h ấ p nút
View Code.
2. Cuộn đến cl Code E ditor sao cho điểm chèn n ằm bên dưới câu
lện h E n d C la ss.
N hư đã đề cập trước đó, b ạn có th ể bao h àm nhiều class tro n g m ột
class module, m iễn là mỗi class được p h ân dịnh b ằn g các câu lệnh
Public Class và E nd Class. B ạn sẽ tạo m ột class có tê n là T eacher
tro n g class module này, và b ạn sẽ sử dụng từ k h ó a In h e rits để k ế t
n h ập phưcmg thức và các thuộc tín h m à b ạn đã định n g h ĩa trong
class Person.
3. Gõ n h ập đ ịnh n g h ĩa class sau đây trong Code E ditor. N hư trước đó
sau k h i b ạn gõ n h ập từ khóa G et và n h ấ n E N T E R , m ột sô' cấu trúc
P roperty sẽ được cung cấp cho bạn:
Public Class Teacher
Inherits Person

Prỉvaíe Level As Short
Public Property GradeO As Short

G6t
Return Level
End Get
Set{ByVal value As Short)
Level = value
End Set


C h ư ò n g 1 6 : T h ừ a k ế c á c to rm v à tạ o c á c c la s s c ơ s ở

163

Enđ Property
End Class

Câu lệ n h In h e rits liên k ế t class P erson với class mới này, bao gồm
tấ t cả các biến, thuộc tín h và phương thức của nó. N ếu class Person
đã được đ ặ t tro n g m ột module hoặc project riên g biệt, b ạ n có th ể
n h ận dạng vỊ trí của nó b ằn g việc sử dụng m ột sự chỉ đ ịnh nam espace,
tương tự như b ạn n h ậ n dạng các class k h i b ạn sử dụng câu lệnh
Im ports ở p h ần trê n cùng của m ột chương trìn h sử dụng các class
trong các th ư viện class -NET Fram ew ork. v ề cơ bản, T each er class
đã được định nghĩa là m ột kiểu đặc b iệt của class P erson - ngồi các
thuộc tín h F irstN am e và LastN am e, class T each er có m ộ t thuộc
tín h G rade ghi chép tr ìn h độ m à giáo viên dạy.
Bây giờ b ạn sẽ sử dụng class mới trong th ủ tục sự k iệ n B uttonl_C lick.
4. H iển th ị th ủ tục sự k iện B uttonl_C lick tro n g F o rm l.

Thay vì tạo m ột b iến mới để chứa class T eacher, b ạn chỉ việc sử
dụng y nguyên biến Em ployee - sự k hác b iệ t duy n h ấ t sẽ là bây giờ
bạn có th ể xác lập m ột thuộc tín h G rade cho n h â n viên mới.
5. C hỉnh sửa th ủ tục sự k iện Button_Click n h ư sau. (Các dịng được tơ
bóng là các dịng m à b ạn cần th a y đổi).
Dim Employee As New Teacher
Dim DOB As Date
Employee.PirstName a TextBoxl.Text
Employee.LastName =» TextBox2.Text
DOB = DateTimePickerl.Value.Date
Employee.Grade = lnputBox(’‘What grade đo you teach?” )
MsgBox(Employee.FirstName & " “ & Employee.LastName _
& ‘‘ teaches građe “ & Empíoyee.Grade)

T rong ví dụ này, phép tín h tuổi h iện tạ i đã được loại bỏ - phương
thức Age không được sử dụng - nhưng điều này được thực h iệ n chỉ để
giữ th ô n g tin ở mức tối thiểu tro n g hộp th ô n g báo. Khi b ạ n định
n g h ĩa các thuộc tín h và phương thức tro n g m ộ t class, b ạ n không
được yêu cầu sử dụng chúng trong m ã chương trìn h .
Bây giờ b ạn sẽ chạy chương trìn h .


164

C h ư ớ n g 16: Thừa k ế các form v à tạo các cla ss c ơ sỏ

• • • • • • •

Thủ thuật
C hư ơng tr ì n h Person C iass đ ư ợ c c h ìn h sửa đ ư ợ c đ ấ t tr o n g ío ld e r

C :\Vb10sbs\Chap16\Person Class.

6. N h ấp n ú t S t a r t D e b u g g ỉn g để chạy chương trìn h .
F orm n h â n viên mới mở trê n m àn hình.

natne, iàtỉ Dốme, ânddateQÍbrtK

Entar

ỉ D b Q Ỉạ y i « c « d ^

7 . Gõ n h ập tê n của b ạn tro n g hộp tex t F irs t N am e và họ của b ạn tro n g

hộp te x t L a st Name.
8. N h ấp đối tượng date/tim e picker và sau đó cuộn đến n g ày sin h của
bạn.
9. N h ấp D ỉs p la y R e c o r d .
Chương trìn h lưu trữ các giá trị tê n và họ tro n g các xác lập thuộc
tín h và sau đó h iển th ị hộp n h ập liệu sau đây, n h ắc giáo v iên mới về
lớp m à giáo viên dạy;

W h è ỉ ^ è à t do you ( M d i?

i
10.

Go n h ậ p 3 và sau đó n h ấp O K để đóng hộp n h ập liệu.

itog dụng lưu trừ sô' 3 tro n g thuộc tín h G rade mới và sử dụng các
thuộc tín h P irstN am e, L astN am e và G rade để h iể n th ị th ông tin

n h â n viên mới trong m ột hộp th ô n g báo xác n h ận . B ạn th ấ y th ô n g
báo sau đây:


C h ư ơ n g 16: Thừa kế các form v á tạo các class cơ sỗ

M «r'

165

t«ache5 grade 3

OK

11. Thử nghiệm với th ê m m ột vài giá tr ị nếu b ạn th ích và sau đó
n h ấp n ú t C lo s e trê n form.
Chương tr ìn h đừng lại và mơi trường p h á t triể n quay trở lại. Bạn
đã làm việc xong với các class và sự th ừ a k ế tro n g chương này.
Thử nghiệm ỉhỗm nữa với OOP
N ếu bạn d ã th ích th ú s ự th â m n h ậ p n à y v à o c á c k ỹ th u ậ t v iế t m ã định
h u ớng đối tư ợ n g , n h iề u đ iề u v u i th ú nữa đ a ng c h ờ b ạ n tro n g V is u a l B a sic
20 10 , m ộ t n g ôn ng ữ O O P th ậ t sự. Đ ặ c b iệ t, c ó th ể b ạ n m u ố n th ẽ m c á c sự
kiện v à o c á c đ ịn h n g h ĩa cla s s , tạ o c á c g iá trị th u ộ c tin h m ặ c đ ịn h , kh a i báo
v à sử d ụ n g c á c k iể u đ ư ợ c đ ặ t lẽ n v à c á c k iể u v ô d a n h , v à th ử n g h iệ m với
m ộ t tính n ă n g đ a hình đ ư ợ c g ọ i là q u á tải p h ư ơ n g th ứ c (m e th o d o v e rlo a d ing ). N h ữ n g tính n ă n g n à y và n h ữ n g tính n ă n g O O P k h á c c ó th ể đ ư ợ c kh ả o
sất b ằ n g v iệ c sử d ụ n g tà i liệ u V is u a l s tu d io H e lp h o ặ c b ằ n g v iệ c tham
kh ả o m ộ t s á c h n â n g c a o v ề lậ p trìn h V is u a l B a s ic . (X e m p h ụ lụ c d ể tham
kh ả o m ộ t d a n h s á c h đ ọ c ). B ạn c ũ n g sẽ th ấ y rằ n g m ộ t s ự h iể u b iế t toàn
d iệ n v ề cá c c la s s v à c á c h c h ủ n g đ ư ợ c tạ o nh ư th ế n à o sẽ g iú p ích c h o bạn
khi bạn tiế n sâ u h ơ n v à o .N E T F ra m e w o rk v à n h ữ n g ch ủ đề n â n g ca o như

lập trin h c ơ s ở d ữ liệ u . Đ ố i v ớ i m ối q u a n hệ g iữ a O O P v à c á c c ơ s ở d ữ liệu
tro n g V is u a l B a s ic , h ã y xem P hần IV.

Tham khảo nhanh chương 16
Dể

Thừa kê giao diện hoặc chức
năng của một form hiện có

Thực h iện đ iều sa u đây
Nhấp lệnh Add New Item trên menu
Project, nhấp tem plate Inherited Form,
xác định một tên cho form thừa kế và
sau đó nhấp Add. Sử dụng Inheritance
Picker để chọn form m à bạn muốn thừa
kế và sau đó nhâ'p OK.
Chú ý rằng để dủ điều kiện thừa kế,
các form cơ sở phải được biên tập dưới
dạng các ílle .exe hoặc .đll. Nếu bạn
muốn thừa k ế một form vôn không phải
là một th àn h phần trong project hiện
hành, form phải được biên dịch dưới
dạng một ílle .dll.


166

C h ư ở n g 16: Thừa kế các form v à tạo c á c cla ss cơ sở

Tùy biến một form thừa k ế


Thêm các control Toolbox vào form và
xác lập các xác lập thuộc tính. Chú ý
rằng bạn sẽ khơng thể xác lập các thuộc
tín h của những đối tượng thừa k ế trên
form. Những đôl tượng này được nhận
dạng bằng các biểu tượng nhỏ và khơng
được kích hoạt.

Tạo các class cơ sở riêng của
bạn

N h âp lệ n h Add C lass tr ê n m enu
Project, xác định tên class và sau đó
nhấp Add. Định nghĩa class trong một
class module bàng việc sử dụng mã
chương trình.

Làm ẩn các biến được khai
báo trong một class

Sử dụng từ khóa Private đề làm ẩ n các
biến class khỏi lứiững nhà lập trìn h
khác kiểm tra class của bạn. Ví dụ:
Private N a m e l A s S trin g

Tạo m ột thuộc tín h mới
trong class

Định nghĩa m ột thủ tục thuộc tín h public trong class. Ví dụ:

P u blic P rop e rty F irslN am e() A s String
Get
Return N a m e l
E n d Get
Set{B yV al value A s S tring )
Name1 » value
E n d Set
End P roperty

Chú ý rằng dịng đầu tiên trong ví dụ
này (chứa câu lệnh Property) là tấ t cả
những gì m à có th ể bạn cần nhập nếu
bạn tạo một thuộc tín h mới có vài xác
lập tùy ý. Nói cách khác, Visual Studio
2010 tự động n h ận biết từ khóa Property khi bạn gõ nhập nó và sử dụng
tính năng các thuộc tính tự động thực
thi (auto-implemented property) mới để
tạo một định nghĩa thuộc tín h cơ sở cho
bạn. Tuy nhiên, chương này đă trình bày
cú pháp Get và Set hồn chỉnh bởi vì nó
hữu dụng trong nhiều tình huống viết
mã thưc tế.


167

C h ư ơ n g 16: Thừa k ế các form và tạ o các class Cổ sò

Tạo một phương thức mới
trong class


Định nghĩa một thủ tục Sub hoặc Function trong class. Ví dụ:
P u b lic F u n c tio n A g e (B y V a l B irth d a y A s O ate ) A s In le ger
R e tu rn ln t(l'J o w .S u b tra c l(B irth đ a y ).D a y s / 3 6 5 ,2 5 )
E nđ P uncllon

Khai báo một biến đối tượng để
sử dụng class

Sử dụng các từ khóa Dim và New, một tên
biến và class do người dùng đinh nghĩa
trong một câu lệnh chương trình. Ví dụ:
D ím E m p lo y e e A s N e w P erson

Xác lập các thuộc tính cho một
biến dối tượng

Sử dụng cú pháp thông thường để xác lập
các thuộc tính đổi tượng. Ví dụ:
E m p lo y e e .R rs tN a m e = T e x tB o x l.T e x t

Thừa kế một class cơ sở trong
một class mới

Tạo một class mới và sử dụng từ khóa
Inherits để k ết nhập các định nghĩa class
của class cơ sở. Ví dụ:
P u b lic C la ss T e a ch e r
In h e rits P erson
P riv a te L e v e l A s S h o rt

P u b lic P ro p e rty G ra d e O A s S h o rt
G eỉ
R e tu rn L evel
E n d Get
S e t(B y V a l v a lu e A s S fio rt)
Level s value
E n d S et
E n đ P ro p e rty
E n ỡ C la ss


168

C h ơ d n g 17: Làm v iệ c với các m áy in

Làm việc với cóc máụ in

Sau k h i hoàn th àn h chương này, bạn s ẽ có thể:

K In đồ họa ti'( một chương trình Visual Basic.
* In text từ một chĩíơng trình Visual Basic.
• ỉn nhiều tài liệu.
u Tạo các hộp thoại Print, Page Setup, và Print Prenieu’ trong chương
trình.

rong các p h ần sau đây, b ạn sẽ h o àn th à n h việc k h ảo s á t th iế t kế
và các th à n h p h ần giao diện người dùng b ằn g việc học cách
th ê m sự hỗ trợ m áy in vào các ứng dụng W indows. Microsoft
V isu al B a sic 2010 hỗ tr ợ v iệ c in b à n g c la ss P rin tD o c u m e n t. C lass
PrintD ocum ent và nhiều phương thức, thuộc tín h và cìass hỗ trợ của nó xử

lý việc gởi te x t và h ìn h ả n h đến m áy in.

T

T rong chương này, b ạn sẽ học cách in đồ họa và te x t từ các chương trìn h
Visual Basic, quản lý các tá c vụ in nhiều tra n g và th ê m các hộp th o ại in và
giao diện người dùng. Chương này là m ột tro n g nhữ ng chương hữu dụng
n h ấ t tro n g sách, với nhiều m ã thực tiễn m à b ạn có th ể k ế t n h ậ p ngay tức
th ì vào các project lập trìn h thực tiễn. Hỗ trợ in k h ô n g tự động x u ấ t hiện