Visual Basic.Net là ngôn ngữ lập trình hướng đối tượng (Object Oriented Programming Language - OOP), một trong những ngôn ngữ được tạo ra để hướng đến mục tiêu tạo ra ứng dụng phân tán trên môi trường .Net dựa trên nền Microsoft‟s Net Framework.
Visual Basic.Net chuyển sang hướng đi hoàn toàn mới đó là tập trung vào phát triển các ứng dụng cho môi trường đa tầng, các ứng dụng phân tán,… Đặc biệt là trong lĩnh vực công nghệ Internet, lập trình ứng dụng mạng, xây dựng ứng dụng Web,… Visual Basic.Net hỗ trợ đầy đủ bốn tính chất của ngôn ngữ
lập trình hướng đối tượng :
Tính thừa kế (Inheritance).
Trừu tượng hóa dữ liệu (Abstraction). Tính đa hình (Polymorphism).
Tính đóng gói (Encapsulation).
GVHD: ThS. Trần Minh Tùng - Trang 34 - SVTT: Lê QuangTuyến
Visual Basic.Net bổ sung thêm các tính năng hướng đối tượng như :
iao tiếp (Interface). Nạp chồng (Overloading). Hàm tạo và hàm hủy. Xử lý ngoại lệ có cấu trúc Xử lý đa luồng.
Những ứng dụng ngôn ngữ Visual Basic.Net có thể viết: Tạo ứng dụng trò chơi trên Windows.
Tạo các ứng dụng quản lý cho doanh nghiệp. Tạo báo cáo, tập tin văn bản.
Xử lý đồ họa.
Tương tác với hệ thống tập tin của Window. Truy xuất cơ sở dữ liệu.
Tạo các dịch vụ Windows.
Tạo các thư viện liên kết động (DLL).
Tạo các ứng dụng cho PDA, Mobie (Pocket PC).
Điểm nổi bật khi bạn để ý thấy chữ “.Net” trong Visual Basic.Net, bạn sẽ thấy ngay ngôn ngữ lập trình này chuyên trị tạo ứng dụng của môi trường .Net như :
Lập trình ứng dụng mạng (Network Application Programming).
Tạo ứng dụng Web / Internet (ASP.Net). Tạo các dịch vụ Web (Web Services). .v...v.
Những thay đổi trong ngôn ngữ Visual Basic.Net :
GVHD: ThS. Trần Minh Tùng - Trang 35 - SVTT: Lê QuangTuyến
Để Visual asic.Net thống nhất về mặt kỹ thuật với C .Net, C .Net,… Microsoft đã phát triển Common Language Runtime (CLR) thành nền tảng chung. Visual asic.Net không còn là công cụ sinh mã giả nữa, CLR làm cho nó trở thành ngôn ngữ hướng đối tượng thực sự và đặt nó ngang cấp với C .Net và C .Net. Về mặt kỹ thuật, một ứng dụng được tạo bởi Visual asic.Net không có gì khác biệt so với ứng dụng tạo bằng C .Net hay C .Net.
Thay đổi về cú pháp và cấu trúc lập trình:
Sử dụng các module (đơn thể) :Các module theo kiểu chuẩn của VB6 vẫn được hỗ trợ, tuy nhiên giờ đây bạn được cung cấp thêm hai từ khóa mới là Module và End Module dùng để định nghĩa khối module ngay trong cửa sổ Code Editor.
Visual Basic.Net tiếp tục hỗ trợ từ khóa Function và Sub cho phép bạn tự tạo các hàm và thủ tục cho riêng mình. Tuy nhiên cú pháp để khai báo và gọi hàm, thủ tục có thay đổi chút ít.
Thủ tục (Procedure) :
Khi bạn gọi một thủ tục trong Visual Basic.Net, bắt buộc bạn phải có dấu ngoặc đơn bao quanh danh sách đối số (tương tự cách gọi hàm). Ngay cả khi thủ tục không có đối số thì dấu ngoặc đơn vẫn yêu cầu phải có.
Ví dụ: ProcessData() X=New Customer()
Bạn có tùy chọn sử dụng thêm phát biểu Return để trả về kết quả ở cuối hàm cho nơi gọi.
GVHD: ThS. Trần Minh Tùng - Trang 36 - SVTT: Lê QuangTuyến
Trong Visual Basic.Net, kiểu dữ liệu Integer có bốn loại: yte, Short, Integer (tương đương với Long trong VB6) và Long (lớn gấp đôi Long trong V 6).
Visual Basic.Net dùng kiểu Decimal với 128 bit để thay thế kiểu Currency trong VB6.
Kiểu Char được dùng để chứa một Unicode (16 bit) ký tự.
Thay thế kiểu Variant bằng Object.
Visual asic.Net dùng kiểu ate để lưu dữ liệu ngày, thay vì bên V 6 dùng kiểu ouble.
Cách tuyên bố biến số (Variables) và hằng số (Constant):
Bạn có thể khai báo được nhiều biến số trên cùng một hàng.
Khai báo trị số khởi đầu một cách rút gọn, dễ hiểu.
Ví dụ : Dim X As Integer = 12
Khai báo hằng số (Constant) phải khai rõ kiểu dữ liệu của nó là String, Integer, Boolean .v...v.
Giá trị True, alse : Visual asic.Net ấn định 1 cho giá trị luận lý TRUE (đúng) thay vì bên V 6 ấn định cho giá trị TRUE là -1.
Thay đổi sử dụng mảng (array):
Mảng trong Visual Basic.Net giờ đây cho phép lấy chỉ số cơ sở bắt đầu từ 0 (zero-base). Có nghĩa là phần tử thấp nhất trong mảng được đánh số 0.
Mảng có thể được khai báo và gán giá trị theo cách cũ. Ví dụ cú pháp để khai báo mảng MyArray() và thêm 4 phần tử vào mảng như sau :
GVHD: ThS. Trần Minh Tùng - Trang 37 - SVTT: Lê QuangTuyến
Phát biểu ReDim vẫn còn hiệu lực trong Visual Basic.Net mặc dù nó không dùng để thay đổi kích thước của mảng đang có dữ liệu. Không thể dùng ReDim trong phần khai báo khởi tạo giá trị ban đầu cho mảng.
Thay đổi trong tập Collection:
Bạn không còn phải sử dụng một lớp tập hợp
Collection đơn duy nhất như trước đây nữa. Thay vào đó, Visual Basic.Net sử dụng lớp System.Collections để xử lý tập hợp. Với việc sử dụng lớp System.Collections, bạn có thể truy cập rất nhiều tập hợp hữu dụng khác như Stack, Queue, ictionary và Hastable,…
Bảng 1: Các chức năng của tập Collection
Collection Chức năng
ArrayList ynamic Array tự động lớn lên khi elements được bỏ vào. BitArray Array chứa trị số oolean (True/ alse).
HashTable Collection chứa những cặp key-value data, cho ta dùng làm tự điển.
Queue Chứa một I O ( irst In, irst Out) structure. Element có thể là bất cứ Object loại nào.
Stack Chứa một LI O (Last In, irst Out) structure.
SortedList Chứa một danh sách những cặp key-value data được sắp theo thứ tự.
Bẫy lỗi và sử dụng cấu trúc xử lý lỗi :
Khối Try…Catch là cơ chế xử lý lỗi mới trong Visual Basic.Net. Mặc dù bạn vẫn còn có thể sử dụng các cú pháp
GVHD: ThS. Trần Minh Tùng - Trang 38 - SVTT: Lê QuangTuyến
cũ trong V 6 như On Error oto, Resume, Resume Next nhưng Try…Catch đơn giản và hợp logic hơn cú pháp oto trước đây.
Ngoài ra, Visual Basic.Net còn bổ sung thêm một số phát biểu mới như : Catch When, Exit Try,…; các đối tượng Err và thuộc tính Err.Number, Err. escription để xác định mã lỗi. Thêm vào đó bạn có thể sử dụng thêm phương thức mới là Err. etException để trả về thông tin của lỗi ngoại lệ phát sinh .
Sử dụng phát biểu lặp và các phát biểu cấu trúc ra quyết định :
Visual Basic.Net bổ sung thêm vào hai toán tử logic mới là AndAlso và OrElse. Trong các phát biểu điều kiện chứa nhiều điều kiện như cấu trúc If…Then, không cần thiết lúc nào cũng phải ước lượng toàn bộ hay tất cả các điều kiện. Bỏ qua một số biểu thức khi ước lượng điều kiện được gọi là ước lượng tắt và có thể sử dụng bởi toán tử AndAlso và OrElse .
Trong VB6, cú pháp lặp While được xây dựng như sau While…Wend. Trong Visual asic.Net bạn phải viết lệnh While rõ ràng hơn là While…EndWhile.
Thay đổi trong cách viết toán tử số học (Arithmetic Operators)
Bảng 2: Sự khác nhau giữa VB6 và VB.Net trong cách viết toán tử số học
Arithmetic Operation Trong VB6 Có thể viết trong VB.Net
GVHD: ThS. Trần Minh Tùng - Trang 39 - SVTT: Lê QuangTuyến Trừ X = X – 10 X -= 10 Nhân X = X * 7 X *= 7 Chia X = X / 19 X /= 19 Chia Integer X = X \ 13 X \= 13 Lũy thừa X = X ^ 3 X ^= 3
Ghép Strings X = X & "more text" X &= "more text"
Không phải cần dùng chữ Set khi nói đến Object:
Trong VB6 ta có thể viết :
Set x=New Product Set a=x
Trong VB.Net sẽ được viết lại :
x=New Product() a=x
Thay đổi trong cách viết thuộc tính mặc định (Default Property):
Visual asic.Net không còn hỗ trợ các thuộc tính mặc định cho các đối tượng không có tham số, nhưng vẫn hỗ trợ đối với các đối tượng có tham số.
Visual Basic.Net bắt buộc phải có ít nhất một tham số (parameter) cho thuộc tính mặc định. Phải dùng từ khóa mặc định ( efault Keyword) để tạo ra thuộc tính mặc định, như ví dụ sau:
Default Public Property Item(ByVal Index As Integer) As String
Dùng từ dành riêng (từ khóa) làm tên thủ tục (Procedure Name) :
GVHD: ThS. Trần Minh Tùng - Trang 40 - SVTT: Lê QuangTuyến
Trong Visual Basic.Net ta có thể dùng Reserved Word làm Procedure Name bằng cách để nó giữa ngoặc vuông. Giả sử 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
Tham Số Byval Và Byref:
Mặc định trong V 6, các biến được truyền đến một hàm hay thủ tục mà không xác định cụ thể là yRef hay yVal thì được gán tự động dựa trên kiểu tham số của chúng. Tất cả kiểu dữ liệu cơ bản như Integer, String, oolean và Variant đều được gán là yRef. Các kiểu dữ liệu tham chiếu đối tượng và do người dùng định nghĩa được ấn định là yVal. Riêng với Visual asic.Net, mặc định gán tất cả các tham số là yVal trừ khi chúng được khai báo rõ ràng là yRef.
Truy cập dữ liệu :
Đối tượng R O và A O trong V 6 đã được thay thế chung bằng mô hình ADO.Net - là mô hình lập trình truy xuất dữ liệu chung cho tất cả ngôn ngữ và chương trình Windows (cụ thể là các ngôn ngữ trong Visual Studio như : C#, C++, VB.Net).
Định dạng dữ liệu bên trong của ADO.Net tuân theo chuẩn XML, do đó bạn có thể dễ dàng tích hợp dữ liệu của ADO.Net với các ứng dụng Web hiện có trên Internet. Trong Visual Basic.Net, thông tin về cơ sở dữ liệu chứa
trong bảng bây giờ được biểu diễn thông qua đối tượng là dataset và không kết nối trực tiếp thường xuyên với dữ liệu,
GVHD: ThS. Trần Minh Tùng - Trang 41 - SVTT: Lê QuangTuyến
thông tin trong dataset là thông tin sao chép và chỉ là ảnh của dữ liệu thật.
Visual Basic.Net còn hỗ trợ thêm các đối tượng mới như ataset, ataAdapter, ataTable,…
Kế thừa Form và tạo các lớp cơ sở:
Khả năng thừa kế Form sử dụng công cụ Inheritance Picker. Lớp giờ đây được định nghĩa từ khóa Public Class và End Class. Bạn có thể tạo ra các lớp con kế thừa lớp cha thông qua từ khóa Inherits.
Bảng 3: Sự khác biệt giữa VB6 và VB.Net
TÍNH NĂN VB6 VB.Net
Tính thừa kế
Không cung cấp tính thừa kế.
Thực hiện kế thừa đầy đủ cho phép lớp con riêng dẫn xuất các thuộc tính và phương thức từ lớp cơ bản được viết bằng ngôn ngữ .Net C++ hay C#. Khả năng tương tác - ùng các kiểu biến khác với C và Java, làm cho các ứng dụng viết bằng ngôn ngữ V và C khó tương tác với nhau. - Không có khả năng kết hợp tính năng từ những
Các kiểu biến nhất quán với C và C trên nền CLR.
GVHD: ThS. Trần Minh Tùng - Trang 42 - SVTT: Lê QuangTuyến
lớp khác.
Tạo ứng dụng
Tạo tập tin .EXE nhưng lệ thuộc vào các thư viện LL hỗ trợ. Việc triển khai khó khăn vì phải phân phối không chỉ tập tin .EXE mà cả các thư viện LL.
Tạo tập tin .EXE có thể chạy không cần đến các thư viện LL hỗ trợ.
Phân luồng
Không thể tận dụng hết tính năng phân luồng có trong COM.
Cho phép phân luồng linh động tăng tính khả năng mở cho ứng dụng.
GVHD: ThS. Trần Minh Tùng - Trang 43 - SVTT: Lê QuangTuyến