Giáo trình Lập trình cơ sở dữ liệu: Phần 1 cung cấp cho người học những kiến thức như: Tìm hiểu môi trường .NET và Visual Basic.NET; Cơ sở lập trình trong Visual Basic.NET; Lập trình hướng đối tượng; Làm việc với các điều khiển; Tạo lập cơ sở dữ liệu;...Mời các bạn cùng tham khảo!
Trang 1MỤC LỤC
MỤC LỤC 1
Chương 1 Tìm hiểu môi trường NET và Visual Basic.NET 6
2 Các thành phần của MicroSoft NET framework 6
3 Tìm hiểu về Metadata 7
4 Tìm hiểu về Common Language Runtime- CRL 8
5 Tổ chức thư viện đối tượng bằng không gian tên (namespaces) 8
6 Tìm hiểu mã IL của NET 10
7 Đóng gói chương trình NET trong gói Assembly 11
8 Giới thiệu Visual Studio.NET 11
8.1 Môi trường phát triển Visual studio.NET 11
8.2 Khởi động Visual studio.NET 11
8.3 Mở một dự án mới của Visual Basic 12
8.4 Mở một dự án cụ thể 13
8.5 Dự án (Project) và giải pháp (Solutions) 14
8.6 Các công cụ của Visual Studio.NET 14
8.6.1 Thanh tiêu đề (Title Bar) 15
8.6.2 Thanh thực đơn (Menu Bar) 15
8.6.3 Thanh công cụ (Tool Bar): 15
8.6.4 Hộp công cụ (ToolBox) 16
8.7 Bộ thiết kế Windows Forms Designer 16
8.8 Chạy một chương trình Visual Basic 16
8.9 Cửa sổ thuộc tính Properties 16
8.10 Thoát khỏi Visual Studio.NET 17
Chương 2 Cơ sở lập trình trong Visual Basic.NET 18
2.1 Kiểu dữ liệu cơ sở 18
2.2 Khai báo biến 18
2.2.1 Khai báo nhiều biến 18
2.2.1 Phạm vi hoạt động của biến 19
2.3 Khai báo hằng (Constants) 19
2.4 Toán tử 20
2.4.1 Toán tử số học 20
2.4.1 Toán tử so sánh 20
2.4.2 Toán tử gán 20
2.5 Một số hàm chuẩn 21
2.5.1 Hàm đại số 21
2.5.2 Hàm thời gian 22
2.6 Quy ước viết lệnh 23
2.6.1 Viết lời chú thích 23
2.6.2 Ngăn cách các câu lệnh trên một dòng 23
Trang 22.6.3 Kéo dài câu lệnh trên hai dòng 23
2.7 Lệnh IF…THEN 24
2.8 Câu lệnh Select Case 25
2.9 Vòng lặp 26
2.9.1.Lệnh lặp For Next 26
2.9.2 Vòng lặp không xác định 26
2.10 Phương thức Console.Read và Console.Readln 27
2.11 Phương thức Console.Write và phương thức Console.Writeline 27
2.12 Chương trình con 28
2.12.1 Các thủ tục và hàm do người dùng xác định 28
2.12.2 Khai báo thủ tục và hàm 28
1.12.3 Lời gọi thủ tục, hàm 29
2.12.4 Thoát khỏi thủ tục / hàm 30
2.12.5 Tham số và việc truyền tham số cho chương trình con 30
2.12.6 Biến địa phương/biến toàn cục 32
2.13 Kiểu mảng (Array) 34
2.14 Kiểu dữ liệu do người dùng tự định nghĩa 34
2.15 Lơ ́ p Collections 35
2.16 Bẫy lỗi 35
Chương 3 Lập trình hướng đối tượng 37
3.1 Tạo một lớp (Class) mới 37
3.2 Lớp và không gian tên (namespace) 37
3.3 Khai báo phương thức (Methods) 38
3.4 Khai báo thuộc tính (Properties) 40
3.5 Thuộc tính kiểu ReadOnly và WriteOnly 41
2.6 Thuộc tính ngầm định (Default Property) 41
3.6 Định nghĩa chồng phương thức (Overloading method) 42
3.7 Vòng đời của đối tượng (Object Lifecycle) 43
3.8 Thừa kế 45
3.9 Các thành phần dùng chung của class 49
3.10 Biến du ̀ng chung (Shared variable) 50
3.11 Biến toàn cục (Global variable) 51
3.12 Sinh sự kiện (Raising Event) để xử lý trong một Project khác 52
3.13 Sư ̉ du ̣ng mô ̣t số lớp đối tươ ̣ng dựng sẵn 54
3.13.1 Làm việc với Clipboard 54
3.13.2 Lấy thông tin về thờ i gian hê ̣ thống 55
3.13.3 Lấy thông tin hệ thống 56
Trang 33.13.5 Sử du ̣ng chuô ̣t 57
3.13.6 Sử du ̣ng bàn phím 57
Chương 4 Làm việc với các điều khiển 58
4.1 Một số thao tác với các điều khiển 58
4.1.1 Đưa điều khiển vào biểu mẫu (form) 58
4.1.2 Chọn một đối tượng trên Form 58
4.1.3 Di chuyển đối tượng 58
4.1.4 Hiệu chỉnh kích thước đối tượng 58
4.1.5 .Khoá các điều khiển (locked Điều khiển) 59
4.1.6 Thứ tự tab (Tab Order) của các điều khiển 59
4.2 Điều khiển, thuộc tính, phương thức và sự kiện 60
4.2.1 Điều khiển (đối tượng) 60
4.2.2 Thuộc tính 60
4.2.3 Phương thức Error! Bookmark not defined 4.2.4 Sự kiện 60
4.2.5 Mối quan hệ giữa phương thức, thuộc tính và sự kiện Error! Bookmark not defined 4.3 Mảng điều khiển (Arrays Control) 61
4.4 Tự động thay đổi ki ́ch thước và định chỗ (positioning) 63
4.5 Một số điều khiển thông dụng 68
4.5.2 Textbox 68
4.5.3 Label 69
4.5.4 Button 71
Ví dụ sử dụng điều khiển textbox, button 71
4.5.5 Điều khiển Checkbox và Radiobutton 73
4.5.6 Điều khiển DateTimePicker 75
4.5.6 Forms 82
4.6.1 Chọn Form khởi động (Startup Form) 84
4.6.2 Quy định vị trí ban đầu của form 85
4.6.3 Thiết lập kiểu đường biên của Form 85
4.7 Hô ̣p thông báo (Message box) 87
4.8 Các hộp thoại thông dụng 89
4.8.1 Điều khiển hộp thoa ̣i Open 90
4.8.2 Điều khiển hộp thoa ̣i Save 92
4.8.3 Điều khiển hộp thoa ̣i Font 93
4.8.4 Điều khiển hộp thoa ̣i Color 95
4.9 Điều khiển Splitter 96
4.10 Các điều khiển Providers 98
4.10.1 Điều khiển HelpProvider và ToolTip 98
4.10.2 Điều khiển ErrorProvider 99
4.11 Menus 101
4.12 MDI Forms Error! Bookmark not defined 4.13 Toolbars 107
Trang 44.14 ListBox 75
4.15 ComboBox 79
Chương 5 Tạo lập cơ sở dữ liệu 111
5.1 Tạo cơ sở dữ liệu Access 111
5.1.1 Tạo cơ sở dữ liệu 111
5.1.2 Tạo bảng 112
5.1.3 Tạo mối quan hệ giữa các bảng 115
5.1.4 Tạo Queries 117
5.2 Tạo cơ sở dữ liệu sử dụng MicroSoft SQL Server Managemant Studio 119
5.2.1 Tạo cơ sở dữ liệu 119
5.2.3 Tạo Query 125
5.2.5 Thêm ràng buô ̣c cho bảng 129
5.2.6 Thêm dữ liệu vào bảng 129
5.2.7 Tạo views 130
5.2.8 Thủ tục lưu trữ (Stored Procedure) 132
5.2.9 Trigger và thông báo sự kiện 133
5.2.10 Giao dịch (Transaction) 134
2.5.11 Bảo mật và quyền sở hữu 134
Chương 6 Giới thiệu ADO.NET 136
6.1 Kiến trúc ADO.NET 136
6.2 Truy xuất dữ liệu với SQL Server Provider 137
6.2.1 Đối tượng kết nối SQLConnection 137
6.2.2 Thực thi lệnh SQL với SqlCommand 141
6.2.3 Truyền tham số với SqlParameter 147
6.2.4 Đọc dữ liệu với DataReader 148
6.2.5 Tương tác dữ liệu với SQLDataAdapter 149
6.3 Các đối tượng dữ liệu 154
6.3.1 DataSet 154
6.3.2 DataTable 155
6.3.3 BindingSource 157
6.3.4 DataColumn 157
6.3.5 DataRow 158
6.3.6 DataRelation 159
6.4 Các đối tượng trình diễn dữ liệu 159
6.4.1 DataView 159
6.4.2 DataGridView 160
6.5 Ràng buộc dữ liệu (Binding) với các điều khiển 161
Chương 7 Tạo báo cáo bằng Crystal report 163
7.1 Thiết kế báo cáo 163
7.2 Xem báo cáo 172
7.3 Sử dụng các đối tượng của báo cáo 174
7.3.1 Các đối tượng trên báo cáo 174
Trang 57.3.2 Định dạng chuỗi ký tự 175
7.3.3 Sử dụng công cụ Formula Editor 176
7.4 Sắp xếp và nhóm dữ liệu 177
7.4.1 Sắp xếp các bản ghi 177
7.4.2 Nhóm các bản ghi 178
7.5 Trình bày báo cáo phân cấp 180
7.6 Tổng hợp dữ liệu 180
7.7 Sử dụng tham số và công thức 181
7.8 Đóng gói Project và report 183
Chương 8 Phân phối và đóng gói ứng dụng Visual Basic.NET 188
8.1 Lập kế hoạch triển khai đóng gói dự án 188
8.2 Các cách đóng gói và triển khai ứng dụng khác nhau 188
8.3 Tạo dự án Deployment 189
8.3.1 Sử dụng trình Setup Winzard 191
8.3.2 Tạo dự án đóng gói sử dụng mẫu Setup Winzard 193
8.4 Tùy biến các lựa chọn đóng gói 193
8.4.1 Cấu hình các thiết lập 193
8.4.2 Tạo shortcut cho ứng dụng cài đặt 195
8.4.3 Thiết lập tên công ty và phiên bản chương trình 195
7.4.4 Đặt các thuộc tính cho gói ứng dụng 197
8.5 Biên dịch và đóng gói dự án – kiểm tra việc cài đặt 197
8.6 Tìm hiều các file Setup và gỡ chương trình 200
8.6.1 Kiểm tra file cài đặt 200
8.6.2 Tháo gỡ chương trình 201
Trang 6Chương 1 Tìm hiểu môi trường NET và Visual Basic.NET
1 Giới thiệu về NET Framework
NET được phát triển từ đầu năm 1998, lúc đầu có tên là Next Generation Windows Services (NGWS) Nó là hạ tầng cơ bản được chuẩn hoá, độc lập với
ngôn ngữ lập trình, cho phép ta xây dựng, tích hợp, biên dịch, triển khai, chạy các dịch vụ Web, XML, tiện ích hay thực hiện chương trình đa cấu trúc (phát triển bằng các ngôn ngữ lập trình hỗ trợ NET) trên hệ điều hành có cài đặt NET Framework
Nó sẽ trở thành một phần của MicroSoft Windows và sẽ được xuất qua các platform
khác, có thể ngay cả Unix Mô hình ứng dụng của NET Framework
2 Các thành phần của MicroSoft NET framework
Các phần chính của Microsoft.NET Framework:
Trang 7.NET Framework bao gồm 2 phần chính là Common Language Runtime (CLR),
và NET Framework Class Library (FCL)
CLR là thành phần chính của NET Framework, quản lý mã có thể thực thi của chương trình, quản lý các tiến trình, quản lý tiểu trình (Threading), quản lý bộ nhớ, cung cấp dịch vụ để biên dịch, tích hợp và tác vụ truy nhập từ xa (Remoting)
FCL bao gồm tất cả các dịch vụ giao tiếp người sử dụng, điều khiển, truy cập dữ liệu, XML, Threading, bảo mật
3 Tìm hiểu về Metadata
Metadata là một thuật ngữ mà người lập trình sử dụng dùng để mô tả dữ liệu về
dữ liệu Môi trường NET sử dụng Metadata để mô tả những đối tượng, các gói assembly, dữ liệu ADO.NET Nét đặc trưng của môi trường NET là những đối tượng có thể tự mô tả Một chương trình có thể truy vấn thông tin về một đối tượng
để xác định phương thức, thuộc tính, trường mà đối tượng sẵn sàng hỗ trợ cho chương trình sử dụng
.NET có một file đặc biệt gọi là assembly sử dụng metadata để mô tả thông tin về những lớp mà ứng dụng cung cấp và những thành phần mà ứng dụng sử dụng (như các file dữ liê ̣u), XML định nghĩa metadata, metadata định nghĩa các dữ liệu khác
Trang 84 Tìm hiểu về Common Language Runtime- CRL
Môi trường NET được xây dựng dựa trên hai nền tảng mạnh và độc lập về ngôn ngữ với thư viện runtime, đó là thư viện thực thi ngôn ngữ chung (Common Language Runtime- CLR) và thư viện lớp (Class Libraries) Vì những thư viện này độc lập với ngôn ngữ, một lập trình viên Visual Basic.NET có cùng một tập hợp hàm, lớp, thủ tục để sử dụng như một lập trình viên C# hay C++.NET
Mọi ngôn ngữ lập trình đều được biên di ̣ch ra ngôn ngữ trung gian Microsoft Intermediate Language (IL) nhờ bắt buộc mọi ngôn ngữ đều phải dùng cùng các kiểu dữ liệu chung (gọi là Common Type System) Vì vậy, cho phép các ngôn ngữ
có thể hợp tác nhau một cách thông suốt Tức là trong NET, các chương trình VB.NET có thể kế thừa các chương trình C# và ngược lại một cách hoàn toàn tự nhiên
5 Tổ chức thư viện đối tượng bằng không gian tên (namespaces)
Trong môi trường lập trình hướng đối tượng, người lập trình thường sử dụng các lớp để mô tả đối tượng Để tổ chức các lớp tốt hơn và để đơn giản, người lập trình thường nhóm các lớp vào trong thư viện lớp Thông thường, các lớp trong thư viện lớp sẽ liên hệ với nhau để xử lý một nhiệm vụ nào đó Khi số lớp trong một thư viện tăng lên, khả năng xung đột tên rất dễ xảy ra Để giảm bớt xung đột tên tiềm ẩn có thể xảy ra, lập trình viên lên sử dụng không gian tên (namespaces) để tổ chức các lớp đối tượng
Namespaces là một cách đặt tên để giúp sắp đặt các lớp ta dùng trong chương
trình một cách thứ tự để thuận lợi cho việc tìm kiếm chúng Tất cả mã chương trình trong NET, viết bằng Visual Basic.NET, C# hay ngôn ngữ nào khác, đều được chứa trong các namespace Điểm này cũng áp dụng cho thư viện lớp của NET Chẳng hạn, các lớp của WinForms đều nằm trong System.Windows.Forms namespace Và các lớp dùng cho tập hợp như Queue, Stack, Hashtable v.v đều nằm trong System.Collections namespace
Mỗi namespace chứa những phần của mã lệnh thích hợp cho nó trong chương trình nói chung, trong NET ta có thể có hai lớp có cùng một tên nhưng nằm trong hai namespaces khác nhau Ta có thể dùng namespaces bằng cách chỉ ra tên của
Trang 9namespace rồi đến tên lớp , tiếp theo là tên lớp dẫn xuất …hoă ̣c có thể dùng từ khoá Import để chỉ ra tên namespace chứa lớp mà ta đề cập đến Nhưng điều tiên quyết là
ta phải tham chiếu đến file assembly chứa namespace mà ta muốn dùng Ta thực hiện việc ấy bằng cách chọn Project | Add References Khi hộp thoại Add References hiện ra, chọn Tab NET cho standard NET components hay Tab
Projects cho dữ liê ̣u của một NET project khác, chọn dữ liệu bạn muốn rồi Click nút Select, sau đó Click nút OK Chẳng hạn ta muốn sử du ̣ng các phương thức read
và write từ studio để nhập dữ liệu và hiển thị dữ liệu trong ứng dụng dạng Console (ứng dụng có giao diện dạng text g iống như MS - DOS trướ c đây ) Namespace ta
cần sẽ là System.Console Trong cách viết thứ nhất ta sẽ viết lệnh như sau để viết
hàng chữ "Chào thế giới":
System.Console.WriteLine("Hello world!") Nếu ta dùng từ khoá Import bằng cách
sử dụng câu lệnh Imports System.Console ở đầu phần mã lệnh trong module, ta có
thể code gọn hơn: WriteLine ("Hello world!")
Dưới đây là một số namespaces thông dụng:
System.CodeDOM Chứa các lớp mà chương trình có thể sử dụng để biểu
diễn tài liệu mã nguồn System.Colection Chứa các lớp định nghĩa các cấu trúc dữ liệu dạng tập
hợp như: Mảng, danh sách, hàng đợi, ngăn xếp,… System.Configuration Chứa các lớp xử lý thông tin cấu hình NET Framework System.Data Chứa các lớp đối tượng cơ sở dữ liệu
System.Diagnostics Chứa các lớp để chuẩn đoán, gỡ lỗi
System.Drectory.Services Chứa các lớp dịch vụ thư mục cung cấp khả năng giao
tiếp với hệ thống Active Directory System.Drawing Chứa các lớp hỗ trợ tính năng đồ hoạ
System.Globalization Chứa các lớp hỗ trợ khả năng quốc tế hoá như ngày
tháng, thời gian, tiền tệ System.IO Chứa các lớp hỗ trợ thao tác vào/ra dữ liệu
System.Management Chứa các lớp quản lý giao diện với dịch vụ thiết bị của
Trang 10windows System.Messaging Chứa các lớp thực hiện gửi/nhận thông điệp qua hàng
đợi System.NET Chứa các lớp thực hiện thao tác xử lý mạng
System.Reflection Chứa các lớp thực hiện truy vấn khả năng của một đối
tượng System.Runtime Chứa các lớp dùng để gọi tương tác với mã assembly,
các đối tượng COM, các đối tượng từ xa System.Security Chứa các lớp xử lý về bảo mật và mã hoá
System.Text Chứa các lớp xử lý ký tự ASCII, Unicode, UTF
System.Timers Chứa các lớp hỗ trợ sự kiện Timer
System.Web Chứa các lớp hỗ trợ truy xuất Web
System.Windows.Forms Chứa các lớp tạo cửa sổ giao diện của ứng dụng dạng
Windows Form System.XML Chứa các lớp xử lý dữ liệu XML
6 Tìm hiểu mã IL của NET
Thông thường khi biên dịch chương trình, trình biên dịch sẽ chuyển mã nguồn (source) thành mã máy (các chỉ thị CPU) Các chỉ thị này phụ thuộc vào từng loại CPU, như Intel, Macintosh, Để hỗ trợ chương trình chạy trên nhiều máy, Java tạo nên một máy ảo Các chương trình biên dịch ra mã máy ảo và máy ảo của Java chuyển dịch mã máy ảo thành chỉ thị CPU mà máy ảo chạy trên đó .NET hoạt động tương tự như vậy, các chương trình NET không biên dịch ra ra mã máy như các file EXE thông thường, thay vào đó, chương trình được biên dịch ra mã IL (Intermediamte Language- mã trung gian) Chính vì vậy, chương trình EXE của NET hoàn toàn không giống như chương trình EXE của windows trước đây Những chương trình EXE của NET phải chạy trên bộ khung NET Framework, có thể coi đây là máy ảo dùng diễn dịch mã IL thành chỉ thị CPUđể thực thi chương trình
Trang 11Để xem mã IL của chương trình NET sau khi biên dịch, ta sử dụng chương trình ILDASM.EXE như sau: C:\ildasm <tên_chương_trình.NET>.exe
7 Đóng gói chương trình NET trong gói Assembly
Trong NET các chương trình được ngắt ra thành các đơn vị gói (được gọi với thuật ngữ Assembly) Một gói assembly có thể chứa mã chương trình, thư viện lớp hoặc thông tin về đối tượng (được lưu dạng metadata)
File assembly có thể có phần mở rộng là EXE hoặc DLL Nếu một assembly là thư viện lớp nó có thể dùng riêng cho ứng dụng hoặc dùng chung giữa các ứng dụng Các assembly dùng chung được đặt trong thư mục C:\WinNT\Assembly
8 Giới thiệu Visual Studio.NET
8.1 Môi trường phát triển Visual studio.NET
Visual Studio.NET là bộ công cụ giúp phát triển các ứng dụng từ ứng dụng desktop đến ứng dụng mạng Nó là môi trường để phát triển ứng dụng sử dụng tất
cả các ngôn ngữ như Visual Basic.NET, Visual C++, Visual C#.Net hết sức mạnh
mẽ và thuận lợi
8.2 Khởi động Visual studio.NET
Việc khởi động Visual Studio.NET cũng tương tự như các phần mềm khác như MicroSoft Word hay Excel Nếu lần đầu khởi động Visual Studio.NET sẽ yêu cầu xem bạn chạy nó với ưu tiên ứng dụng và ngôn ngữ nào Để sử dụng ngôn ngữ lập trình Visual Basic.NET, bạn chọn Visual Basic và start Visual Studio.NET Màn hình bắt đầu như sau:
Trang 12Nếu trang start page không hiện, bạn có thể làm nó xuất hiện bằng cách chọn menu View | Other Windows | Start Page
8.3 Mở một dự án mới của Visual Basic
- Chọn File/New/ Project
Trang 13xuất hiện hộp thoại
Chọn kiểu ứng dụng rồi Click nút OK
8.4 Mở một dự án cụ thể
- Click chuột vào project (dự án) của phần Open tại trang Start Page
- Duyệt đến thư mục chứa dự án của bạn
Trang 14- Mở file Quanlythuvien.sln Khi này trang Start Page sẽ tạm ẩn đi, một cửa sổ mới xuất hiện:
8.5 Dự án (Project) và giải pháp (Solutions)
Trong Visual Studio.NET, các chương trình đang triển khai và phát triển được gọi là dự án (Project) hoặc giải pháp (Solution) bởi chúng chứa rất nhiều file và do nhiều thành phần, đối tượng riêng lẻ hợp lại Một chương trình Visual Studio.NET bao gồm một file giải pháp và một file dự án hợp lại File dự án chứa thông tin đặc biệt liên quan đến một tác vụ lập trình đơn lẻ File giải pháp lại chứa thông tin về một hay nhiều dự án
8.6 Các công cụ của Visual Studio.NET
Công cụ trong Visual Studio.NET rất phong phú Sau đây là màn hình làm việc của bộ Visual Studio.NET:
Trang 158.6.1 Thanh tiêu đề (Title Bar)
Thanh tiêu đề thể hiện tên của chương trình (project) mặc định là Project1
8.6.2 Thanh thực đơn (Menu Bar)
Thanh thực đơn (Menu Bar) xuất hiện ngay dưới thanh tiêu đề, chứa các lệnh đơn
để thao tác với Visual Studio Mỗi lệnh đơn chứa một nhóm lệnh để thực hiện các thao tác trên cùng đối tượng (ví dụ lệnh đơn File chứa các lệnh để thao tác với tệp tin) Thanh thực đơn bao gồm các lệnh đơn sau:
8.6.3 Thanh công cụ (Tool Bar):
Thanh công cụ là thanh chứa các lệnh được thể hiện dưới dạng biểu tượng giúp người sử dụng có thể thi hành một lệnh nhanh hơn Thanh công cụ bao gồm các nút:
Cửa sổ thiết kế form Thanh thực đơn
Hộp công cụ
Thanh công cụ chuẩn
Solution Explorer
Cửa sổ thuộc tính Cửa sổ hiển thị kết quả- Output
Trang 168.6.4 Hộp công cụ (ToolBox)
Hộp công cụ chứa các đối tượng điều khiển (Control) sẽ được đặt vào biểu mẫu (Form) khi thiết kế giao diện của chương trình Nó được nhóm thành các nhóm công cụ Để chọn một công cụ trong nhóm, trước tiên ta chọn nhóm công cụ bằng cách Click chuột vào dấu + ở đầu nhóm Khi đó một danh sách các công cụ trong nhóm sẽ mở ra để ta chọn
8.7 Bộ thiết kế Windows Forms Designer
Visual Studio.NET có một bộ thiết kế form trực quan, bạn sẽ làm quen dần dần bởi vì thường trong các dự án phát triển có thể có rất nhiều Form
Để hiển thị bộ thiết kế Windows Forms Designer ta hiển thị cửa sổ Solution Explorer bằng cách chọn View | Solution Explorer Cửa sổ này chứa toàn bộ các phần tử có sử du ̣ng trong dự án Click chuột vào biểu tượng View Designer trong solution để hiển thị form thiết kế ở dạng trực quan
8.8 Chạy một chương trình Visual Basic
Click chuột vào nút start màu xanh trên thanh công cụ để chạy chương trình (bạn cũng có thể ấn phím F5)
8.9 Cửa sổ thuộc tính Properties
Cho phép thay đổi thông số của đối tượng thiết kế form sau này
Trang 178.10 Thoát khỏi Visual Studio.NET
- Lưu lại những gì chúng ta làm bằng cách chọn File | Save all
- Chọn File | Exit để thoát khỏi Visual Studio.NET
Trang 18Chương 2 Cơ sở lập trình trong Visual Basic.NET
2.1 Kiểu dữ liệu cơ sở
Chương trình sử dụng các biến để lưu trữ các giá trị Mỗi biến phải có một kiểu
dữ liệu xác định Một kiểu của biến sẽ xác định các giá trị mà biến đó có thể nhận Visual Basic cung cấp các kiểu dữ liệu cơ bản sau:
(byte)
Byte Các số nguyên trong đoạn từ 0 đến 255 1
Decimal Các số nguyên trong đoạn từ - 295 đến 295 – 1 16
Double Các số thực dấu phẩy động 64 bits 8
Integer Các số nguyên trong đoạn từ - 231 đến 231 – 1 4
Long Các số nguyên trong đoạn từ - 263 đến 263 – 1 8
Short Các số nguyên trong đoạn từ - 231
đến 231 – 1 4 Single Các số thực dấu phẩy động 32 bits 4
Một thay đổi lớn cho Data Type của VB.NET, là những biến dùng Data Type cơ bản như Integer, Single, Boolean,.v.v đều là những biến kiểu đối tượng (Objects)
Chúng đều được xuất phát từ lớp căn bản nhất tên Object trong VB.NET
2.2 Khai báo biến
2.2.1 Khai báo nhiều biến
Biến được sử dụng để lưu trữ và đọc thông tin trong quá trình thực hiện chương trình Để khai báo biến ta dùng từ khoá Dim và chỉ ra tên biến cùng với kiểu dữ liệu của biến Trong VB 6.0 ta có thể khai báo nhiều biến trên cùng một hàng như:
Trang 19Ví dụ :
Dim X As Integer = 12
2.2.1 Phạm vi hoạt động của biến
Tuỳ theo vị trí khai báo biến và các từ khoá quy định phạm vi mà ta sử dụng biến
sẽ có phạm vi hoạt động khác nhau
VB.NET cho phép khai báo biến trong một khối lệnh IF THEN END IF, DO LOOP, WHILE END WHILE, FOR NEXT, v.v vì vậy, những biến này chỉ có phạm vi hoạt động ở trong khối lệnh đó Khi chương trình thực hiê ̣n xong khối lê ̣nh đó thì các biến cũng bi ̣ hủy
Ngoài ra , trong VB.NET ta có thể quyết định giới hạn việc truy cập một biến bằng cách dùng các từ khoá sau:
2.3 Khai báo hằng (Constants)
Hằng là đại lượng mà giá trị không thay đổi trong suốt quá trình thực hiện chương trình Khi khai báo hằng trong VB.NET ta phải khai rõ kiểu dữ liệu của nó
là String, Integer, hay Boolean v.v.:
Public Const myConstantString As String = "happy"
Public Const maxStudent As Integer = 30
Trang 202.4.2 Toán tử gán
Toán tử gán dùng để gán giá trị cho một biến, một phần tử mảng Toán tử gán được ký hiệu bằng dấu bằng ( = )
Ví dụ:
Trang 219 Log Tính logarit tự nhiên
10 Log10 Tính logarit cơ số 10
Trang 222.5.2 Hàm thời gian
(1) Hàm Day(d): Hàm trả về số ghi ngày của d
Ví dụ: Day(#12/25/2006#) sẽ cho kết quả là 25
(2) Hàm Month(d): Hàm trả về số ghi tháng của d
Ví dụ: Month(#11/30/2006#) sẽ cho kết quả là 11
(3) Hàm Year(d): Hàm trả về số ghi năm của d
Ví dụ: Year(#12/25/2006#) sẽ cho kết quả là 2006
(4) Hàm Now: Hàm trả về ngày tháng năm và giờ của hệ thống máy tính
(5) Hàm Weekday (d): Hàm cho biết thứ mấy trong tuần
Ví dụ: Weekday(#11/13/2006#)) cho kết quả là 3 (thứ 3 trong tuần)
Weekday(#11/19/2006#) sẽ cho kết quả là 1 (thứ 1, tức là ngày chủ nhật trong tuần) (6) Hàm hour (<thời gian>): Hàm cho biết giờ ứng với <thời gian>
Ví dụ: Hour(#10:20:15#) sẽ cho kết quả là 10
(7) Hàm Minute(<thời gian>): Hàm cho biết phút ứng với <thời gian>
Ví dụ: Minute(#10:20:15#) sẽ cho kết quả là 20
(8) Hàm Second(<thời gian>): Hàm cho biết giây ứng với <thời gian>
Ví dụ: Second(#10:20:15#) sẽ cho kết quả là 15
2.5.3 Hàm chuyển đổi
(1) Hàm ToBoolean(x): Hàm trả về giá trị kiểu Boolean của x
(2) Hàm ToByte(x): Hàm trả về giá trị kiểu Byte của x
(3) Hàm ToChar(x): Hàm trả về giá trị kiểu Char của x
(4) Hàm ToDate(x): Hàm trả về giá trị kiểu Date của x
(5) Hàm ToDouble(x): Hàm trả về giá trị kiểu Double của x
(6) Hàm ToDecimal(x): Hàm trả về giá trị kiểu Decimal của x
(7) Hàm ToInt16(x): Hàm trả về giá trị kiểu số nguyên 2 bytes
(8) Hàm ToInt32(x): Hàm trả về giá trị kiểu số nguyên 4 bytes
(9) Hàm ToInt64(x): Hàm trả về giá trị kiểu số nguyên 8 bytes
(10) Hàm ToSingle(x): Hàm trả về giá trị kiểu số thực 4 bytes
(11) Hàm ToString(x): Hàm trả về giá trị kiểu chuỗi
Oct(188) cho giá trị là 274
Trang 23(14) Hàm Hex(x) hoặc Hex$(x): Hàm trả về giá trị số hệ thập lục phân Variant hoặc chuỗi tương ứng của x
Ví dụ:
Hex(2006) cho giá trị là 7D6
2.5.4 Hàm kiểm tra kiểu dữ liệu
(1) Hàm IsArray(x): Nếu x có kiểu dữ liệu là mảng thì hàm trả về giá trị True, ngược lại hàm trả về giá trị False
(2) Hàm IsDate(x): Nếu x có thể chuyển đổi sang định dạng thời gian thì hàm trả về giá trị True, ngược lại hàm trả về giá trị False
(3) Hàm IsNumeric(x): Nếu x có thể chuyển đổi sang định dạng số thì hàm trả về giá trị True, ngược lại hàm trả về giá trị False
(4) Hàm VarType(x): Kiểm tra kiểu dữ liệu
2.6 Quy ước viết lệnh
2.6.1 Viết lời chú thích
Khi ta lập trình ta thường hay đặt các dòng chú thích ở đâu đó trong chương trình
để diễn giải ý nghĩa của một quá trình xử lý để về sau ta hoặc người khác đọc lại mã chương trình có thể hiểu nó một cách dễ dàng Một lời chú thích trong VB.Net bắt đầu bằng dấu nháy đơn tiếp theo là lời giải thích trên cùng một hàng Ví dụ:
„đây là một lời giải thích
2.6.2 Ngăn cách các câu lệnh trên một dòng
Ta có thể viết nhiều câu lệnh trên một dòng, và các câu lệnh đó phải ngăn cách nhau bởi dấu hai chấm “:”
StartTime = Now: EndTime = StartTime + 10
2.6.3 Kéo dài câu lệnh trên hai dòng
Khi có những câu lệnh dài chúng ta có thể viết câu lệnh đó trên nhiều dòng, và dùng kí hiệu gạch nối (_) để nối các dòng đó
Ví dụ:
TxtKetqua = "* " & TxtSoN & " số Fibonaci đầu tiên là " _
& xd & " " & so(1) & " , " & so(2) & _
Trang 24& TxtSoN & " là " & so(TxtSoN)
2.7 Lệnh IF…THEN
Câu lệnh IF cho phép lựa chọn một trong hai nhánh tùy thuộc vào giá trị của một biểu thức lôgic(điều kiện) là Đúng (True) hay Sai (False)
Cú pháp :
Dạng 1 If <điều kiện> Then <lệnh>
Dạng 2 If <điều kiện> Then
If <điều kiện1> Then
Trang 25End If
End If
2.8 Câu lệnh Select Case
Cú pháp:
Select Case <Biểu thức kiểm tra>
[Case <Danh sách biểu thức 1>
Trang 26For <biến đếm> = <giá trị đầu> To <giá trị cuối> [Step <bước nhảy>]
Dim Files As String() = Directory.GetFiles(“.”)
Dim FileName As String
For Each Filename In Files
Trang 27Loop while (điều kiện lặp)
Hai dạng trên chỉ khác nhau ở chỗ: dạng 1 kiểm tra điều kiện trước khi thực hiện khối lệnh còn đối với dạng 2 thì thực hiện khối lệnh rồi mới kiểm tra điều kiện
2.10 Phương thức Console.Read và Console.Readln
Phương thức Console.Read trả về tất cả các ký tự đưa vào từ bàn phím cho tới khi gặp dấu cách hoặc phím Tab Phương thức Console.Read trả về tất cả các ký tự đưa vào từ bàn phím cho tới khi gặp ký tự Enter
Để gán giá trị mà người dùng nhập vào từ bàn phím cho một biến ta dùng lệnh gán
Biến = Console.Readln()
Trong các ứng dụng Console để dừng màn hình xem kết quả ta sử dụng Console.Readln(), khi đó chương trình sẽ chờ cho tới khi ta nhấn phím Enter
2.11 Phương thức Console.Write và phương thức Console.Writeline
Để hiện thị dữ liệu ra màn hình ở chế độ Console ta dùng phương thức Console.Write hoặc Console.Writeline Sự khác nhau giữa hai phương thức lá Console.Writeline kết hợp thêm ký tự xuống dòng và chuyển con trỏ về đầu hàng tiếp theo
Để hiện thị chuỗi ký tự, đặt chuỗi ký tự đó trong dấu nháy kép và truyền cho phương thức Console.Write hoặc Console.Writeline Ví dụ:
Console.Writeline(“Hello, everybody!”)
Chúng ta có thể quy định độ rộng và khuôn dạng dữ liệu để hiển thị các giá trị ra màn hình bằng cách sử dụng mẫu định dạng sau đó truyền biểu thức theo thứ tự của định dạng Khuôn dạng được xác định bằng một giá trị quy định độ rộng sau đó đến dấu hai chấm rồi đến dấu hiệu mô tả kiểu Các dấu hiệu mô tả kiểu bao gồm:
C hoặc c Tiền tệ
D hoặc d Decimal
E hoặc e Số thực kiểu số chấm khoa học
F hoặc f Số thực dấu phẩy động
Trang 28N hoặc n Số thông thường
Có những lý do sau mà chúng ta nên sử dụng hàm (thủ tục) khi một viết chương trình:
- Ta có thể chuyển những đoạn chương trình được lặp đi lặp lại nhiều lần ở những chỗ khác nhau trong chương trình thành một chương trình con Khi cần, ta chỉ việc gọi chương trình con đó ra (với các tham số tương ứng cần thiết) mà không phải viết lại cả khúc chương trình đó
- Phân tách một chương trình lớn và dài (giải quyết một vấn đề lớn) thành những chương trình con, những khối, những module (tương ứng với các vấn đề nhỏ hơn)
để dễ kiểm tra và tìm lỗi chương trình Đó cũng là ý tưởng cơ bản của khái niệm lập trình có cấu trúc và còn được gọi là nguyên tắc “Chia để trị”
Trang 29temp = so1: so1 = so2: so2 = temp
End Sub
Hàm có trả về giá trị Hàm cũng là một dãy các lệnh nhằm thực hiện một công việc nào đấy, nhưng khác với thủ tục, hàm sau khi thực hiện xong sẽ trả về một giá trị nào đó thông qua câu lệnh Return
Public Function Giaithua(n As Integer) As Long
Dim i As Integer, GT As Long
Trong VB.NET ta có thể dùng từ khoá để đặt tên cho chương trình con bằng cách
để nó giữa ngoặc vuông Giả sử ta muốn dùng chữ Compare làm tên một Function,
ta sẽ viết như sau:
Public Function [Compare] (ByVal v1 As Integer, ByVal v2 As Integer) As Boolean
1.12.3 Lời gọi thủ tục, hàm
Cách goi thủ tục :
Để gọi thủ tục ta dùng tên thủ tục và các tham số nếu có theo cú pháp:
<Tên thủ tục> (<danh sách tham số>)
Ví dụ:
Swap (a, b)
Cách gọi hàm:
Trang 30Khác với thủ tục, chúng ta phải có một biến có kiểu dữ liệu thích hợp (trùng với kiểu dữ liệu trong phần khai báo kiểu giá trị trả về của hàm) để lưu giá trị trả về khi hàm được thực hiện với các tham số thực truyền vào
<Biến> = <Tên hàm>(danh sách tham số thực)
Ví dụ:
Ketqua = giaithua(txtso.text)
2.12.4 Thoát khỏi thủ tục / hàm
Exit sub dùng để thoát khỏi thủ tục, Exit Function dùng để thoát khỏi hàm
2.12.5 Tham số và việc truyền tham số cho chương trình con
Tham số hình thức/Tham số thực sự
Tham số hình thức là các tham số được đưa ra trong phần khai báo hàm, nó chỉ ra kiểu dữ liệu của các tham số của chương trình con Trong chương trình con các tham số kiểu này chỉ có tên, chứ chưa có giá trị, chỉ khi nào xuất hiện lời gọi chương trình con, các tham số mới được truyền giá trị từ bên ngoài và chương trình
con sẽ được hoạt động với bộ giá trị ấy Chính vì vậy chúng được gọi là tham số hình thức Các biến bên ngoài truyền vào chương trình con được gọi là các tham số thực sự, vì chúng thực sự tham gia vào chương trình con với tư cách là một giá trị
Khi gọi đến chương trình con thì phải có sự tương ứng 1-1 giữa tham số thực sự và tham số hình thức cả về thứ tự và kiểu dữ liệu
Truyền tham số theo tham biến/tham trị
Khi khai báo thủ tục/hàm, sử dụng từ khóa ByVal trước tham số để quy định tham số đó sẽ được truyền theo tham trị; sử dụng từ khóa ByRef trước tham số để quy định tham số đó được truyền theo tham biến (mặc định của VB.Net là truyền theo tham trị)
Truyền tham số theo trị (tham trị) tức là cái mà chúng ta sử dụng trong chương trình con là bản sao của tham số thực được truyền vào chương trình con, vì vậy việc truyền theo trị có những đặc điểm sau:
Nếu trong chương trình con có những lệnh làm thay đổi giá trị của tham số hình thức thì những thay đổi này không có ảnh hưởng gì đến giá trị của tham số thực
Trang 31được truyền ở đầu vào khi chúng ta gọi chương trình con, vì những thay đổi này chỉ thực hiện trên bản sao tương ứng
Tốn một ít bộ nhớ và thời gian cho việc sao chép (tùy theo kích thước của tham
số tương ứng)
Truyền tham số theo biến (tham biến) được thực hiện vào chính địa chỉ của biến được truyền, nghĩa là mọi lệnh của chương trình con đối với tham số hình thức cũng chính là các lệnh đối với biến này Vì vậy việc truyền theo tham biến có những đặc điểm sau:
- Nếu trong chương trình con có những lệnh làm thay đổi giá trị của tham số hình thức thì những thay đổi này cũng chính là những thay đổi trên biến được truyền Hay nói cách khác những sự thay đổi đó vẫn có tác dụng đối với các tham số thực truyền vào khi kêt thúc chương trình con
- Không tốn thêm bộ nhớ và thời gian do không phải sao chép
Ví dụ: chúng ta có hai hàm Swap1 và Swap2 như sau
Private Sub Swap1(ByRef so1 As Integer, ByRef so2 As Integer)
Trang 32Tham số tùy chọn
Khi chúng ta muốn quy định một tham số của hàm hay thủ tục là tham số tùy chọn (tức là có thể có hoặc bỏ qua trong lời gọi hàm) thì chúng ta dùng từ khóa Optional trước khai báo tham số của hàm/thủ tục Tham số tùy chọn luôn được khai báo cuối cùng trong danh sách tham số và phải được khởi gán giá trị ngay từ khi khai báo
2.12.6 Biến địa phương/biến toàn cục
Khái niệm địa phương và toàn cục của phạm vi của biến là đề cập đến phạm vị
sử dụng và có tác động của biến đó Nếu nó chỉ có phạm vi là trong thủ tục/hàm thì
nó được gọi là biến địa phương, còn nếu nó có phạm vi sử dụng trong toàn Project
thì nó được gọi là biến toàn cục Tuy nhiên trong phạm vi một form module, thì
những biến khai báo trong phần General lại vừa là biến địa phương vừa là biến toàn cục, vì vậy khái niệm địa phương hay toàn cục chỉ có tính tương đối Sau đây là một
số chú ý về biến địa phương/toàn cục trong Visual Basic:
Những biến được khai báo trong một Sub/Function trong phạm vi Form hay của Bas Module thì được gọi là biến địa phương và chỉ có phạm vi sử dụng trong Sub/Fuction
đó
Những biến được khai báo với từ khóa Private/Dim trong phần General của Form thì chỉ có phạm vi sử dụng trong Form, và toàn bộ các Sub/Function trong phạm vi Form đó, nhưng không thể sử dụng bên ngoài form Vì vậy nó là địa phương trong toàn Project, nhưng là toàn cục trong phạm vi Form
Những biến được khai báo với từ khóa Public trong phần General của Form thì
có phạm vi sử dụng trong toàn bộ Project, vì vậy nó có phạm vi toàn cục Tuy nhiên
ở bên ngoài Form mà muốn sử dụng biến đó thì phải sử dụng theo cú pháp sau:
<Tên Form>.<Tên biến>
Trang 33Những biến được khai báo với từ khóa Public trong phần General của Bas Module thì có phạm vi sử dụng trong toàn bộ Project và khi sử dụng nó ở bên ngoài Bas Module thì chỉ cần gọi tên biến đó Những biến này cũng có phạm vi toàn cục
Ví dụ : xét ví dụ sau về phạm vi địa phương/toàn cục của biến
„Các biến a, b được khai báo trong phần General của Form
Dim a As Byte, b As Byte
Public Sub Dia_Phuong()
Dim i As Byte, b As Byte
Viết lệnh cho sự kiện nhấn nút lệnh của nút lệnh cmdTest
Private Sub cmdTest_Click()
Trang 342.13 Kiểu mảng (Array)
Khi ta muốn có nhiều biến có cùng kiểu dữ liệu ta dử dụng kiểu mảng Để khai báo một biến mảng ta đặt tên biến, kiểu dữ liệu và chỉ rõ số phần tử của mảng Ví dụ:
Dim myArray(10) As Integer
Kết quả là một mảng có 11 phần tử và chỉ số của các phần tử từ 0 đến 10
Trong VB.NET không có từ khóa Option Base để chọn chỉ số mảng là bắt đầu từ
0 hay 1 và mọi mảng đều có chỉ số phần tử bắt đầu từ 0
Ta cũng có thể khai báo mảng và khởi gán giá trị cho các phần tử như sau:
Dim myArray() As Integer = { 1, 5, 8, 16 }
Câu lệnh trên làm hai chuyện: quyết định cỡ của mảng và cho các phần tử trị số khởi đầu Để dùng tính năng này, bạn không được nói rõ kích thước của mảng, mà
để cho chương trình tự tính
Trong VB.NET có thể dùng từ khoá Preserve để giữ nguyên trị số của các phần
tử trong một mảng khi bạn khai báo la ̣i kích thước (ReDim) của nó Tuy nhiên có một giới hạn cho mảng với hơn một chiều là ta chỉ có thể thay đổi kích thước của chiều cuối cùng (bên phải), nên những hàng code sau đây hợp lệ:
Dim myArray(,) As String
ReDim myArray(5, 5)
ReDim Preserve myArray(5, 8)
2.14 Kiểu dữ liệu do người dùng tự định nghĩa
Kiểu dữ liệu do người dùng tự định nghĩa rất tiện cho ta gom các thành phần dữ liệu liên hệ lại thành một kiểu dữ liệu có cấu trúc Trong VB.NET ta dùng nó như sau:
Public Structure Tên_kiểu
„ Khai báo các thành phần (trường)
End Structure
Ví dụ:
Public Structure UStudent
Public FullName As String
Trang 35Public Age As Integer
End Structure
Lưu ý các trường cần phải được khai báo với các từ khoá: Dim, Public, Private hay Friend, nhưng không thể dùng Protected vì Structure không thể thừa kế từ một Structure khác Sở dĩ, không thể dùng Private là vì bên trong Structure có thể có thuộc tính (Property)
2.15 Lơ ́ p Collections
VB.NET cho ta một thành phần collection rất mạnh trong Namespace System.Collections Vì Collection là một trong những công cụ rất thông dụng và hiệu năng trong VB.NET Dưới đây là danh sách các collections ta sẽ dùng thường xuyên:
2.16 Bẫy lỗi
VB.NET cho ta sử dụng cấu trúc Try Catch Finally End để xử lý lỗi Thí
dụ như trong bài toán chia dưới đây, nếu bị lỗi Division by 0 thì ta sẽ cho kết quả bằng 0 Dù có error hay không, chương trình vẫn hiển thị kết quả trong cửa sổ Output qua câu lệnh Console.WriteLine(result) trong phần Finally:
Try
result = a / b ' nếu phần này có lỗi thì nhảy đến phần Catch để thực hiê ̣n
Catch
Trang 36có thể dùng Catch giống như Select Case để có một cách xử lý cho mỗi error: Try
' Main code goes here
Catch When Err.Number=5
Hai cách viết lệnh ở trên có thể được gộp lại thành:
Catch e As Exception When Err.Number = 5
Trang 37Chương 3 Lập trình hướng đối tượng 3.1 Tạo một lớp (Class) mới
Trong một *.vb file ta có thể viết nhiều lớp, mã lệnh để định nghĩa mỗi lớp nằm trong một khối Class End Class Thí dụ:
Public Class Car
Public Color As String
Private _speed As Integer
Public ReadOnly Property Speed() As Integer
3.2 Lớp và không gian tên (namespace)
.NET dùng Namespace để sắp đặt các lớp cho thứ tự theo nhóm, loại
Namespaces được khai báo với một khối có cấu trúc giống như sau:
Namespace Tên_Namespace
Public Class Tên_lớp
„ Khai báo các thành phần của lớp End Class
End Namespace
Ví dụ:
Namespace ObjectClass
Public Class Car
Public Color As String
Private _speed As Integer
Public ReadOnly Property Speed() As Integer
Get
Return _speed
End Get
Trang 38Private myObject As ObjectClass.Car
Một file nguồn có thể chứa nhiều Namespace, và bên trong mỗi Namespace lại
có thể có nhiều Class Ngoài ra, Các lớp thuộc về cùng một Namespace có thể nằm trong nhiều files khác nhau trong một VB.NET project Thí dụ ta có một file nguồn với code như sau:
End Namespace
Vậy thì trong Namespace ObjectClass ta có hai lớp: Car và Plane Mặc định, Namespace gốc (Root Namespace) của một VB.NET project là tên của project ấy Khi ta dùng Namespace block structure là chúng ta đang thêm một tầng tên vào Root Namespace Do đó, trong thí dụ trên nếu tên project là MyProject thì, từ bên ngoài project ấy, ta có thể khai báo một biến như sau:
Private myObject As MyProject.ObjectClass.Car
3.3 Khai báo phương thức (Methods)
Methods trong VB.NET có hai loại: Sub và Function
Cú pháp của phương thức dạng Sub:
Trang 39Public Sub Tên_phương_thức(Danh sách tham số)
' Các câu lệnh
End Sub
Cú pháp của phương thức dạng Function:
Public Function Tên_phương_thứ c(Danh sách tham số) As Kiểu_dữ_liê ̣u
• Private - chỉ cho phép hoạt động trong cùng Class
• Friend - chỉ cho phép hoạt động trong cùng project/component
• Public - cho phép sử du ̣ng trong cùng solution
• Protected - cho phép hoạt động trong cả lớp con, cháu
• Protected Friend - cho phép hoạt động trong cùng project/component hay trong cả lớp con, cháu
Ví dụ: Trong lớp Car ta khai báo hai phương thức sau:
Public Sub Accelerate(Byval accelerateBy As Integer)
Trang 403.4 Khai báo thuộc tính (Properties)
Trong VB.NET một thuô ̣c tính được khai báo giống như 1 biến, ta cũng có thể khai báo và khởi gán giá tri ̣ cho thuô ̣c tính
Ví dụ trong lớp Car ta khai báo thêm thuộc tính _numOfDoor như sau:
Private _numOfDoor As Integer = 4
Đối với thuộc tính ta dùng hai phương thức Get và Set để làm việc với thuộc tính Phương thức Set dùng để thiết lâ ̣p giá tri ̣ cho thuô ̣c tính , còn phương thức Get dùng để nhận lại giá trị của thuộc tính
Cú pháp của Get và Set như sau
Ví dụ trong lớ p Car , đối với thuô ̣c tính _numOfDoor ta có các phương thức Get
và Set được viết như sau:
Public Property NumOfDoor() As Integer
Get
Return _numOfDoor
End Get
Set(ByVal value As Integer)
If value >= 2 And value <= 5 Then
_numOfDoor = value
End If
End Set
End Property