CHƯƠNG 5: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VB.NET

Similar documents
TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

Chương 5. Network Layer 19/09/2016 1

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

Tài liệu hướng dẫn: Stored Procedure

TỔNG QUAN VỀ.NET VÀ C#

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

GV: Phạm Đình Sắc or

Entity Framework (EF)

Bài 10: Cấu trúc dữ liệu

SIMULATE AND CONTROL ROBOT

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

Tạo Project với MPLAB

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

Hướng dẫn cài đặt FPT

CẤU TRÚC DỮ LIỆU NÂNG CAO

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Dọn "rác" Windows 7 vào dịp cuối năm

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

Nhấn nút New để tạo 1 biến mới Trang 17

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Tình huống 1: PPPoE với Username và Password

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

BẢO MẬT TRONG SQL SERVER

Tìm hiểu Group Policy Object và các ví dụ

LÂ P TRI NH WEB ASP.NET

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

STACK và QUEUE. Lấy STACK

SIEMENS INDUSTRIAL NETWORKS

I. Hướng Dẫn Đăng Nhập:

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

Bài tập lớn số 1. Giả lập bộ định thời

Mô hình dữ liệu quan hệ (Relational data model)

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

BELGIUM ONLINE APPOINTMENT

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

Lecture 12. Trees (1/2) Nội dung bài học:

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

Exceptions. Outline 7/31/2012. Exceptions. Exception handling is an important aspect of objectoriented. Chapter 10 focuses on:

Các kiểu định địa chỉ họ MSC-51

Đa ngôn ngữ (Internationalization) trong Servlet

Google Search Engine. 12/24/2014 Google Search Engine 1

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

NHÚNG. Vi ñiều khiển BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 2

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

LINQ TO SQL & ASP.NET

Parallels Cloud Server 6.0

Phần 1: Hướng dẫn sử dụng PictureBox tạo Slide Show

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

