1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo thực tập môn VB.Net

91 753 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Thực Tập Môn VB.Net
Người hướng dẫn Hoàng Quang Huy
Trường học Trường Đại học Công Nghiệp Hà Nội
Chuyên ngành Lập trình VB.Net
Thể loại Báo cáo thực tập
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 91
Dung lượng 26,07 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Báo cáo thực tập tốt nghiệp môn kỹ thuật lập trình Visual Basic.Net

Trang 1

I Cac kiéu dit Lu va GA GiGM sees eeceeceeseeseseesesseeseesecsecsssessessessesseeseenesneeneeneeees 4

1 Đặc điểm các kiểu đữ liệu trong Net Platform ¿2 2 2 2 £+E+EeEsEsesesed 4

2 Kiểu String c1 S111 TT TT TT TT TT TT HH0 re 4

3 Kiểu DateTiime - c1 31133333333 Tư TT TT T001 e0 6 m.‹®.u.: 7

I Cac kiêu dữ liệu nội tại của VB.NET gỒm: + - + +E+E+E+EzxrErerererees 8

II Biến - T ính chất, Khai báo và khởi tạ -i 5 +eSe 2k +E S3 SE ceEeErEserserecee 9

CHUONG II: Cầu trúc câu lệnh - + + + + 2+ E2 E+E+E£EEE+EEEEEEEEEEEEEEEEEEErkrkrkrkreee 17

I CAu Tritc Chon ccccccccscceccesescececsecescsceecaceecaceecarsevaceasacsecacaecaceesareccaceecaceesacens 17

Thay đổi trong thủ tục và hảïm - + + + + SE E51E15E5111E111 111111 nhu 20

1 Khai báo Option STICẨ - - - << << << <2 929 111 1111151111 111111 1 11 00 58 81933 21

2 Chudi 06 d6 dai c6 din eceececcscsescsesescsescesecsvevscevevevsvevavavavecsvsvasscaeseeeees 21

Trang 2

I I 0/008 im .ốố 28

Il — Tạo một lớp kể thừa - + + + + + SE SE EE5E5EE1E15EE1E1 1111113111 29

TH — Khai báo phương thỨC - <0 TH kg 29

VII Chương VI: Sự kiện (EVeTT) Q19 9 1 0 01v nh 35

I Khai báo sự kiỆn - - CC Q01 1111 HH ng ng ren 35

II Kết hợp sự kiện với sử lý - + - + + +E*EESEEEEEEEEEE1E1E1 11113 36

IX — Chương VII Từ khoá Me, MyBase, MyClass -Ă LH, 37

Il MYBaSC cceccccccccccccecceceeseesssssessssssssessesesesceeceeeeececeeceeeeeessceceeseassenseeeeeeeeeneees 38

CHƯƠNG VIII Các điều khiển hiện thị 5:52 41

I ComBoBox, LIstBox, CheckLIstBox - CS cv xe 41

1 Cac thuoc tinh ctia DataGrid - - <5 c2 Ăn nh ng, 43

2 Các Phương thức của DataTrid - - 3 SH ng ve 44

3 Các sự kiện của [Datar1d - - - - + - 5< cE+ SE B3 SE SH nh cv, 45

XII Cac dc diém ctla ADO.NET 0 eeseessesseessesseseseesneesecsneesecsneesecenecusesseeneesneeneees 53

1 Interoperability — Tương tác giữa nhiều hệ thống khác nhau - 53

2 Scalability - H6 tro nhiéu ngwoi dng es eeeeceseseceeesesscesssarsessseeeens 53

3 Productivity - Mở rộng khả năng làm việc với CSDL << <<<s<2 54

4 Performarnce - Hiệu quả cao trong xử lý dữ liệu - -« «<< «<< s2 54 XIII Déi twong Str ly dit LAW ccs ccscscscsescecscssssssesesssesessscsvscscseevenseevenes 55

Chương X: Một số đối tượng cơ bản trong ADO.NETT 5-5 +scx+Ecxcx xxx: 59

2 COMME CtiONSHriNg .ccccescsssccccccccccceeceessessseesesensnsesaeseeeeseeeceeeeeseseeeeeeseeeeuaeaas 60

3 Các thuộc tính khác của Connecfion - -‹- << <2 ‡ 2< sexes 62

Trang 3

4 Các phương thức trên ConnecCf1OTI - - + + + + + + + + + ++++s+vxxveeeeexeerrerrerrers 62

5 Minh hoa tao Comme ction .ccccccecccccsesceceneccceeecsceececseeusececeseeseueeseeenesenenes 62

1 Tao Command .ccccccceesseeccccccceccseeessceeccsceesesuseseseesseceessceeuseescessesseueaeeseess 63

2 Các thuộc tính của Command - 5555 +21 E2 £xkesssseres 64

4 Các thuộc tính của Pararmeterr - - - - + c=- s1 ss ve, 65

5 Tạo Parameter với CreateParameter của Commmand - - - - - 65

6 Thurc hién Command .cccccccccesseccccnsesseecceseussecceseuesecceceueecccsensanecesensageeeees 66 XVI DataReader HH nọ kh 67

1 Các thuộc tính của Dataleader 55 << S211 1E xa 67

2 Các phương thức của DataReader - - - - - << sgk 67

1 Đối tượng BindingCOnteX - - - - E33 E E3 5151115 151721 ce 73

2 Đối tượng CurrencyManager - cành 74

I Mô hình đa tầng (N-tier) - - xxx T H111 Exce 75 XIX Xây dựng lớp xử lý lưu trữ - - << G SH HH ve 75

XX Lớp xử lý lưu trữ - Các khai báo - 99 rh 75 XXI Minh hoạ Mô hình đa tầng . - - E23 SE E111 1E rkred 76 PHAN IV: BAO BIEU CRYSTAL REPORT .c.scsssssessessessessessessessecsecsecsecsecsecseeseaseaneaneaes 78

II Tạo báo DiGU ooo eeeccecccceccececcececcecssceccccscescscsecsceecscsecsececacescacccacsavaceecaceecaceseacers 79

1 Nguồn đữ liệu cho báo biỀU - ¿G55 5 S233 +EvESE2EEEEExvxxrkrkerrrrrrerees 79

2 Sử dụng Crystal Report Viewer đề hiển thị báo biểu - - ©5555 5s+sa S0

3 Nguồn đữ liệu cho báo biểu từ DataSet - + + +5 ccttttererekeeerred 81

4 Lee dit 1i@u 40 DIGU oe eececceesesssessessessessessescsessessecsessessecsecsecaeeneenecneeneeneenee 85

J5-0)800809:1019)/69:1)170023 88

I 4:009100:7 109) 117 88

Il MÔ HÌNH QUAN HỄ - + SE SE SE EEEEEEEEEEEEEEE11 11111111 ck nh rưu 88

II FORM HIẾN THỊ, 2-5: St 2+ vEEESEvEEEEkeEterrrkrrterrrrrrerrrrke 89

KCT - CNPM B K44-CNTT— GTVT 3

Trang 4

PHAN I: CÁC ĐẶC DIEM DU LIEU

CHUONG I: Các kiểu dữ liệu

I Các kiêu dữ liệu và đặc điềm

1.Đặc điểm các kiểu dữ liệu trong Net Platform

Các kiêu dữ liệu mặc nhiên phát sinh từ lớp SysTem.Object

Ngoài các phương thức kế thừa từ lớp SysTem.Oject, các biến kiểu dữ liệu còn có các

phương thức và thuộc tính đặc thù

Các phương thức chung kế thừa từ SysTem.Object

e Equals: Hỗ trợ việc so sánh giữa hai object

e Finalize: Thực hiện các thao tác xóa bỏ trước khi obJect được tự động xóa bỏ

e GetHashCode: Phát sinh một số tương ứng với giá trị của object

e GetType: Trả về kiểu của object

e ToString: Tao ra chuỗi chứa nội dung mô tả một thể hiện của lớp

Dưới đây là các bảng liệt kê những phương thức và thuộc tính đặc thù của các kiểu đữ liệu

Do các phương thức có nhiêu cách sử dụng khác nhau, nên trong các phân nói về phương thức chỉ mô tả công dụng Cân tham khảo thêm trong MSDN đê hiệu rõ cách dùng

