lập trình hướng đối tượng trong VB
Trang 1CHƯƠNG 0 MỤC LỤC
Chương 0 MỤC LỤC i
Chương 1 MỞ ĐẦU 1
1.1 BIẾN TOÀN CỤC 1
1.2 BIẾN CỤC BỘ 2
1.3 HÀM VÀ BIẾN TOÀN CỤC 10
1.4 THAM SỐ VÀ HÀM, THỦ TỤC 4
1.4.1 Khái niệm 5
1.4.2 Phân loại 5
1.4.3 Chương trình minh họa 5
1.5 KIỂU CẤU TRÚC 7
1.6 ỨNG DỤNG 9
1.6.1 Ứng dụng 1 9
1.6.2 Ứng dụng 2: 10
1.7 BÀI TẬP 11
Trang 22.1 THỦ TỤC-PROCEDURE 13
2.1.1 Khái niệm 13
2.1.2 Các đặc điểm 14
2.1.3 Cú pháp khai báo thủ tục 13
2.2 HÀM-FUNCTION 14
2.2.1 Khái niệm 14
2.2.2 Các đặc điểm 15
2.2.3 Cú pháp khai báo hàm 15
2.3 ĐƠN THỂ-MODULE 16
2.3.1 Khái niệm 16
2.3.2 Phân loại đơn thể 16
2.4 NAMESPACE 16
2.5 TẦM VỰC 16
2.5.1 Tầm vực khối lệnh 17
2.5.2 Tầm vực Thủ tục, Hàm 18
2.5.3 Tầm vực đơn thể 18
2.5.4 Tầm vực namespace 19
2.6 TÀI LIỆU THAM KHẢO 20
Chương 3 CÁC PHƯƠNG PHÁP LẬP TRÌNH 21
3.1 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG LỆNH 21
3.2 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG THỦ TỤC VÀ HÀM 21
3.3 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNH ĐƠN THỂ 21
3.3.1 Khái niệm 21
Trang 33.3.2 Phân loại đơn thể 22
3.4 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 22
3.5 CÁC NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 22
Chương 4 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VB.NET 23
4.1 LỚP ĐỐI TƯỢNG 23
4.1.1 Khái niệm 23
4.1.2 Cú pháp khai báo lớp 23
4.2 ĐỐI TƯỢNG 24
4.2.1 Khái niệm 24
4.2.2 Cú pháp khai báo đối tượng 24
4.3 PHƯƠNG THỨC 24
4.3.1 Khái niệm 25
4.3.2 Cú pháp định nghĩa phương thức 25
4.4 ĐỐI TƯỢNG HÀNH ĐỘNG 25
4.4.1 Khái niệm 25
4.4.2 Cú pháp gọi thực hiện phương thức 26
4.5 CHƯƠNG TRÌNH MINH HỌA 26
4.6 ỨNG DỤNG: 27
4.6.1 Ứng dụng 1 27
4.6.2 Ứng dụng 2 29
4.7 BÀI TẬP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI VB.NET 30
Trang 4Chương 5 PHƯƠNG THỨC THIẾT LẬP CONSTRUCTORS 32
5.1 MỤC ĐÍCH 32
5.2 CÁC ĐẶT ĐIỂM 32
5.3 GHI CHÚ 33
5.4 PHÂN LOẠI PHƯƠNG THỨC THIẾT LẬP 33
5.5 ỨNG DỤNG PHƯƠNG THỨC THIẾT LẬP 34
5.6 BÀI TẬP PHƯƠNG THỨC THIẾT LẬP 36
Chương 6 PHƯƠNG THỨC PHÁ HỦY 37
6.1 MỤC ĐÍCH 37
6.2 CÁC ĐẶT ĐIỂM 37
6.3 GHI CHÚ 38
6.4 ỨNG DỤNG PHƯƠNG THỨC PHÁ HỦY 38
6.5 BÀI TẬP PHƯƠNG THỨC PHÁ HỦY 38
Chương 7 TOÁN TỬ SỐ HỌC, TOÁN TỬ GÁN, TOÁN TỬ SO SÁNH 39 7.1 TOÁN TỬ SỐ HỌC 42
7.1.1 Khái niệm 42
7.1.2 Ứng dụng toán tử số học 42
7.2 TOÁN TỬ GÁN 44
7.3 TOÁN TỬ SO SÁNH 44
Trang 5Chương 8 CƠ SỞ DỮ LIỆU 48
8.1 LỚP ĐỐI TƯỢNG OleDbConnection 48
8.1.1 Mục đích 48
8.1.2 Các đặc điểm chính của lớp đối tượng OleDbConnection 48
8.1.3 Cây kế thừa 48
8.1.4 Các thuộc tính của lớp đối tượng OleDbConnection 49
8.1.5 Các vấn đề cần lưu ý khi sử dụng lớp OleDbConnection 50
8.1.6 Phương thức thiết lập của lớp OleDbConnection 50
8.1.7 Các phương thức chính của lớp đối tượng OleDbConnection 51
8.1.8 Hàm kết nối minh họa 51
8.2 LỚP ĐỐI TƯỢNG OleDbCommand 52
8.2.1 Mục đích 52
8.2.2 Các đặc điểm chính của lớp đối tượng OleDbCommand 52
8.2.3 Cây kế thừa 52
8.2.4 Các thuộc tính của lớp đối tượng OleDbCommand 53
8.2.5 Các vấn đề cần lưu ý khi sử dụng lớp OleDbCommand 54
8.2.6 Phương thức thiết lập của lớp OleDbCommand 54
8.2.7 Các phương thức chính của lớp đối tượng OleDbCommand 55
8.3 Sr 55
PHỤ LỤC A CÁC KIỂU DỮ LIỆU CHUẨN TRONG VB.NET57 A.1 CÁC KIỂU DỮ LIỆU CƠ SỞ 57
Trang 6A.2 KIỂU THAM CHIẾU 58
A.3 ĐỐI TƯỢNG TRONG VB.NET 59
A.3.1 Khái niệm 59
A.3.2 Cú pháp 59
A.3.3 Các qui định khi khai báo đối tượng 59
A.4 TÀI LIỆU THAM KHẢO 60
PHỤ LỤC B CÁC TỪ KHÓA TRONG VB.NET 61
B.1 DANH SÁCH CÁC TỪ KHÓA TRONG VB.NET 61
B.2 TÀI LIỆU THAM KHẢO 62
PHỤ LỤC C CÁC TOÁN TỬ TRONG VB.NET 63
C.1 TOÁN TỬ SỐ HỌC 63
C.1.1 Các toán tử số học cơ bản 63
C.1.2 Các toán tử số học viết tắt 63
C.2 TOÁN TỬ SO SÁNH 64
C.3 TOÁN TỬ LUẬN LÝ 64
C.4 TOÁN TỬ TRÊN CHUỖI 64
C.5 TÀI LIỆU THAM KHẢO 65
66
Trang 7D.1 CẤU TRÚC ĐIỀU KHIỂN RẼ NHÁNH 66
D.1.1 Cấu trúc điều khiển rẽ nhánh if với lệnh đơn 66
D.1.2 Cấu trúc điều khiển rẽ nhánh if với lệnh phức 66
D.1.3 Cấu trúc điều khiển rẽ nhánh if else 66
D.1.4 Cấu trúc điều khiển rẽ nhánh if else lồng nhau 67
D.1.5 Cấu trúc điều khiển rẽ nhánh select case 67
D.2 CẤU TRÚC ĐIỀU KHIỂN VÒNG LẶP 68
D.2.1 Cấu trúc điều khiển vòng lặp For…Next 68
D.2.2 Cấu trúc điều khiển vòng lặp For Each…Next 69
D.2.3 Cấu trúc điều khiển vòng lặp While…End While 69
D.2.4 Cấu trúc điều khiển vòng lặp Do While…Loop 70
D.2.5 Cấu trúc điều khiển vòng lặp Do…Loop While 70
D.2.6 Cấu trúc điều khiển vòng lặp Do…Loop Until 70
D.2.7 Cấu trúc điều khiển vòng lặp Do Until…Loop 70
D.3 TÀI LIỆU THAM KHẢO 71
Trang 8CHƯƠNG 1 MỞ ĐẦU
Bài mẫu 1 Viết chương trình nhập họ tên, điểm toán, điểm văn của một học sinh Tính điểm trung bình và xuất kết quả
1.1.1 Khái niệm
Biến toàn cục là biến được khai báo bên ngoài tất cả các hàm, thủ tục
và được hiểu bên trong tất cả các hàm và thủ tục
Thông thường biến toàn cục được khai báo ở đầu đơn thể
Trang 9Module Module1
Public HoTen As String
Public Toan As Integer
Public Van As Integer
Public DiemTrungBinh As Double
DiemTrungBinh = (Toan + Van) / 2
Console.WriteLine("Ho ten :" & HoTen)
Console.WriteLine("Toan :" & Toan)
Console.WriteLine("Van:" & Van)
Console.WriteLine("Diem Trung Binh:" &
Trang 10Đầu tiên người học phải cài đặt bộ Visual Studio 2005 lên máy tính của mình, đây là điều kiện tiên quyết để thực hành tất cả những kiến thức được trình bày trong sách
Sau đây là chi tiết các bước hướng dẫn mà chúng ta nên đọc và thực hiện ngay cùng một lúc trên máy tính để đạt được hiệu quả cao nhất:
Bước 1: Khởi động Visual Studio
Bước 2: Tạo Project
Trang 12Bước 3: Đặt tên Solution (Chuong01) và tên Project (Muc01)
Bước 4: Quan sát môi trường làm việc
- Cửa số Explorer
Trang 13- Cửa sổ Module1.vb, nơi viết code cho chương trình
Bước 5: Bổ sung lệnh vào trong cửa sổ Module1.vb
Trang 14Bước 6: Dịch chương trình (Build\Build Muc01)
Bước 7: Quan sát cửa số Output Cửa sổ Output là cửa sổ cung cấp thông tin về kết quả dịch Solution
Trang 15Bước 8: Chạy chương trình (Ctrl+F5)
1.1.5 Các mẹo thực hành
Lập trình trong môi trường VB.NET hỗ trợ người lập trình rất nhiều trong việc chọn thực hiện phương thức thực hiện như hình trên do đó khi
Trang 16lập trình ta không cần gõ đầy đủ tên phương thức mà thông thường chỉ cần
gõ 3 ký tự đầu và nhấn phím Tab để chọn luôn phương thức
Console.Write("Nhap ho ten:")
DiemTrungBinh = (Toan + Van) / 2
Console.WriteLine("Ho ten :" & HoTen)
Trang 17Console.WriteLine("Toan :" & Toan)
Console.WriteLine("Van:" & Van)
Console.WriteLine("Diem Trung Binh:" &
Trang 18Bước 3: Quan sát cửa số Solution Explorer ta nhận thấy Project Muc02 được tạo ra như sau:
Trang 19Bước 4: Kích hoạt Project Muc02 Bằng cách nhấp phải chuột vào tên Project Muc02 và chọn lệnh Set As StartUp Project
- Chọn Project Muc02
- Nhấp phải chọn Set As StartUp Project
Lưu ý: ta có thể về cửa số Solution Explorer bằng cách nhấn
tổ hợp phím Ctrl+R
Trang 20Bước 5 Bổ sung lệnh vào tập tin Module1.vb
Bước 6: Chạy chương trình (Ctrl+F5)
Trang 211.3 HÀM VÀ BIẾN TOÀN CỤC
1.3.1 Cấu trúc chương trình
Cấu trúc của một chương trình VB.NET đơn giản nhất là có duy nhất một mô đun và trong mô đun này sẽ chứa thủ tục main và các hàm, các thủ tục cần thiết khác
Để khai báo một biến toàn cục cho một đơn thể ta chỉ cần khai báo biến đó ở đầu đơn thể Khi đó biến toàn cục của đơn thể sẽ được hiểu trong tất cả các hàm của đơn thể nếu không gặp phải vấn đề trùng tên với biến địa phương
1.3.2 Chương trình minh họa
Module Module1
Public Sub Nhap()
Console.Write("Nhap ho ten:")
Public Sub XuLy()
End Sub
Public Sub Xuat()
Trang 22Console.WriteLine("Ho ten :" & HoTen)
Console.WriteLine("Toan :" & Toan)
Console.WriteLine("Van:" & Van)
Console.WriteLine("Diem Trung Binh:" &
Bước 3: Quan sát cửa số Solution Explorer để xem Project Muc03 được tạo hay chưa
Bước 4: Kích hoạt Project Muc03 Bằng cách nhấp phải chuột vào tên Project Muc03 và chọn lệnh Set As StartUp Project
Bước 5 Bổ sung lệnh vào tập tin Module1.vb của Project Muc03
Trang 23Bước 6: Dịch chương trình (Build\Build Solution)
Bước 7: Chạy chương trình (Ctrl+F5)
1.4.1 Khái niệm
Các thông số đầu vào của một hàm được gọi là tham số của hàm
Tham số (parameter) là các tên (định danh) được các thủ tục, hàm dùng để nhận thông tin đầu vào để thực hiện các xử lý Khi một hàm, thủ tục được gọi thì nó sẽ đòi hỏi các đối số cụ thể tương ứng với các tham số
và thông thường các đối số này phải được gán giá trị cụ thể trước khi hàm, thủ tục thực thi
1.4.2 Phân loại tham số
Có hai loại tham số
- Tham biến: thay đổi (về mặt giá trị sau lời gọi hàm) Tham số loại này trong VB.NET được khai báo với từ khóa ByRef
- Tham trị: Không đổi (về mặt giá trị sau lời gọi hàm) Tham số loại này trong VB.NET được khai báo với từ khóa ByVal
1.4.3 Chương trình minh họa
Module Module1
Public Sub Nhap(ByRef HoTen As String,
Trang 24ByRef Toan As Integer,
ByRef Van As Integer) Console.Write("Nhap ho ten:")
Public Sub XuLy(ByVal Toan As Integer,
ByVal Van As Integer,
ByRef DiemTrungBinh As Double) DiemTrungBinh = (Toan + Van) / 2
End Sub
Public Sub Xuat(ByVal HoTen As String,
ByVal Toan As Integer,
ByVal Van As Integer,
ByVal DiemTrungBinh As Double) Console.WriteLine("Ho ten :" & HoTen)
Console.WriteLine("Toan :" & Toan)
Console.WriteLine("Van:" & Van)
Console.WriteLine("Diem Trung Binh:" &
Trang 25Bước 3: Quan sát cửa số Solution Explorer để xem Project Muc04 được tạo hay chưa
Bước 4: Kích hoạt Project Muc04 Bằng cách nhấp phải chuột vào tên Project Muc04 và chọn lệnh Set As StartUp Project
Bước 5 Bổ sung lệnh vào tập tin Module1.vb của Project Muc04
Bước 6: Dịch chương trình (Build\Build Solution)
Bước 7: Chạy chương trình (Ctrl+F5)
Khái niệm: Kiểu cấu trúc là một phương pháp dùng để tích hợp các kiểu dữ liệu đơn thành kiểu dữ liệu phức để mô tả thông tin của một đối tượng hay một khái niệm trong thế giới thực
Trang 26Để truy xuất đến 1 thành phần của biến cấu trúc ta dùng toán tử chấm (dot operator)
Chương trình minh hoạ:
Module Module1
Structure HocSinh
End Structure
Public Sub Nhap(ByRef x As HocSinh)
Console.Write("Nhap ho ten:")
Public Sub XuLy(ByRef x As HocSinh)
x.DiemTrungBinh = (x.Toan + x.Van) / 2
End Sub
Public Sub Xuat(ByVal x As HocSinh)
Console.WriteLine("Ho ten :" & x.HoTen)
Console.WriteLine("Toan :" & x.Toan)
Console.WriteLine("Van:" & x.Van)
Console.WriteLine("Diem Trung Binh:" &
Trang 27Public Sub Nhap(ByRef x As PhanSo)
Console.Write("Nhap tu:")
x.Tu = Console.ReadLine()
Console.Write("Nhap mau:")
x.Mau = Console.ReadLine()
End Sub
Public Sub RutGon(ByRef x As PhanSo)
Dim a As Integer = Math.Abs(x.Tu)
Dim b As Integer = Math.Abs(x.Mau)
Trang 28Public Sub Xuat(ByVal x As PhanSo)
Console.WriteLine("Tu :" & x.Tu)
Console.WriteLine("Mau :" & x.Mau)
Public Function Nhap() As Diem
Dim temp As Diem
Public Sub Xuat(ByVal P As Diem)
Console.Write("(" & P.x & "," & P.y & ")")
End Sub
Public Function KhoangCach(
Trang 29ByVal P As Diem,
ByVal Q As Diem) As Double Return Math.Sqrt((P.x - Q.x) * (P.x - Q.x) + (P.y - Q.y) * (P.y - Q.y))
phân số đó là phân số âm hay dương hay bằng không
2 Viết chương trình nhập tọa độ hai điểm trong không gian Tính khoảng cách giữa chúng và xuất kết quả
nhất và kết quả
tích và xuất kết quả
Trang 305 Viết chương trình nhập toạ độ 3 đỉnh A,B,C của 1 tam giác trong mặt phẳng Oxy Tính chu vi của tam giác và xuất ra kết quả
6 Viết chương trình nhập vào một ngày Tìm ngày kế tiếp và xuất kết quả
7 Viết chương trình nhập vào một ngày Tìm ngày hôm
qa và xuất kết quả
Trang 31CHƯƠNG 2 LẬP TRÌNH HƯỚNG ĐƠN THỂ
và được đặt tên [3]
Các thủ tục có thể được gọi để thi hành (thường là thông qua tên của thủ tục đó) Điều này cho phép gọi tới những thủ tục nhiều lần mà không cần phải lặp lại các khối lệnh giống nhau một khi đã hoàn tất việc viết mã lệnh cho các thủ tục đó chỉ một lần [3]
2.1.2 Cú pháp khai báo thủ tục
Cấu trúc tổng quát của việc định nghĩa một thủ tục là như sau:
[<attributelist>] [accessmodifier]
[proceduremodifiers] [Shared] [Shadows]
Sub name [(Of typeparamlist)] [(parameterlist)]
[Implements implementslist | Handles eventlist] [ statements ]
Trang 32[ Exit Sub ]
[ statements ]
End Sub
Thông dụng nhất của việc khai báo thủ tục là như sau:
[Public, Protected, Private] Sub <Tên thủ tục>
Một hàm là dãy các lệnh để thực thi một thao tác đặc thù nào đó như
là một phần của chương trình lớn hơn Nói một cách khác hàm là các câu lệnh được nhóm vào một khối, được đặt tên và có một giá trị trả về [3]
Các hàm có thể được gọi để thi hành (thường là thông qua tên của hàm) Điều này cho phép gọi tới hàm nhiều lần mà không cần phải lặp lại
Trang 33các khối mã giống nhau một khi đã hoàn tất việc viết mã cho các hàm đó chỉ một lần [3]
Trong VB.NET quan niệm hàm là một thủ tục có giá trị trả về
Function name [(Of typeparamlist)] [(parameterlist)] [As returntype]
[Implements implementslist | Handles eventlist]
[ statements ]
[ Exit Function ]
[ statements ]
End Function
Thông dụng nhất của việc khai báo hàm là như sau:
[Public, Protected, Private] Function <Tên Ham>
[(Danh sách các tham số)] As Kiểu dữ liệu trả về
<Khai báo biến thuộc tầm vực thủ tục>
Câu lệnh 1
Câu lệnh 2
End Function
Trang 342.3.3 Cú pháp khai báo đơn thể
[<attributelist>] [accessmodifier] Module name
[statements]
End Module
2.3.4 Phân loại đơn thể
- Đơn thể hướng chức năng
- Đơn thể hướng dữ liệu
Trang 35(Structure) mà biến được khai báo
Không gian tên
Namespace scope
Tầm vực của các biến loại này được hiểu trong toàn phạm
vi namespace mà nó được khai báo
Từ khóa để tham khảo khái niệm tầm vực trong MSDN là “scope, about scope”
- Select and End Select
- SyncLock and End SyncLock
- Try and End Try
- While and End While
- With and End With
Ví dụ: Phạm vi tầm vực khối lệnh If
If n < 5 Then
Trang 36Dim temp As Integer
[Public, Protected, Private] Function <Tên Hàm>
[(Danh sách các tham số)] As Kiểu dữ liệu trả về
<Khai báo biến thuộc tầm vực hàm>
Trang 37- Đơn thể-Module
- Lớp đối tượng-Class
- Cấu trúc-Structure
Để khai báo biến thuộc tầm vực đơn thể ta làm như sau:
- Xét câu lệnh Dim của khai báo biến bên trong module, class, or structure, nhưng không nằm bên trong bất cứ thủ tục, hàm nào của đơn thể đó
- Thay câu lệnh Dim bằng từ khóa chỉ phạm vi private
- Khi đó ta có thể truy xuất tới biến trong bất cứ nơi đâu thuộc đơn thể và các biến loại này không được truy xuất từ bên ngoài đơn thể
2.5.4 Tầm vực namespace
Để khai báo biến thuộc tầm vực namespace ta làm như sau:
- Xét câu lệnh Dim của khai báo biến bên trong module, class, hoặc structure, nhưng không nằm bên trong bất
cứ thủ tục, hàm nào của đơn thể đó
- Thay câu lệnh Dim bằng từ khóa chỉ phạm vi friend hoặc public
- Khi đó ta có thể truy xuất tới biến trong bất cứ nơi đâu thuộc phạm vi namespace chứa module, class hoặc structure
Trang 38Lưu ý: Biến, đối tượng thuộc tầm vực namespace còn có thể được gọi là tầm vực trong toàn bộ dự án (project)
[1] Connell–Coding Techniques for Microsoft Visual Basic NET–Copyright © 2002 by Microsoft Corporation
[2] Microsoft Visual Studio 2005 Documentation–Copyright © 2002
by Microsoft Cororation
[3] Trang web: http://vi.wikipedia.org
Trang 39CHƯƠNG 3 CÁC PHƯƠNG PHÁP LẬP TRÌNH
Trong phương pháp này người ta xem chương trình là tập hợp các lệnh Khi đó việc viết chương trình là xác định xem chương trình gồm những lệnh nào, thứ tự thực hiện của chúng ra sao
Trong phương pháp này người ta xem chương trình là một hệ thống các thủ tục và hàm Trong đó, mỗi thủ tục và hàm là một dãy các lệnh được sắp thứ tự Khi đó, việc viết chương trình là xác định xem chương trình gồm các thủ tục và hàm nào, mối quan hệ giữa chúng ra sao?
3.3.1 Khái niệm
Trong phương pháp này người ta xem chương trình là 1 hệ thống các đơn thể, mỗi đơn thể là 1 hệ thống các thủ tục và hàm Khi đó, việc viết chương trình là xác định xem chương trình gồm những đơn thể nào? Đơn thể nào đã có sẵn, đơn thể nào phải đi mua, đơn thể nào phải tự viết
Trang 403.3.2 Phân loại đơn thể
Có 2 loại đơn thể:
- Đơn thể hướng dữ liệu
- Đơn thể hướng chức năng
Trong phương pháp này người ta xem chương trình là một hệ thống các đối tượng, mỗi một đối tượng là sự bao bọc bên trong nó 2 thành phần:
Dữ liệu: là các thông tin về chính đối tượng Trong một số sách, thành phần này còn được gọi là thành phần thuộc tính, thông tin
Hành động: là các khả năng mà đối tượng có thể thực hiện Thành phần này còn có các tên như sau: phương thức, hàm thành phần, hành vi
Mỗi một đối tượng sẽ được cài đặt trong chương trình với dạng đơn thể chứa dữ liệu Thêm vào đó tính chất kế thừa cho phép chúng ta xây dựng đối tượng mới dựa trên cơ sở đối tượng đã có
Ngôn ngữ lập trình hướng đối tượng đầu tiên là SMALLTALK Ngoài ra cho tới thời điểm hiện nay có các ngôn ngữ hỗ trợ hướng đối tượng như sau: Eiffel, CLos, Lopps, Flavors, Pascal, C++, Delphi, Java, Python, C#, VB.Net,