Lập trình chuyên nâng cao. Lập trình phân tán (Distributed computing

PHÁT TRIỂN ỨNG DỤNG WEB

Time Picker trong Android

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

1 Bước 1: Test thử kit LaunchPad.

HƯỚNG DẪN SỬ DỤNG NHANH MINDJET MIND MANAGER

ĐỀ CƯƠNG BÀI GIẢNG HỌC PHẦN: AN NINH MẠNG

LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

2.4. GIAO THỨC MQTT Các khái niệm cơ bản MQTT được phát triển bởi IBM và Eurotech, phiên bản mới nhất là MQTT 3.1 MQTT (Giao vận tầm xa) là

MỤC LỤC. Giáo trình Thiết kế web Trang 1

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

Bài 7: Các cấu trúc điều khiển

Cập nhật ResultSet trong JDBC

Bài thực hành số 2 QUYỀN và ROLE

BÀI 4 GIAO TIẾP GIỮA CÁC TIẾN TRÌNH TRONG LINUX

LAB IP SLA Bài 1. Bùi Quốc Kỳ ***

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

BÀI LAB ĐỔI TÊN DOMAIN

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

SMS Live Hướng dẫn sử dụng

Transcription:

CHƯƠNG 5: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VB.NET Phan Trọng Tiến BM Công nghệ phần mềm Khoa Công nghệ thông tin, VNUA Email: phantien84@gmail.com Website: http://timoday.edu.vn

Nội dung chính I. Các đặc điểm lập trình hướng đối tượng 1. Tính trừu tượng (Abstraction) 2. Tính đóng gói (Encapsulation) 3. Tính thừa kế (Inheritance) 4. Tính đa hình (Polymorphism) II. Thực hiện các đặc điểm lập trình hướng đối tượng trong VB.Net III. Khai báo các thành viên Class 1. Thủ tục khởi tạo(constructors) 2. Thủ tục khởi hủy(destructors) 3. Phương thức(methods) 4. Trường và Thuộc tính(fields và Properties) IV. Khai báo Namespaces

I. Các đặc điểm lập trình hướng đối tượng 1. Tính trừu tượng (Abstraction) 2. Tính đóng gói (Encapsulation) 3. Tính thừa kế (Inheritance) 4. Tính đa hình (Polymorphism)

So sánh class and object q Class là một khuân mẫu hoặc một bản thiết kế mà định nghĩa các thuộc tính và các phương thức của đối tượng. q Object là một bản sao chạy được của một class, sử dụng bộ nhớ và có hạn chế về thời gian.

1. Tính trừu tượng - Khi bạn mua một tủ lạnh -> Quan tâm tới kích thước, độ bền và các đặc điểm của nó, chứ không quan tâm tới máy móc của nó được làm như thế nào -> gọi là sự trừu tượng. - VB.Net cũng cung cấp tính trừu tượng qua class và objects - Một class định nghĩa các thuộc tính và cách cư xử giống như các đối tượng - Một object là bản sao của class

1. Tính trừu tượng q Mỗi đối tượng có các đặc điểm hoặc thuộc tính -> gọi là thuộc tính (property) của đối tượng, và có thể thực hiện hành động -> gọi là phương thức (method). q VB.Net cho phép bạn có khả năng tạo các thuộc tính và các phương thức cho các đối tượng khi tạo các class. q Tính trừu tượng để giảm độ phức tạp của đối tượng, chỉ hiện ra các thuộc tính và các phương thức cần thiết cho đối tượng. q Tính trừu tượng cho phép tổng quát hóa một đối tượng như một kiểu dữ liệu.

2. Tính đóng gói (Encapsulation) q Được hiểu như việc ẩn thông tin. Nó ẩn những chi tiết không cần thiết của đối tượng. q Ví dụ: Khi bạn bật tủ lạnh ->chức năng start bắt đầu nhưng bạn không thể nhìn thấy trong tủ hoạt động như thế nào. q Tính đóng gói là một cách thi hành tính trừu tượng.

2. Tính đóng gói(encapsulation) q Tính đóng gói ẩn việc thi hành của class đối với người sử dụng. Hay nói cách khác, nó chỉ hiển thị các thuộc tính và các phương thức của đối tượng.

3. Tính thừa kế q Một class thừa kế từ một class tồn tại. Lớp thừa kế gọi là lớp con (subclass) và lớp class được thừa kế gọi là lớp cơ sở (base class). q Tất cả các lớp trong VB.Net đều xuất phát từ lớp Object. q Lớp con thừa kế các thuộc tính và các phương thức từ lớp cơ sở. q Cũng có thể thêm các thuộc tính và phương thức cho lớp con. Bạn cũng có thể chồng các phương thức của lớp cơ sở.

3. Tính thừa kế q Tính thừa kế cho phép bạn tạo phân cấp các đối tượng. q Ví dụ: phân cấp class

3. Tính thừa kế q Mặc định, tất các các class bạn tạo trong VB.Net có thể được thừa kế. q Thừa kế cho phép bạn dùng lại code và tạo các đối tượng phức tạp hơn từ các đối tượng đơn giản. q VB.Net cung cấp nhiều từ khóa cho phép bạn thi hành việc thừa kế

4. Tính đa hình q Để chỉ một đối tượng tồn tại nhiều khuân dạng khác nhau. q Ví dụ: Khi bạn mua tủ lạnh có 2 cách, bạn phải liên hệ với người bán hoặc nhà sản xuất. q Khi bạn liên hệ với ngừơi bán, người bán sẽ đặt hàng và liên hệ với công ty. q Khi bạn liên hệ với công ty, tuy nhiên công ty sẽ liên hệ với người bán ở vùng của bạn để sắp đặt việc phân phát tủ lạnh. q Như vậy, người bán và công ty là hai class khác nhau. Mỗi class đều có cách phản hồi khác nhau về cùng việc đặt hàng.->hiểu như là tính đa hình trong lập trình hướng đối tượng

4. Tính đa hình q Tính đa hình cho phép bạn tạo cùng phương thức nhưng thực thi các công việc khác nhau. q Bạn cũng có thay đổi cách thực thi các phương thức của lớp cơ sở.

II. Thực thi OOP trong VB.Net q Tính trừu tượng được thể hiện bằng việc dùng class q Cú pháp tạo class: [AccessModifier][Keyword] Class _ ClassName [Implements InterfaceName] 'Declare properties and methods End Class

Tiếp q AccessModifier định nghĩa khả năng truy cập của class, sử dụng một trong các từ khóa : Public, Private, Protected, Friend,Protected Friend. q Keyword chỉ rõ các lớp có được thừa kế hay không, từ khóa Inherit, NotInheritable hoặc MustInherit. q Class đánh dấu bắt đầu một class q Classname: tên của một class q Implements chỉ rõ class thực thi trên giao diện nào. q InterfaceName miêu tả tên giao diện.một class có thể thực thi trên một hoặc nhiều giao diện. q End Class đánh dấu kết thúc khai báo của một class

Tạo class trong vb.net Vào File \ Add New Item Nhập tên class Public Class Communication 'Declare properties and methods End Class

Bảng AccessModifier Access Modifier Public Dùng trong Mô tả module, class, structure Được truy cập từ cùng project, từ project khác hoặc từ thành phần khác Private module, class, structure Chỉ được truy cập trong cùng module, class, structure Protected Classes, class member Được truy cập trong cùng class, hoặc class được kế thừa Friend module, class, structure Truy cập được trong cùng project Protected Friend Classes, class member Truy cập được trong cùng project Và từ các class được kế thừa

AccesModifier q Một Module là một khối chứa được các class, thuộc tính, phương thức bạn định nghĩa. q Một Structure được sử dụng để tạo ra kiểu dữ liệu người dùng tự định nghĩa q Class member bao gồm các thủ tục, các trường, các phương thức định nghĩa trong class q AccessModifier có khả năng cho bạn thực hiện tính trừu tượng và tính đóng gói

Tính thừa kế (Inherits) q Cú pháp: Inherits q Ví dụ: Public Class ThisClass Inherits OtherClass 'Property and method declarations 'Other code End Class q Lớp ThisClass kế thừa từ lớp OtherClass q VB.Net cung cấp các từ khóa khác nhau để thực hiện việc thừa kế

Bảng Keyword Keyword Được dùng với Mục đính Inherits Classes Thừa kế tất cả các thành viên của lớp thừa kế (trừ private) MustInherit Classes Chỉ rõ lớp này chỉ sử dụng như lớp cơ sở NotInheritable Classes Chỉ rõ lớp này không được sử dụng như lớp cơ sở Overridable Procedures Chỉ rõ thủ tục có thể viết chồng trong class được thừa kế. NotOverridable Procedures Chỉ rõ thủ tục không được viết chồng trong class được thừa kế.

Bảng Keyword (tiếp) Keyword Được dùng với Mục đính MustOverride Procedures Chỉ định các thủ tục phải viết chồng trong tất cả các lớp được kế thừa Overrides Procedures Chỉ định một thủ tục được viết chồng từ lớp cơ sở MyBase Code Gọi code của lớp cơ sở từ lớp được thừa kế MyClass Procedures Gọi code của chính class đó Protected Procedures, fields Chỉ định các thủ tục và các trường được truy cập trong cùng class và các class được thừa kế

Ví dụ Public MustInherit Class Communication Public Sub New() MyBase.New() MsgBox("Constructor of Communication class", MsgBoxStyle.OKOnly) End Sub End Class Public MustOverride Function Send() As Boolean Public Class Email Inherits Communication Public Sub New() MyBase.New() MsgBox("Constructor of Email class", MsgBoxStyle.OKOnly) End Sub Overrides Function Send() As Boolean MsgBox("Send function of Email class", MsgBoxStyle.OKOnly) 'Code specific to the Email class return True End Function End Class

Ví dụ (tiếp) Public Class Fax Inherits Communication Public Sub New() MyBase.New() MsgBox("Constructor of Fax class", MsgBoxStyle.OKOnly) End Sub Overrides Function Send() As Boolean MsgBox("Send function of Fax class", MsgBoxStyle.OKOnly) 'Code specific to the Fax class return True End Function End Class

Ví dụ (tiếp) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim int1 As Integer Dim communicate As Communication int1 = InputBox("Enter 1 to send an e-mail message and 2 to send a fax message.") Select Case (int1) Case "1" communicate = New Email() communicate.send() Case "2" communicate = New Fax() communicate.send() End Select End Sub

Giải thích q Lớp Email và Fax kế thừa từ lớp cơ sở Communication q Tính đa hình thể hiện thể hiện ở chỗ bạn có thể chồng nhiều phương thức. q Có thể ghi chồng phương thức của lớp cơ sở, nó có thể thực hiện các hành động khác.

III. Khai báo các thành viên Class 1. Constructor (Thủ tục khởi dựng) - Được dùng để khởi tạo đối tượng - VB.Net, Thủ tục Sub New thực hiện như một Contructor - Thủ tục Sub New được thực hiện khi đối tượng của class đươc tạo, bạn có thể thực hiện các công việc cần thiết trước khi dùng đối tượng. - Ví dụ khi bạn kết nối với Database, và các biến được khởi tạo trong Sub New

Contructors(tiếp) q Tất cả các class trong VB.Net đều xuất phát từ class Object. Vì vậy khi tạo một class, bạn cần gọi Contructor của class Object. Để làm việc này bạn thêm câu lệnh MyBase.New() vào dòng đầu tiên của Contructor class của bạn. Public Class MyNewClass Public Sub New() MyBase.New() 'Code for Initializing objects and variables End Sub 'Other class members End Class

Contructors(tiếp) q Contructor cũng có thể mang đối số. Public class Employer Public Sub New(Optional ByVal iempcode As Integer = 0) code initiation here End Sub code here End Class Bạn có thể tạo các đối tượng Employer: Dim Emp1 As New Employee(1001) Hoặc Dim Emp2 As Employee = New Employee(1001) q Contructor là tùy chọn.

2. Destructors (Thủ tục khởi hủy) q VB.Net cũng cung cấp thủ tục khởi hủy Sub Finalize. q Thủ tục khởi hủy thực hiện ngược lại với hàm khởi tạo. q Thủ tục khởi hủy sẽ giải phóng bộ nhớ và các tài nguyên đã được sử dụng của đối tượng. q Thủ tục Sub Finalize là phương thức Protected

Ví dụ Protected Overrides Sub Finalize() MyBase.Finalize() 'Add code here End Sub q Từ khóa Overrides được sử dụng bởi vì Thủ tục Sub Finalize() kế thừa từ lớp Object

Destructors q Thủ tục Sub Finalize() không được gọi khi chạy chương trình,.net framework sẽ gọi thủ tục này khi đối tượng kết thúc để giải phóng bộ nhớ và tài nguyên đối tượng sử dụng. q.net Framework tự động thu thập rác -> Bạn không cần thêm công việc giải phóng bộ nhớ và tài nguyên. q.net Framework cung cấp giao diện IDisposable giúp bạn quản lý tài nguyên.

Destructors q IDisposable cung cấp phương thức Dispose. Không giống thủ tục Sub Finalize(), bạn có thể gọi phương thức Dispose. Bạn có thể thêm code trong phương thức Dispose để giải phóng tài nguyên và các công việc như đóng kết nối tới đa q Thủ tục Sub Finalize() đảm bảo rác được dọn dẹp nếu phương thưc Dispose không được gọi.

Methods q Bao gồm thủ tục Sub và Function được khai báo trong class. q VB.Net bao gồm các thủ tuc Sub, Function, và Property. q Thủ tục Sub không trả về giá trị. Câu lệnh Sub.. End Sub. Khi thủ tục Sub được gọi, tất cả các câu lệnh trong thủ tục được thực hiện cho đến khi gặp các câu lệnh End Sub, Exit Sub hoặc Return.

Methods q Thủ tục Function trả về giá trị khi gọi nó. Dùng câu lệnh Function và End Function để định nghĩa thủ tục Function. Thủ tục Function thực thi các câu lệnh phía trong cho đến khi gặp các câu lệnh End Function, Exit Function hoặc Return. q Hai thủ tục Function và Sub có thể mang đối số như hằng, biến, biểu thức. q Bạn có thể chồng các phương thức trong VB.Net.

Fields and Properties q Fields là các biến được khai báo trong class mà có thể truy cập từ class khác q Ví dụ: Public Class MyClass1 Public MyField As Integer 'Declaring a field 'Other declarations and code End Class Dim MyObject As New MyClass1() MyObject.MyField = 6

Properties q Properties định nghĩa các thuộc tính của đối tượng. q Cú pháp tạo Property: Public Property NameProperty() As DataType Get Return PropertyValue 'Where PropertyValue is the property's value End Get Set(ByVal value As DataType) PropertyValue = value 'Where PropertyValue is the new value to be assigned End Set End Property

Property q Mặc định Property có cả hai thuộc tính đọc và ghi. VB.Net cũng định nghĩa thuộc tính chỉ đọc hoặc chỉ ghi. q Thuộc tính chỉ đọc dùng từ khóa ReadOnly q Thuộc tính chỉ ghi dùng từ khóa WriteOnly q Các từ đặt trước từ khóa AcessModifier

IV. Khai báo Namespaces q Namspaces được sử dụng để tổ chức các đối tượng được định nghĩa trong một assemby. q Namspace cho phép bạn tổ chức phân cấp các đối tượng. Cấu trúc phân cấp là việc nhóm các đối tượng tương tự nhau, để dễ truy cập. q Mặc định, tên Project được dùng làm namespace.

Khai báo Namespaces q Nếu bạn click chuột phải lên tên project trong Solution Explorer rồi chọn Properties bạn sẽ xem được namespace của project.

Khai báo Namespaces q Bạn cũng có thể tạo Namespace riêng của bạn bằng cách dùng câu lệnh: Namespace and End Namespace Namespace MyNamespace Public Class MyOwnClass1 'Code for the MyOwnClass1 End Class Public Class MyOwnClass2 'Code for the MyOwnClass2 End Class End Namespace

Khai báo Namespaces q Các namespace có thể lồng nhau Namespace GroceryStore Namespace Edible Public Class Vegetables 'Code for the class End Class Public Class Drinks 'Code for the class End Class End Namespace Namespace Inedible Public Class Cosmetics 'Code for the class End Class Public Class Toiletries 'Code for the classx` End Class End Namespace End Namespace q Bạn có thể dùng từ câu lệnh Imports để truy cập vào các class trong namespaces