Chars(1) Trả về ky ty tai vi tri chỉ ra trong biến Thuộc tính có tính chỉ đọc

Length Trả về số ký tự trong biến

Phương thức Mô tả

Clone Trả về một tham chiếu của biến

Compare Phương thức so sánh hai tham số kiểu String dua vao thir tu cdc ky tu theo

ngôn ngữ qui dinh trong Regional Settings của từng ký tự và trả về:

w-1 khi chuỗi thứ 1 nhỏ hơn chuỗi thứ 2 w0 khi chuôi thứ 1 băng chuôi thứ ] wl] khi chuõi thứ 1 lớn hơn chuỗi thứ 2 wNgoài ra có thê có tham sô qui định có phân biệt chữ Hoa chữ thường, V.V

CompareOrdinal | So sánh hai tham số kiểu String dựa theo bảng mã các ký tự của các tham

SỐ

Hàm trả về hiệu của mã tham số thứ nhất và mã tham số thứ hai

Trang 5

Concat Nối các tham số lại với nhau và trả về chuỗi nói

Copy Tạo một thê hiện mới kiểu String co giá trị như tham số chuỗi truyền vào

CopyTo Sao chép một sé ký tự chỉ ra từ một vị trí trên biến vào một vị trí chỉ ra trên

mảng ký tự với sô lượng ký tự truyên vào

EndsWith Trả về True/False cho biết các ký tự cuối của biến có khớp với chuỗi chỉ ra

không

Format Thay thế phần biểu thức định dạng trong chuỗi bằng các các giá trị tương

ứng đã được định dạng theo biêu thức

IndexOf Trả về vị trí đầu tiên tìm thấy chuỗi hoặc ký tự truyền vào trên biến, ; có thê

sử dụng thêm vị trí băt đâu tìm, trả về vị trí lân tìm thây thứ mây

IndexOfAny Trả về vi tri tim thay dau tién trén bién bat ky ky ty nao trong mảng ký tự

truyền vào; có thể sử dụng thêm vị trí bắt đầu tim, trả về vị trí lan tim thay thứ mây

Insert Chèn vào một giá trị String truyền vào tại vị trí chỉ định trên biến

Join Nối các phần tử của mảng String truyền vào thành một chuỗi duy nhất với

dâu nôi là chuôi dâu ngăn cách chỉ ra (separator) LastIndexOf Trả về vị trí tìm thấy cuối cùng trên biến, chuỗi hoặc ký tự truyền vào; có

thê sử dụng thêm vị trí bắt đầu tìm, trả vê vị trí lân tìm thây thứ mây

LastIndexOfAny | Tra về vị tri tim thay cuối cùng trên biến bất kỳ ký tự nào trong mảng ký tự

truyền vào; có thể sử dụng thêm vị trí bắt đầu tìm, trả về vị trí lan tim thay thứ mây

PadLeft Nối thêm bên trái ky tự truyền vào với số lần sao cho độ đài tổng cộng bằng

độ dài chỉ ra Nêu độ dài tông cộng chỉ ra nhỏ hơn độ dài của biên, không

ký tự nào được thêm vào

PadRight Nối thêm bên phải ký tự truyền vào với số lần sao cho độ dài tổng cộng

băng độ dài chỉ ra Nêu độ dài tông cộng chỉ ra nhỏ hơn độ dài của biên, không ký tự nào được thêm vào

Remove Xóa bỏ một số ký tự chỉ ra khỏi biến từ vị trí truyền vào

Replace Thay thế tất cả ký tự hay chuỗi tìm thấy trên biến bằng ký tự hay chuỗi

truyên vào

Split Trả về một mảng String với các phần tử chứa các chuỗi con được ngắt ra từ

biến tùy theo ký tự ngăn cách truyền vào

StartsWith Cho biết trị bắt đầu của biến có khớp với chuỗi truyền vào

Substring Trả về một chuỗi con từ biến

ToLower Trả về bản sao của biến với các ký tự in thường

ToUpper Trả về bản sao của biến với các ký tự in HOA

Trim Trả về biến đã loại bỏ tất cả các ký tự từ đầu đến cuối của biến khớp với

mảng ký tự truyền vào

KCT - CNPM B K44-CNTT— GTVT 5

Trang 6

MaxValue Hién thi gid tri lon nhat cua kiéu DateTime (chi doc)

MinValue Hién thi gid tri nhé nhat ctia kiéu DateTime (chi doc)

Thuộc tính Mô tả

Date Trả về giá trị ngày tháng năm của biến

Day Trả về giá trị ngày trong tháng của biến

DayOfWeek Trả về giá trị ngày trong tuần của biến, với ngày đầu tiên là Chủ nhật có giá

trị là 0

DayOfYear Trả về giá trị ngày trong năm của biến

Hour Trả về giá trị giờ của biến

Millisecond Trả về giá trị phần ngàn giây của biến

Minute Trả về giá trị phút của biến

Month Tra vé tháng của biến

Now Trả về giá trị ngày giờ hiện hành của hệ thống

Second Trả về giá trị giây của biến

TimeOfDay Trả về giá trị giờ phút giây của biến

Today Trả về ngày hiện hành

Year Trả về năm của biến

Phương thức Mô tả

AddDays Thêm số ngày truyền vào cho giá trị của biến

AddHours Thêm số giờ truyền vào cho giá trị của biến

AddMilliseconds Thêm số phần ngàn giây truyền vào cho giá trị của biến

AddMinutes Thêm số phút truyền vào cho giá trị của biến

AddMonths Thêm số tháng truyền vào cho giá trị của biến

KCT - CNPM B K44-CNTT— GTVT 6

Trang 7

AddSeconds Thêm số giây truyền vào cho giá trị của biến

AddYears Thêm số năm truyền vào cho giá trị của biến

Compare So sánh hai biến ngày giờ và cho biết biễn nào lớn hơn

CompareTo So sánh biến với một tham số Object

Subtract Trừ một giá trị thời gian khỏi biến

ToLongDateString | Chuyến giá trị biến ra định dạng Long Date

ToLongTimeString | Chuyên giá trị biến ra định dạng Long Time

ToShortDateString | Chuyến giá trị biến ra định dang Short Date

ToShortTimeString | Chuyến giá trị biến ra định đạng Short Time

ToString Trả về chuỗi trị của biến theo định dạng truyền vào

MaxValue Hiển thị giá trị lớn nhất của kiểu (chi đọc)

MinValue Hiển thị giá trị nhỏ nhất của kiểu (chỉ đọc)

ToString(<biéu thirc dinh dang>)

Dưới đây là bảng biểu thức định dạng

c, C Dinh dang tiénté |12345.67 ToString(“C”) hiển thị $ 12,345.67

cE pian dạng sô khoa 15345 67 ToString(“E”) hién thi 1.234567E+0004

f,F Định dạng cố định |12345.67 ToString(“F”) hiển thị 12345.67 (với 2 số lẻ)

g,G Dinh dang tong quat 12345.67 ToString(“G”) hién thi 12345.67 ti theo gia

trị có thê hiện thị dưới dạng E hoặc F

n, N Dinh dang sé 12345.67 ToString(“N”) hién thi 12,345.67

p, P Dinh dang phan tram] 0.45 ToString(“P”) hiển thị 45 %

KCT - CNPM B K44-CNTT— GTVT 7

Trang 8

x, X Định dạng Thập lục | 559 ToString(“X”) hién thi FA phan

Ngoài ra chúng ta cũng có thê sử dụng các ký tự sau đây dé lap biểu thức định dạng

0 Số không giữ chỗ |123 ToString(“0000”) hiển thị 0123

# Số bất kỳ giữ chỗ =: | 123 ToString(“####”) hién thi 123

Dấu phần lẻ 123 ToString(“4##t.00”) hiển thị 123.00

Dấu chia cụm ba số |12345 ToString(“#,###) hiến thị 12,345

% Dau phan trim 0.45 ToString(“# %”) hién thi 45 %

E+0,B- |Dấu hiển thị số khoa | 12345678 ToString(“#.#######E:+000”) hiển thị

\ Ky ty literal 123456 ToString(“^# #,###”) hién thi # 123,456

; Ký tự Ký tự ngăn cách Với ToString(“dương #,###;âm #,###; số không”)

ngăn cách |vùng -123456 hiển thị âm 123,456

H Các kiểu dữ liệu nội tại của VB.NET gồm:

Kiu KiểuCLR Vùngnhớ Type Miền giá trị

Byte Byte 1 6 0 đến 255 (không dấu)

DateTime | DateTime 8 16 0:00:00 ngay 01 thang Giéng 0001 dén

23:59:59 ngay 31 thang Muoi Hai 9999

4.94065645841246544E -324 đôi với sô am; 4.94065645841246544E-324 dén 1.797693 13486231570E +308 với sô

Trang 9

Object Object 4 Bat ky kiểu dữ liệu nào có thê chứa trong

số âm; 1.401298E-45 đến 3.4028235E+38

với sô dương

String String 8 0 dén khoang 2 ty ky tu Unicode

Ill Biến - Tính chất, Khai báo và khởi tạo

1.Tinh Chat

Biến là một thực thể với 6 tính chất sau:

Name: Tên của biến

e Address: Địa chỉ vùng nhớ nơi lưu giữ giá trị của biến Trong chu kỳ trình sống, địa chỉ của biên có thê thay đôi

e Type: Kiếu của biến, còn gọi là kiểu dữ liệu

e Value: Giá trị của biến

e Scope: Phạm vi sử dụng của biến

Mỗi biến có một pham vi sử dụng là phạm vị trong chương trình nơi biến được nhìn nhận đối với câu lệnh

‘Pham vi khối lệnh và phạm vi thu tục

Khi biến được khai báo trong một khối lệnh (tập hợp các từ khóa kết thúc bằng End , Loop, Next), biên có phạm vi sử dụng trong khôi lệnh

Vĩ dụ:

KCT - CNPM B K44-CNTT— GTVT 9

Trang 10

Biến có phạm vi khối lệnh và phạm vi thủ tục là biến cục bộ

‘Pham vi module va pham vi project

Có những khác biệt trong phạm vị sử dụng đối với các biến khai báo chung trong Module chuẩn (Standard module) và Lớp (Class module) Trước tiên, chúng ta cân lưu ý rằng bản thân Module chuẩn duoc khai bao voi mét trong ba tir khéa sau: Public, Friend va Private (mac dinh)

Tùy theo từ khóa mà phạm vi sử dụng của các thành phần trong module bị giới hạn Ví dụ một biên Public khai bao trong mét module Friend sé c6 pham vi su dung Friend

- Truy xuất Private: nếu biến được khai báo trên phần Declaration của module với từ khóa Private sé chi có pham vi su dung trong module

- Truy xuất Friend: nếu biến được khai báo trên phần Declaration của module với từ khóa Friend sẽ có phạm vi sử dụng trong toàn proJect Các proJect khác không thê sử dụng biên này

- Truy xuất Public: néu bién được khai báo trên phần Declaration của module với từ khóa Public sẽ có phạm vi sử dụng trong toàn project và trong bắt kỳ project nào bên ngoài có một tham chiếu (reference) đến project đó

tLifeTime: thời gian tồn tại của biến Trong khi phạm vi sử dụng của biến xác định nơi

chôn biên được phép sử dụng, thì thời gian tôn tại của biên xác định khi nào biên được sử

dụng

2.Khai báo v à khởi tạo

Lệnh khai báo biến là cú pháp kết hợp tên biến và kiểu dữ liệu Tự thân lệnh này không hàm

y tao biến Tuy nhiên, với các biến không phải kiểu đối tượng, lệnh khai báo biến cũng chính

là lệnh tạo biến

Dim x as Integer

Đề nhắn mạnh vai trò của hàm tạo (constructor), chúng ta có thê viết:

Dim x as Integer = New Integer()

Khi khai báo nhiêu biên trên cùng dòng và không chỉ ra kiêu của biên, biên sé

Trang 11

lấy kiêu đữ liệu của biến khai báo dữ liệu tường minh tiếp sau đó

Dim x as Integer, a, b, c as Long

Cac bién a, b, c déu cùng có kiểu Long

Có thể khai báo và khởi tạo giá trị cho biến cùng lúc:

Dim x as Integer = 100, y as Integer = 200 Trong cách này, phải khai báo tường minh kiểu dữ liệu cho từng biến

Với các biến kiểu đối tượng, cách khai báo cũng như thé Dim objA as MyClass

Lệnh trên chưa tạo ra biến đối tượng và sau dòng lệnh, objA vẫn là Nothing Những cách sau đây sẽ khai báo và tạo biến đối tượng:

Dim objA as New MyClass()

Public Su dung toan cuc

Private Sử dụng cục bộ trong phạm vi khai bảo như Dim

Friend Sử dụng trong phạm vi của project

Protected Sử dụng trong phạm vi của lớp và các lớp con

Protected Friend Sử dụng trong phạm vi của Proctected và Friend

Kiểu trị và tham chiéu (Value Type va Reference Type)

Các kiêu được định nghĩa trong Common Type System thuộc ba loại sau:

e Kiéu tri (Value Type)

e Kiéu tham chiéu (Reference Type)

e Kiểu con tré (Pointer Type)

VB.Net khéng co kiêu con trỏ nên chúng ta chỉ xem xét kiêu trị và kiêu tham chiêu

Khi một biến kiểu trị được khai báo, một vùng nhớ được dành riêng để chứa giá trị thực của

biên Ngược lại, khi một biên kiêu tham chiêu được khai báo, trình biên dịch sẽ tạo đôi tượng

trên vùng nhớ, nhưng sẽ gán cho biên bôn byte chứa địa chỉ của đôi tượng Tóm lại, biên kiêu trị chứa giá trị của biên còn biên kiêu tham chiêu chỉ đên nơi chứa giá trỊ

KCT - CNPM B K44-CNTT— GTVT

Trang 12

Sự khác biệt này dẫn đến nhiều hệ quả mà phép gán là một Để minh họa chúng ta xem Class sau với một thuộc tính:

Vidu:

Public Class Nguoi

Public tuoi as Short

Class 1a kiéu tham chiéu trong khi Structure là kiểu trị

Hãy xem xét đoạn lệnh sau:

Debug WriteLine(Ng1.tuoi) ' xuất ra 20

Debug WriteLine(Ng2.fuoi) ' xuất ra 20

CNg] = New ConNguoiQ

CNel.tuoi = 30

CNg2 = CNegl

CNg2.fuoi = 20

Debug WriteLine(CNg1.tuoi)' xuất ra 30

Debug WriteLine(CNg2.tuoi)' xuất ra 20

Khi được gán cho nhau, hai biến tham chiếu Ng1, Ng2 cùng chứa địa chỉ trỏ đến một đối tượng Vì vậy thay đối giá trị của thuộc tính tuoi trên biến này, thay đổi cũng phản ánh trên biến kia

Ngược lại, khi được gán cho nhau, biến tham trị sẽ tạo nên một vùng nhớ chứa trị mới, hai

biên trị CNg1, CNg2 cùng chứa trị như nhau nhưng trên hai vùng nhớ khác nhau Do đó, gia tri cua thuộc tính tuoi của hai biên được chứa trên hai vùng nhớ và độc lập nhau

Chú ý: Kiểu String cũng là kiểu tham chiếu nhưng có một số đặc tính của kiểu trị

Chúng ta xét đoạn lệnh sau:

Vĩ dụ:

Dim chl, ch2 as String

chl = "Chudi 1"

Trang 13

ch2 = chỉ

ch2 = "Chuỗi 2"

MsgBox(chl) ' xuất ra Chuỗi 1

Chúng ta nghĩ rằng chl chứa "Chuỗi 2", nhưng chl lại chứa "Chuỗi 1" Lý do như sau: khi biến kiểu String đã được tạo ra, giá trị của chúng không thê sửa đổi Sửa đổi trị của biến

String là tạo ra một thê hiện mới chứa nội dung sửa đôi Do vậy:

+ Khi gán ch2 = ch1, ch2 trỏ đến cùng một chuỗi như chl

+ Nhưng khi gán ch2 = "Chuỗi 2" do không thé thay d6i giá trị nên ch2 trỏ đến một thể hiện mới khác với ch]

3 Mang & Structure

Máng là tập hợp các biến có cùng kiểu dữ liệu, cùng tên nhưng có chỉ số khác nhau Trong VB.Net, mang có chỉ số bắt đầu là 0 và luôn luôn là mảng động Không như trong VBó, với VB.Net chúng ta không được dùng từ khóa Redim đề khai báo mảng nhưng chỉ được dùng để định lại kích thước mảng Chúng ta có các cách khai báo mảng như sau:

Khai báo không khởi tạo kích thước và giá trị:

Dim a() as Integer

hoac

Dim a as Integer() Khai báo có khởi tạo kích thước nhưng không khởi tạo giá trị ban đầu:

Dim a(6) as Integer

Khai báo có khởi tạo kích thước và khởi tạo gia tri ban đầu:

Dim a() as Integer = {1,2,3,4,5,6,7}

hoac

Dim a() as Integer = New Integer(6){1,2,3,4,5,6,7}

hoac

Dim a() as Integer = New Integer(6){}

Chủ ý: Khi dấu ƒ } rông, các phần tử có giá trì khởi tạo là giá trị mặc định của kiểu đữ liệu

Trang 14

Mang thuộc lớp System Array nên có các thuộc tính và phương thức của lớp này Sau đây là một sô thuộc tính và phương thức đáng chú ý:

BinarySearch Tìm kiếm trên mảng một chiều đã được sắp xếp giá trị truyền vào,

sử dụng thuật giải tìm kiêm nhị phân

Clear Gán các phần tử trong dãy chỉ ra bằng giá trị mặc định của kiểu dữ

liệu các phân tử Clone Trả về bản sao cạn (shallow copy) của mảng Bản sao này chỉ sao

chép kiểu trị và kiểu tham chiếu nhưng không sao chép các đối tượng được tham chiếu đến

Copy Sao chép một phần của mảng vào mảng khác và thực hiện chuyển

đôi kiêu nêu cân

CopyTo Sao chép toàn bộ các phần tử của mảng một chiều vào mảng một

chiêu được truyên vào bắt đâu từ vị trí chỉ ra

GetLength Trả về số phần tử của một chiều được chỉ ra trên mảng

GetLowerBound | Trả về chỉ số nhỏ nhất của một chiều được chỉ ra trên mảng

GetUpperBound | Trả về chỉ số lớn nhất của một chiều được chỉ ra trên mảng

GetValue Trả về trị của một phần tử chỉ ra trên mảng

IndexOf Trả về chỉ số của phần tử đầu tiên trên máng một chiều (hoặc trên

một vùng của mảng) trùng với giá trị truyền vào LastIndexOf Trả về chỉ số của phần tử cuối cùng trên mảng một chiều (hoặc trên

một vùng của mang) trùng với giá trị truyền vào Reverse Đảo ngược thứ tự các phần tử trên mảng một chiều hoặc trên một

phân của mảng SetValue Gán trị cho một phần tử chỉ ra trên mảng

Sort Sắp xếp các phần tử trong mảng một chiều

Khác với mảng, Structure, kiểu đo người dùng định nghĩa (UDT: User Defñned Type), là một cầu trúc gồm một hoặc nhiều thành phần có kiểu dữ liệu khác nhau Tuy chúng ta có thể truy xuất riêng lẻ các thành phần nhưng Structure được xem như là một thực thể duy nhất Trong phiên bản trước, UDT được khai báo với từ khóa Type End Type Trong VB.NET, cú pháp khai báo Structure như sau:

Trang 15

[Public|Private|Protected] Structure <tén strucure>

{Dim|Public|Private|Friend}<tén thanh phan> As <kiéu dữ liệu>

{Dim|Public|Private|Friend}<tén thanh phan N> As <kiéu dir liéu>

Với Structure, chúng ta được phép khai báo các phương thức

Sau đây là các đặc điểm của Structure:

-Có các thành phần, kê cả bộ khởi tạo, phương thức, thuộc tính, hằng, sự kiện

-Có thể cài đặt các lớp giao tiếp (Interface)

-Có thể có các bộ khởi tạo chung, có hoặc không có tham SỐ

-Structure là kiểu trị

-Tất cả các thành phan cua Structure mac dinh la Public

- Các thành phần của Structure không được khai báo với từ khóa Protected

-Structure không thể kế thừa

Mỗi Structure có một bộ khởi tạo mặc nhiên không tham số ban đầu Bộ khởi tạo này sẽ khởi tạo mọi thành phân đữ liệu của Structure với giá trị mặc định của chúng Chúng ta không thê

định nghĩa lại chức năng nay

Vi Structure là kiêu trị, nên môi biên Structure luôn luôn găn liên với một thê hiện Structure

\ (chia lẫy phần nguyên)

Mod chia lây phần dư của số nguyên

A (lũy thừa)

e Toán Tử Nôi chuỗi

Toán tử chí dành cho toán hạng kiểu String với hai toán tử là & (ampersand) và + (cộng) Kết quả là một trị String gồm các ký tự của toán hạng thứ nhất tiếp theo sau là các ký tự của toán hạng thứ hai

KCT - CNPM B K44-CNTT— GTVT 15

Trang 16

TypeOf Is | So sánh kiểu của biến kiểu tham chiếu thứ nhất có trùng kiểu trên toán

hạng thứ hai, nêu trùng trả vê True, ngược lại False

ls Toán tử dành cho toán hạng kiểu tham chiếu, trả về True nếu hai toán

hạng cùng tham chiêu đên một đôi tượng, ngược lại là False)

Like Toán tử đành cho toán hạng kiểu String, trả về True nếu toán hạng thứ

nhât trùng với mâu (pattern) của toán hạng thứ hai, ngược lại là False

e Toán Tử Lý Luận và Bitwise

Toán tử luận lý trả về giá trị True/False

Toán tử Mô tả

Not Trả về giá trị ngược lại của toán hạng

And Trả về True (1) khi và chỉ khi hai toán hạng cùng là True (1)

Trang 17

không kiêm tra toán hạng thứ hai và trả về False

Or Trả về False (0) khi và chỉ khi hai toán hạng cùng là False (0)

OrElse Tra về giá trị như Or nhưng khi toán hạng thứ nhất là True (1) sẽ không

kiêm tra toán hạng thứ hai và trả vê True Xor Trả về True (1) khi và chỉ khi có 1 toán hạng là True (1)

If<điều kiện> Then

' Các lệnh sẽ thực hiện nếu điều kiện đúng

End If

IfNot <điều kiện> Then ' Các lệnh sẽ thực hiện nếu điều kiện sai

End If

Đề thay thế cách viết trên, chúng ta có cầu trúc sau:

If<điều kiện> Then ' Các câu lệnh khi điều kiện đúng

Trang 18

If<điều kiện 1> Then Elself <điều kiện 2> Then Elself <điều kiện n> Then

Else

End If Ghi chú: Các mệnh đề If Then Else có thể lồng nhau

Select Case <biéu thtrc>

Case <gia tri 1>

' Các lệnh thực hiện khi <biễu thức> = <giá trị 1>

Trang 19

Các câu lệnh trong vùng For Next chỉ được thực hiện nêu <biên đêm> có giá trỊ trong đoạn [<giá trị đâu>, <giá trị cuôi>]

Sau mỗi lần thực hiện, <biên đếm> sẽ được tăng thêm <bước> Nếu không chỉ định, <bước>

có gia tri là 1

Nêu <bước> có trị > 0, cau trúc chỉ thực hiện khi <giá trị đầu> <= <giá trị cudi>

Nêu <bước> có trị < 0, câu trúc chỉ thực hiện khi <gia tri dau> >= <gia tri cudi>

2 For Each Next

Với cú pháp này, chương trình sẽ duyệt qua từng phần tử trong tập hợp đang duyệt

Cần khai báo biến <phần tử> là kiểu của phần tử trong tập hợp đang duyệt Chúng ta có thể châm dứt lặp khi đang giữa vòng lặp băng lệnh ExIt For

Với cú pháp này, các câu lệnh đặt trong vùng Do While Loop chỉ thực hiện bao lâu <biéu

thirc logic> có gia tri True

Sau mỗi lần thực hiện các câu lệnh trong ving Do While Loop, <biéu thức logic> sẽ được

kiêm tra lại:

oNếu trị True, thực hiện lại vòng lặp

oNếu trị False, cham dứt vòng lặp

Cầu trúc này kiểm tra <biễu thức logic> trước khi thực hiện các lệnh nên sẽ không thực hiện lân nào nêu ngay lân đầu tiên <biêu thức logic> co tri False

Trang 20

Do kiêm tra sau khi thực hiện nên nêu ngay lân đâu <biêu thức logic> có trị False, cac lệnh cũng được thực hiện một lân

Chúng ta có thê chấm dứt giữa chừng vòng lặp với lệnh Exit Do

7 While End While

Cú pháp khác so với trong các phiên bản trước (While Wend), cách sử dụng như Do While Loop

CHUONG III Thủ tục và hàm Và Sử lý Lỗi

I Thu Tuc Va ham

Thay đổi trong thủ tục và hàm

Tham số truyền cho hàm hoặc thủ tục mặc định là tham trị ByVal chứ không phải ByRef như trong VB6

Trong VB6, tham số ParamArray vốn được truyền theo kiểu tham chiếu ByRef va khong thé thay đôi thành ByVal nhưng trong VB.NET là tham trị ByVal và không thê thay đôi thành ByRef

Tham số tủy chọn Optional phải khai báo giá trị mặc nhiên, khi không truyền tham số:

Trang 21

Function TESTFUNCTION(ByVal a As Short, ByVal c As Short) As Integer

Function BinhPhuong(ByVal so As Integer) As Integer

Return Convert ToInt32(so’2)

End Function

Function BinhPhuong(ByVal so As Double) As Double

Return so’2

End Function

Trong VB6, néu tham sé truyền vào là thuộc tính của một đối tượng cho thủ tục kiểu ByRef,

những thay đôi trên tham sô đó trong thủ tục không phản ánh trên thuộc tính Ngược lại,

trong VB.NET, các thay đôi như vậy đêu thê hiện trên thuộc tính của đôi tượng

1 Khai bao Option Strict

Khai báo Option Stric( On|Off là một lệnh mới không cho phép các chuyên đổi kiểu làm mất

dữ liệu Nhưng chúng ta có thê thực hiện các chuyển đổi mở rộng như chuyên biến kiểu Integer sang kiêu Long Khai báo này (khi bật On) sẽ không cho phép tự động chuyên đổi kiêu chuỗi sang kiểu sô hay ngược lại

Kiểu chuỗi có độ đài cố định trong VB6 không còn hỗ trợ trong VB.NET

3 Chỉ Thi #Region #End Region

Chi thi #Region #End Region được dùng dé đánh dẫu một khối lệnh có thể thu gon, gian

ra trên cửa sô viêt lệnh

KCT - CNPM B K44-CNTT— GTVT 21

Trang 22

#Region <chuỗi định danh>

#Region "Cac khai bao"

' Đưa vào các dòng lệnh khai báo

#End Region

khi thu lai:

4 Imports Khong gian tén ( Namespase)

Mục đích của lệnh Imports là để đưa không gian tên hoặc Assembly vào trong Module cho việc tạo và sử dụng các lớp trong không gian tên hay Assembly đó ngăn gọn hơn

Imports [<bí danh> = ]<không gian tên> [.<thanh phan>]

<bí danh>: tùy chọn, kiểu String, la tên tắt của <Namespace> được sử

dụng trong tham chiếu trên Module, Class Nếu lệnh Imports không

có phần bí danh, các thành phần định nghĩa trong không gian tên có

số thê được truy cập mà không cân chỉ rõ Nếu có bí danh, bí danh phải

Cú pháp được sử dụng trong phần truy cập

<không gian tên>: bắt buộc, không gian tên sử dụng trong Module, Class

<thành phẩn>: tùy chọn, tên của một thành phần đã được khai báo trong không gian tên Nó có thê là dinh danh, structure, class

Chú ý

e Mỗi lệnh Imports chỉ được sử dụng với một không gian tên

e Mỗi Module có thể có nhiều dòng Imports

e Các lệnh Imports phải được đặt trước tất cả các khai báo, kê cả lệnh khai báo Module hoặc

Trang 23

End Sub

End Class

V Sử lý Lỗi

Trong VB.NET, chúng ta có thê gặp các loại lỗi sau:

1 Phân Loại Lỗi

a Lỗi Cú Pháp( Syntax Error) Lỗi cú pháp, còn gọi là lỗi trong lúc thiết kế Những lỗi này dễ chỉnh sửa vì VB.NET sẽ kiểm tra cú pháp khi ta đang nhập từ bàn phím nên sẽ báo lỗi tức thời khi ta gõ sai hoặc dùng một từ không thích hợp

Run-time error

Léi thực thi xảy ra khi chương trình đang thực thi Đây là những lỗi khó xác định hơn lỗi cú pháp Lôi thực thi có thê từ các lý do khác nhau như:

oMửở một tập tin không tồn tại

oTruy xuất một thư mục nhưng không có quyên trên đó

oTruy xuất dữ liệu một bảng không tôn tại trong CSDL

ra tình trạng lỗi qua lệnh Throw Lệnh này sẽ đưa ra một đối tượng kiểu System.Exception chứa thông tin về lỗi đang xảy ra

Trước đây, chúng ta thường sử dụng cú pháp On Error Goto <nhãn lỗi> đề xử lý lỗi Đây là một loại xử lý không cấu trúc vì kê từ dòng lệnh On Error Goto <nhãn lỗi> đến cuối thủ tục hay hàm, nếu dòng lệnh nào gây lỗi chương trình đều nhường quyền xử lý cho đoạn lệnh của

<nhãn lỗi> Với VB.NET, chúng ta phát hiện và xử lý lỗi một cách chặt chẽ với cú pháp:

Try ' các lệnh có khả năng gây lỗi

Catch

' các lệnh xử lý khi lỗi xảy ra

Cú pháp

KCT - CNPM B K44-CNTT— GTVT 23

Trang 24

Cau tric này cho phép chúng ta thử (Try) thực hiện một khối lệnh xem có gây lỗi không; nêu

có sé bay va xử lý (Catch) lỗi

Cấu trúc này chia làm các khối sau:

O Khối Try: chứa các câu lệnh có khả năng gây lỗi

O Khôi Catch: các dòng lệnh để bẫy và xử lý lỗi phát sinh trên khối Try Khối này gồm một loạt các lệnh bắt đâu với từ khóa Catch, biên kiêu Exception ứng với một kiêu Exception muôn bây và các lệnh xử lý Dĩ nhiên, chúng ta có thê dùng một lệnh Catch cho các System.Exception, nhưng như thế sẽ không cung cấp thông tin đây đủ cho người dùng về lỗi đang xảy ra cũng như hướng dẫn cách xử lý cụ thể cho mỗi tình huống Ngoài những lỗi đã

xử lý, có thể xảy ra những lỗi ngoài dự kiến, để xử lý các lỗi này, chúng ta nên đưa thêm một lệnh Catch để bẫy tất cả các trường hợp còn lại và xuất thông tin về lỗi xảy ra

O Khối Finally: là khối tùy chọn, sau khi chạy qua các khối Try và Catch nếu không có chỉ

định nào khác, khôi Finally sẽ được thực hiện bât kê có xảy ra lôi hay không

Cuối cùng, cấu trúc bẫy và xử lý lỗi chấm đứt với từ khóa End Try

Cú pháp chung cho một cấu trúc xử lý lỗi như sau:

Trang 25

Messagebox.Show( “Xin nhập số nguyên !”)

End Try

Câu lệnh Catch có thê có nhiều cách sử dụng:

a.Bẫy Không có điều kiện

Dim d as Double, i as Integer

c Bay voi nhiing Exception đặc biệt

Các kiêu Exception đặc biệt thường gặp

ArgumentException Tham số truyền không hợp lệ

DivideByZeroException Chương trình thực hiện phép chia một số cho số không OverFlowException Kết qua của một phép toán hoặc của một phép chuyên

đôi kiêu lớn hơn khả năng lưu giữ của biên FieldAccessException Chương trình truy xuất một field Private hoặc Protected

của lớp InvalidCastException Chương trình đang có thực hiện một chuyên đôi không

Trang 26

tại TypeUnloadException Chương trình truy xuất một lớp chưa được tải lên vùng

Catch ex As Exception When i = 0

MessageBox.Show("Khéng thể chia cho số không")

End Try

PHAN II: LAP TRINH HUONG DOI TUONG TRONG VB.NET

Trong thé giới thực, đối tượng là thực thể tồn tại như con người, xe, máy tính, v.v [rong

ngôn ngữ lập trình, đôi tượng có thê là màn hình, điêu khiên v.v

Lập trình hướng đối tượng là kiểu lập trình nhằm vào sự tương tác giữa các đối tượng Mỗi đối tượng có những thuộc tính xác định các đặc điểm, những phương thức xác định các chức năng của đối tượng Bên cạnh đó, đối tượng cũng có khả năng phát sinh các sự kiện khi thay đổi thuộc tính, thực hiện một phương thức hay bị đối tượng khác tác động vảo Tất cả những thuộc tính, phương thức và sự kiện tạo nên câu trúc của đối tượng Có bốn ý niệm trong Lập trình hướng đối tượng:

oAbstraction: Tính trừu tượng

oEncapsulation: Tinh bao boc

oInheritance: Tính kế thừa

oPolymorphism: Tính đa hình

Mỗi ý niệm đều có vai trò quan trọng trong lập trình hướng đối tượng

VỊ Chương 4 :Các tính chất

I Tinh triru tượng

Chúng ta thường lẫn lộn giữa lớp (Class) và đối tượng (Object) Cần phân biệt lớp là một ý niệm trừu tượng, còn đối tượng là một thể hiện của lớp

Vi du:

Class ConNgười là một ý niệm trừu tượng, nhưng NguyễnVănA là một đối tượng cụ thé

Trang 27

Từ những đối tượng giống nhau, chúng ta có thể trừu tượng hóa thành một lớp đối tượng Tính trừu tượng cho phép chúng ta loại bỏ tính chất phức tạp của đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thức cân thiệt của đôi tượng trong lập trình

II Tinh Bao Bọc

Tính bảo bọc nói lên khả năng thực hiện nhiệm vụ của đối tượng độc lập với lớp giao tiếp (mterface) của nó Chương trình tương tác với đối tượng thông qua lớp giao tiếp, gồm các thuộc tính và phương thức phô diễn ra bên ngoài Bao lâu lớp giao tiếp của đối tượng không thay đổi thì chương trình vẫn có khả năng tương tác với nó, cho dau cai dat (Implementation)

đã được viết lại hoàn toàn

Tính đóng gói cho phep ta dấu thông tin của đối tượng bằng cách kết hợp thông tin và các phương thức liên quan đến thông tin trong đối tượng

Vĩ dụ:

Xe hơi có các chức năng (phương thức phô diễn bên ngoài) như Ngừng, Chạy tới, Chạy lùi Đây là những gì cần thiết cho Tài xế khi tương tác với Xe hơi Xe hơi có thể có một đối tượng Động cơ nhưng Tài xế không cần phải quan tâm Tất cả những gì cần quan tâm là những chức năng để có thể vận hành xe Do đó, khi thay một Động cơ khác, Tài xế vẫn sử dụng các chức năng cũ để vận hành Xe hơi bao lâu các phương thức phô diễn bên ngoài (Interface) không bị thay đồi

II — Tính kế thừa

Tính kế thừa là khả năng cho phép ta xây dựng một lớp mới dựa trên các định nghĩa của một lớp đã có Lớp đã có gọi là lớp Cha, lớp mới phát sinh gọi là lớp Con và đương nhiên kế thừa tất cả các thành phần của lớp Cha, có thể mở rộng công năng các thành phần kế thừa cũng như bổ sung thêm các thành phần mới

Chúng ta phân biệt hai loại quan hệ:

Biểu thị tính kế thừa Trong quan hệ "là-một"”, một | đối

tượng của lớp Con được xem như là một đôi tượng | Xe hư của lớp Cha

Vi dụ: Từ lớp Xe ta tạo nên lớp Xe hơi mở rộng, lớp này mặc nhiên kế thừa tất cả các thành phán của lớp xe Ta có thê nói: một xe hơi là một chiếc xe

Có-một

Quan hệ này mang ý nghĩa gồm có Trong quan hệ "có-một”, một đối tượng có thể có một hoặc nhiều thành phân tham chiếu đến các đối tượng khác

Vị đụ: Khi lập mô hình loại xe hơi, bạn muốn diễn tả ÿ tưởng chiếc xe "có-một" tay Idi

Ching ta khong thé phat sinh lớp Xe hơi từ một Tay lái hay ngược lại (một Xe hơi "là-một" Tay lái lII) Thay vì vậy, chúng ta phải có hai lớp độc lập làm việc với nhau trong đó, lớp phía ngoài (lớp Xe hơi) sẽ tạo và phô diễn công năng của lớp phía trong (lớp Tay lái)

KCT - CNPM B K44-CNTT— GTVT 27

Trang 28

IV Tinh da hinh

Tính đa hình là khả năng một ngôn ngữ xử lý các đối tượng hữu quan theo cùng một cách

Tính đa hình thể hiện dưới nhiều hình thức:

Là khả năng cho phép người lập trình gọi trước một phương thức của đối tượng, tuy chưa xác định được đối tượng Đến khi thực hiện, chương trình mới xác định được đối tượng và gọi phương thức tương ứng của đối tượng đó Kết nối trễ giúp chương trình được uyên chuyên chỉ yêu cầu đối tượng cung cấp đúng phương thức cần thiết là đủ

Vị dụ: Chúng ta có lớp Xe với phương thức Chạy và các lớp Xe đạp, Xe hoi, Xe day cing phát sinh từ lớp Xe Chúng ta chưa biết sẽ sử dụng xe gì để di chuyển vì tùy thuộc tình hình

CÓ sẵn xe nào nên gọi trudc Phuong thức Chạy Khi chương trình thực thi, tùy theo đối tượng của lớp nào được đưa ra mà phương thức Chạy của đối tượng đó được gọi

V Nạp chồng — Overloading

Đây là khả năng cho phép một lớp có nhiều thuộc tính, phương thức cùng tên nhưng với các tham sô khác nhau về loại cũng như về sô lượng Khi được gọi, dựa vào tham sô truyên vào, thuộc tính hay phương thức tương ứng sẽ được thực hiện

Ghi dé - Overriding

Hình thức này áp dung cho lớp Con đối với lớp Cha Lớp Con được phép có một phương thức cùng tên, cùng số tham số có kiểu đữ liệu như phương thức của lớp Cha hoặc những lớp trước đó nữa (lớp phát sinh ra lớp Cha .) với cài đặt khác đi Lúc thực thi, nếu lớp Con không có phương thức riêng, phương thức của lớp Cha sẽ được gọi, ngược lại nếu có, phương thức của lớp Con được gọi

VII Chương IV : Lớp (Class)

Tạo một Class

Chúng ta tạo một Class mới trong VB.NET bằng cách đùng thực đơn Project | Ađd Class Hộp thoại Add New Item sẽ hiện ra, chọn Class trên khung bên phải

L Tạo Một Namespase

Trong một tập tin như trên có thê chứa nhiều Class khác nhau

Chúng ta có thể tổ chức các Class cùng loại, cùng nhóm vào chung một không gian tên (NameSpace) do chung ta tao ra

Vi du:

Namespace Dong vat

Public Class An co

End Class

Trang 29

Public Class An_thit

Private conbo as Dongvat.Anco

Một không gian tên có thê xuất hiện trong nhiều tập tin Class khác nhau trong một Project

Ví dụ ta có tập tin thứ hai với nội dung:

Vidu:

Namespace Dong vat

Public Class An_tap

Khi tạo một Class kế thừa, chúng ta sẽ có một Class mới kế thừa tất cả các thành phần đã

được khai báo với từ khóa Public, Friend va Protected cia Class duoc ké thira Cu phap tao

Class kê thừa như sau:

Public Class <tên Class con>

Cú pháp Inherits <tên Class cha>

Lệnh Inherits phải là dòng đầu tiên sau đòng lệnh khai báo Class

Hil Khai báo phương thức

Phương thức là chức năng mà đối tượng có thể thực hiện, nó có thể là một thủ tục (Sub) hoặc

một hàm (Function) Với hàm, phải có giá trỊ trả vê

Cú pháp tạo các phương thức:

Cú pháp |Í<từ khóa>] Sub <tên thủ tục>([<các tham số>])

KCT - CNPM B K44-CNTT— GTVT 29

Trang 30

End Sub

[<từ khóa>] Function <tên hàm>([<các tham số>])

Return <gia tri>

Public Cho biết phương thức được gọi ở mọi nơi

Protected Cho biết phương thức chỉ được gọi trong phạm vi của Class khai báo

và các lớp Con (Subclass) Friend Cho biết phương thức chỉ được gọi trong phạm vi của Project

Protected Cho biết phương thức chỉ được gọi trong phạm vi Proctected và Friend Friend

Private Cho biết phương thức chỉ được gọi trong phạm vi của Class

Overloads Cho biết phương thức Nạp chồng một hay nhiều phương thức có cùng

tên với phương thức trong lớp cơ sở Danh sách tham sô trong phương thức này phải khác với danh sách tham số của mỗi phương thức Nạp chồng khác về số lượng, hoặc về các kiểu đữ liệu hoặc cả hai

Chúng ta không cần phải dùng từ khóa Overloads khi tạo các phương thức Nạp chồng trong một lớp Nhưng nếu đã khai báo cho một thì phải khai báo cho tất cả

Không được phép sử dụng cả hai từ khóa Overloads và Shadows trong cùng một phương thức

Ví dụ chúng ta có các lớp Tĩnh và Toan như sau:

Public Class Tinh Function BP(ByVal so As Short) As Integer Return so ^ 2

End Function Function BP(ByVal so As Integer) As Long Return so ^ 2

End Function End Class Public Class Toan

KCT - CNPM B K44-CNTT— GTVT 30

Trang 31

Inherits Tinh Overloads Function BP(ByVal so As Double) As Double Return so ^ 2

End Function End Class Cac ham BP trong lớp Tĩnh có thể có hoặc không có từ OverLoads Một thể hiện của lớp Toan có thể sử dụng tất cả các hàm Overloads

Overrides Cho biét phương thức ghi đè một phương thức cùng tên của lớp cơ Sở

Số lượng tham số, kiểu đữ liệu của tham số cũng như kiểu giá trị trả về phải khớp với của lớp cơ sở

Overridable Cho biết phương thức này được phép ghi đè bằng một phương thức

cùng tên trong lớp Con Phương thức với từ khóa Overrides mặc nhiên

là được phép ghi đè

NotOverridable | Cho biết phương thức không được phép ghi đè trong lớp Con

MustOverride | Cho biết phương thức không được cài đặt trong lớp khai báo nhưng

Không được phép sử dụng cả hai từ khóa Overloads và Shadows trong cùng một phương thức

Vi du: Chung ta có lớp ClassCha với thuộc tinh Cao:

Public Class ClassCha Private h As Single Property Cao() As Single Get

Return h End Get Set(ByVal Value As Single)

h = Value End Set End Property End Class

Va lop ClassCon kế thừa từ lớp ClassCha va che mờ thuộc tính Cao

KCT - CNPM B K44-CNTT— GTVT 31

Trang 32

Public Class ClassCon Inherits ClassCha Public Shadows Sub CaoQ MessageBox.Show("Téi sé con cao hon nita", "Class Con") End Sub

End Class

Shared Cho biết phương thức được dùng chung - nghĩa là phương thức này

không liên kết với một thể hiện nào của lớp Chúng ta có thê gọi phương thức đùng chung thông qua tên của lớp hoặc tên biến của một thể hiện cụ thé

Vi dụ chúng ta có lớp TEST với một hàm Shared nhưự sau:

Class TEST

Shared Function Cong(ByVal a As Integer, ByVal b As Integer) As Integer

Returna+ b End Function End Class Khi sử dụng, chúng ta có thé viét:

Dim y As TEST Console WriteLine(y.Cong(12, 9))

hoặc:

Console WriteLine(TEST.Cong(12, 9))

IV Khai báo thuộc tính

Thuộc tính là thành phần lưu giữ các tính chất, đặc điểm của đối tượng Ứng với mỗi thuộc tính, chúng ta cân khai báo một biên PrIvate tương ứng đê lưu giữ giá trị Trong VB.NET, chúng ta dùng một cú pháp chung cho truy xuât và gán trị của thuộc tính như sau:

' Khai báo biến lưu giữ giá trị của thuộc tính Private mthuoctinh As <Kiêu đữ liệu>

[<Ttr khoa>] Property Thuoc_tinh() As <Kiéu dit ligu>

pep ' Truy xuât giá trị của thuộc tính tức truy xuât đên giá trị của biên

Get Return mthuoctinh

Trang 33

End Get

' Gan tri cho thuộc tinh tức gán trị cho bién

Set (ByVal Value As <Kiéu dtr liéu>) mthuoctinh = Value

Một thuộc tính chỉ có thể là thuộc tính mặc định nếu thỏa các điều kiện:

oMỗi Class chỉ được có một thuộc tính mặc định, phải kể đến cả các thuộc tính kế thừa

o Thuộc tính mặc định không được là Shared hay Private

oNếu một thuộc tính phi đè (Overloaded) là mặc định thì tất cả các thuộc tính cùng tên cũng phải khai báo mặc định

oThuộc tính mặc định phải có ít nhất một tham số

Private mthuoctinh As <Kiêu đữ liệu>

Default Public Property Thuoc_tinh(Index as Integer) As <Kiéu dit ligu>

Get Return mthuoctinh End Get

u pnap Set (ByVal Value As <Kiéu di liéu>)

mthuoctinh = Value End Set

End Property

a.Read only

Cho biết thuộc tính chỉ được phép đọc không cho phép gắn

Private mthuoctinh As <Kiểu đữ liệu>

Cú pháp |Public ReadOnly Property Thuoc_tínhQ As <Kiêu đữ liệu>

Trang 34

Return mthuoctinh End Get

Private mthuoctinh As <Kiéu dit ligu>

Public WriteOnly Property Thuoctinh() As String Set (ByVal Value As String)

mthuoctinh = Value End Set

End Property

Cu phap

Chúng ta không cần phải đùng từ khóa Overloads khi tạo các thuộc tính nạp chồng trong một lớp Nhưng nêu đã khai báo cho một thì phải khai báo cho tât cả

Không được phép sử dụng cả hai từ khóa sau một lượt: Overloads và Shadows trong cùng

Trang 35

Shared

Cho biết thuộc tính được chia sẻ - nghĩa là thuộc tính không gắn chặt với một thê hiện nào

của lớp nhưng được sử dụng chung giữa các thê hiện của một lớp

VIH Chương VI: Sự kiện (Event)

L Khai báo sự kiện

Sự kiện là thông điệp do một đối tượng phát sinh cho biết một hành động đang xảy ra Hành động có thể do sự tương tác của người dùng, do chương trình khác kích hoạt .Đối tượng kích hoạt biến cỗ được gọi là đối tượng gửi biến cố Đối tượng bắt sự kiện và đáp ứng lai gol

là đối tượng nhận sự kiện Đối tượng gửi không biết đối tượng nhận sự kiện do nó kích hoạt, nhưng giữa đối tượng gửi và đối tượng nhận có một đối tượng trung gian Trong NET Framework có một kiểu đặc biệt thích hợp cho chức năng của vai trò trung gian này là Delegate (ty quyén)

Chức năng của sự kiện được xác định từ ba yếu tố liên quan: một đối tượng cung cấp đữ liệu

sự kiện (event data), một event delegate và một đôi tượng kích hoạt sự kiện (sender) .NET

Framework có một quI ước vệ việc đặt tên các lớp và các phương thức liên quan đên sự kiện như sau:

IL Phát sinh sự kiện

Để một class phát sinh sự kiện EventName cần có các yếu tô sau:

-Một tham số sự kiện chứa các đữ liệu có tên EventNameEventArgs phát sinh từ lớp

System.EventArgs

-Một thành phần xử lý sự kiện có tên EventNameEventHandler Đây là một thủ tục sẽ được

gọi khi sự kiện xảy ra Chúng ta có thé sử dung bat ky thủ tục hợp lệ nào làm thành phần xử

lý sự kiện nhưng không được là một hàm

-Một đối tượng phát sinh sự kiện Đối tượng này phải cung cấp :

wMột khai báo sự kiện

[<Từ khoá>| Event EventName As EventNameEventHandler

wMột phương thức tên OnEventName phát sinh sự kiện

Các đối tượng event delegate và đối tượng dữ liệu biến cố có thể phát sinh từ những lớp

tương ứng có săn trong NET

Các từ khoá khai báo sự kiện có thê là:

Public Sử dụng được ở mọi nơi Sự kiện không có từ khóa mặc nhiên là Public

Private Chỉ truy xuất trong phạm vi khai báo

KCT - CNPM B K44-CNTT— GTVT 35

Trang 36

Friend Chỉ truy xuất trong phạm vi Project

Protected Friend | Chỉ truy xuất trong phạm vi của Protected và Friend

Shadows Cho biết sự kiện che mờ một thành phần có tên tương tự trong lớp cơ

sở Chúng ta có thể che mờ một thành phan loại này bằng một thành phần loại khác Thành phần bị che mờ sẽ không còn tác dụng trong lớp

kế thừa che mờ nó

Các sự kiện trong VB.NET không hỗ trợ đúng nguyên tắc kế thừa Một sự kiện khai báo

trong Class nào chỉ được phớp gọi phát sinh sự kiện (RaiseEvent) chỉ trong lớp đó mả thôi, không được gọi phát sinh kê cả trong các lớp kê thừa

Public Class Con Nguoi

Private Cao As Single

Public Event Chieu_Cao_Thay_doi()

Public Property Chieu_Cao() As Single

Để sử dụng các sự kiện trên một biến, chúng ta sử dụng cú pháp sau khi khai báo biến:

Private WithEvents <tén bién> As <tén Class>

II Kết hợp sự kiện với sử lý

Chúng ta kết hợp sự kiện với xử lý sự kiện bằng các lệnh: Handles hoặc AddHandler

Tu khoa WithEvents va Handles cung cap cach khai báo các xử lý sự kiện Các sự kiện do một đôi tượng phát sinh với từ khóa WithEvents có thê được xử lý băng bât kỳ thủ tục nào được chỉ ra trong mệnh đê Handles của sự kiện Tuy mệnh đê Handles là cách thức chuân đê kêt hợp một sự kiện với một xử lý sự kiện, nhưng lại giới hạn sô các biên cô kêt hợp với cùng xử lý sự kiện khi biên dịch

Trang 37

Các lệnh AddHandler va RemoveHandler uyén chuyén hơn trong việc kết hợp sự kiện với xử

lý sự kiện Chúng cho phép chúng ta linh hoạt kết hợp và ngắt rời các sự kiện với các xử lý

sự kiện lúc thực thi và chúng không đòi hỏi chúng ta phải khai báo biên với từ khóa WithEvents

Với các sự kiện kết hợp với các form, control, Visual Basic NET tự động phát sinh một xử

lý sự kiện rông và kêt hợp với sự kiện

Ví dụ khi chúng ta nhấp đúp vào một nút lệnh trên màn hình ở chế độ thiết kế, Visual Basic NET tạo một xử lý sự kiện kêt hợp với sự kiện Click của nút lệnh như sau:

Private Sub Buttonl Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

End Sub

Hoặc chúng ta kết hợp các biến cố Click của các nút lệnh Button1, Button2 cho cùng một xử

lý sự kiện như sau:

AddHandler Button1.Click, AddressOf Nhannut

AddHandler Button2 Click, AddressOf Nhannut

Private Sub Nhannut(ByVal sender As _

System.Object, ByVal e As System.EventArgs)

Public Class Con_nguoi

Private ten as String

Public Sub Lam_viec()

Dim ten as String

' biễn cục bộ của Sub được sử dung

Trang 38

Public Overridable Sub Gioi_thieu()

MessageBox.Show(“Téi la thé hién ciia lopCha”’)

End Sub

End Class

Public Class lopCon

Inherits lopCha

Public Overrides Sub Gioi_thieu()

MessageBox.Show("Téi la thé hién cia lopCon")

Public Overridable Sub Gioi_thieu()

MessageBox.Show("Téi la thé hiện của lopCha")

End Sub

Trang 39

Public Overrides Sub Gioi_thieu()

MessageBox.Show(“Téi la thé hién cia lopCon”’)

End Sub

End Class

Với đoạn lệnh sau:

Dim a as New lopCon(Q)

a.Chao() ‘ Téi la thể hiện của lopCon

Nhưng nếu thủ tục Chao của lopCha như sau:

Public Sub Chao()

MyClass Gioi_thieu()

End Sub

Thi :

a.Chao() ' Téi là thể hiện của lopCha

Khởi tạo thế hiện

Để tạo đối tượng cho một Class, trình biên địch gọi một hàm đặc biệt được gọi là bộ khởi tạo (Constructor) Chúng ta có thể định nghĩa bộ khởi tạo trong Class Nhưng nếu chúng ta không định nghĩa, VB sẽ sử dụng bộ khởi tạo mặc định Đề định nghĩa bộ khởi tạo, chúng ta chỉ cần định nghĩa một thủ tục New bên trong Class Do tính chất nạp chồng (Overloading),

nên Class có thể định nghĩa nhiều bộ khởi tạo

Abstract Base Class

Từ khoá MustInherit

Khi chúng ta muốn tạo một lớp chỉ dùng để thừa kế, phải khai báo với từ khóa MustInhcrit Lớp này không cho phép khởi tạo thể hiện, nhưng phải tạo lớp con kế thừa từ lớp này và khởi tạo thê hiện từ lớp kê thừa:

KCT - CNPM B K44-CNTT— GTVT 39

Trang 40

Cú pháp |MustOverride Sub <tên thủ tục>

Kết hợp hai ý niệm MustInherit và MustOverride, chúng ta sẽ có Abstract Base Class Day 1a một Class chỉ có khai báo không có phần cài đặt Muốn dùng phải tạo class kế thừa, từ đó mới sử dụng được

Vĩ dụ:

Public MustInherit Class Con_nguoi

Public MustOverride Sub Chao()

Public MustOverride Sub Hoi_tham()

End Class

Lop Abstract Base Class rat thich hop dé chúng ta tạo cái sườn hay bố cục của chương trình trong lúc thiết kê Tât cả những lớp kê thừa lớp Abstract Base Class đêu phải cài đặt các thanh phan da khai bao trong Abstract Base Class:

Lớp giao tiép (Interface)

Tuong ty Abstract Base Class, Interface co thể khai báo tập hợp các thuộc tính, phương thức

và sự kiện, nhưng không có phân cài đặt chúng (Implementation) Các lớp hô trợ Interface đêu phải cài cặt các thành phân của Interface như đã khai báo

Chúng ta có cú pháp sau để khai báo Interface:

[<Từ khóa>] Interface <tên gọi>

[ Inherits <tén interface1>|,<ten interface2>| |

Ngày đăng: 08/05/2014, 15:16

HÌNH ẢNH LIÊN QUAN

Bảng  liệt  kê  các  thuộc  tính  thường  dùng  của  DataŒrid: - Báo cáo thực tập môn VB.Net
ng liệt kê các thuộc tính thường dùng của DataŒrid: (Trang 43)
Bảng  liệt  kê  các  phương  thức  thường  dùng  của  DataGrid - Báo cáo thực tập môn VB.Net
ng liệt kê các phương thức thường dùng của DataGrid (Trang 44)
Bảng  liệt  kê  các  thuộc  tính  chính  của  DataGridColumnStyle - Báo cáo thực tập môn VB.Net
ng liệt kê các thuộc tính chính của DataGridColumnStyle (Trang 46)
Hình  dưới  day  cho  thay  cac  đôi  x - Báo cáo thực tập môn VB.Net
nh dưới day cho thay cac đôi x (Trang 57)
Hình  trên  mô  tả  mô  hình  phân  cấp  các  class  của  DataAdapter,  cả  SQLDataAdapter  và - Báo cáo thực tập môn VB.Net
nh trên mô tả mô hình phân cấp các class của DataAdapter, cả SQLDataAdapter và (Trang 59)
E  Chon 2  bảng  Categories  và  Products  làm  nguồn  đữ  liệu - Báo cáo thực tập môn VB.Net
hon 2 bảng Categories và Products làm nguồn đữ liệu (Trang 82)

TỪ KHÓA LIÊN QUAN

w