Bài giảng Hướng dẫn lập trình VB.NET - Chương 17: Kế thừa Form và tạo các lớp cơ sở - Phạm Đức Lập

Nội dung thảo luận:

- Sử dụng Inheritance Picker để kết hợp các form hiện có vào dự án

- Tự tạo các lớp cơ sở của bạn với các thuộc tính và phương thức tùy biến

- Dẫn xuất một lớp mới từ lớp cơ sở bằng từ khóa kế thừa Inherits

Trong các phiên bản trước đây, VB vẫn chưa được coi là ngôn ngữ lập trình mạnh do nó

không có tính kế thừa để hoàn thiện mô hình lập trình hướng đối tượng. VB.NET đã cung

cấp đầy đủ khả năng kế thừa. Bạn có thể kế thừa một form hay những lớp cơ sở để tạo ra

những lớp đối tượng con.

Chú ý:

- Kế thừa form trong môi trường VB.NET sử dụng đối tượng Inheritance Picker.

- Lớp người dùng giờ đây có thể chứa trong một file.

- Các từ khóa Property Get, Property Set và Property Let không còn được sử dụng

nữa.

- Có thể tạo lớp con kế thừa lớp cha thông qua từ khóa Inherits.

1. Kế thừa và sử dụng lại form đã có bằng INHERITANCE PICKER

Kế thừa là ta tận dụng lại những gì đã có, những ưu điểm của form hay lớp cha. Trong thiết

kế form thì thực ra lớp form của ta kế thừa từ lớp cha là System.Windows.Forms.Form.

Việc kế thừa một form ta có hai cách làm, đó là bạn có thể viết bằng mã chương trình như

sau:

Public Class Form1 : Inherits System.Windows.Forms.Form

Cách thứ hai là dựa vào bộ công cụ Inheritance Picker để thực hiện việc kế thừa ngay trong

khi thiết kế. Bạn truy xuất công cụ này nhờ việc chọn lệnh Project | Add New Item và chọn

mục Inherited Form trong danh sách mục mới. Nhưng dự án cần được Build trước khi việc

kế thừa có thể thực hiện.

pdf 9 trang yennguyen 4320
Bạn đang xem tài liệu "Bài giảng Hướng dẫn lập trình VB.NET - Chương 17: Kế thừa Form và tạo các lớp cơ sở - Phạm Đức Lập", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Hướng dẫn lập trình VB.NET - Chương 17: Kế thừa Form và tạo các lớp cơ sở - Phạm Đức Lập

Bài giảng Hướng dẫn lập trình VB.NET - Chương 17: Kế thừa Form và tạo các lớp cơ sở - Phạm Đức Lập
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 1 - Add: cnt-44-dh, VIMARU 
Chương 17: 
Kế thừa Form và tạo các lớp cơ sở 
--------oOo-------- 
Nội dung thảo luận: 
- Sử dụng Inheritance Picker để kết hợp các form hiện có vào dự án 
- Tự tạo các lớp cơ sở của bạn với các thuộc tính và phương thức tùy biến 
- Dẫn xuất một lớp mới từ lớp cơ sở bằng từ khóa kế thừa Inherits 
Trong các phiên bản trước đây, VB vẫn chưa được coi là ngôn ngữ lập trình mạnh do nó 
không có tính kế thừa để hoàn thiện mô hình lập trình hướng đối tượng. VB.NET đã cung 
cấp đầy đủ khả năng kế thừa. Bạn có thể kế thừa một form hay những lớp cơ sở để tạo ra 
những lớp đối tượng con. 
Chú ý: 
- Kế thừa form trong môi trường VB.NET sử dụng đối tượng Inheritance Picker. 
- Lớp người dùng giờ đây có thể chứa trong một file. 
- Các từ khóa Property Get, Property Set và Property Let không còn được sử dụng 
nữa. 
- Có thể tạo lớp con kế thừa lớp cha thông qua từ khóa Inherits. 
1. Kế thừa và sử dụng lại form đã có bằng INHERITANCE PICKER 
Kế thừa là ta tận dụng lại những gì đã có, những ưu điểm của form hay lớp cha. Trong thiết 
kế form thì thực ra lớp form của ta kế thừa từ lớp cha là System.Windows.Forms.Form. 
Việc kế thừa một form ta có hai cách làm, đó là bạn có thể viết bằng mã chương trình như 
sau: 
 Public Class Form1 : Inherits System.Windows.Forms.Form 
Cách thứ hai là dựa vào bộ công cụ Inheritance Picker để thực hiện việc kế thừa ngay trong 
khi thiết kế. Bạn truy xuất công cụ này nhờ việc chọn lệnh Project | Add New Item và chọn 
mục Inherited Form trong danh sách mục mới. Nhưng dự án cần được Build trước khi việc 
kế thừa có thể thực hiện. 
1.1. Kế thừa một form hộp thoại đơn giản 
Bây giờ chúng ta làm ví dụ MyFormInheritance để kế thừa một form hộp thoại đơn giản 
sau đây: 
- Tạo mới một Solution và add vào một dự án cùng tên là MyFormInhertiance và 
thiết kế Form1 đơn giản với hai nút nhấn như sau: 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 2 - Add: cnt-44-dh, VIMARU 
- Bạn tạo thủ tục Button1_Click và nhập vào dòng mã: 
 MsgBox("Bạn click nút OK") 
- Tương tự thủ tục Button2_Click với dòng mã: 
 MsgBox("Bạn click vào nút Cancel") 
- Tiến hành Build Solution vì bạn chỉ có thể kế thừa các form khi chúng đã biên 
dịch ra File .DLL hay .EXE. 
- Bây giờ ta sẽ tạo form2 kế thừa form1. Bạn chọn Project | Add | New Item rồi 
chọn mục Inherited Form trong danh sách: 
- Nhấn nút Add để hiện hộp thoại Inheritance Picker như hình: 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 3 - Add: cnt-44-dh, VIMARU 
- Hộp thoại này liệt kê tất cả danh sách form có trong dự án hiện hành. Bạn có thể 
tìm các form khác trên đĩa cứng đã biên dịch bằng cách nhấp vào nút Browse. 
- Chọn Form1 và nhấn nút OK. Lúc này một form mới xuất hiện với hai nút nhấn 
và thuộc tính Text “Dialog Box” kế thừa từ form1 như hình: 
1.2. Tùy biến form kế thừa 
Bạn đặt thêm một nút nhấn thứ ba nên form2, đặt thuộc tính Text của nó là “Click Me!” 
Tạo thủ tục Button3_Click với dòng mã: 
 MsgBox("Đây là một Form kế thừa!") 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 4 - Add: cnt-44-dh, VIMARU 
Trở lại cửa sổ thiết kế form2 và thử double click vào nút OK hay Cancel ta thấy không thể 
chỉnh sửa thủ tục này. Điều này nghĩa là, bạn không thể chỉnh sửa thành phần kế thừa 
nhưng có thể thêm mới thành phần vào. 
Đặt lại form2 là form khởi động theo cách đã học trong chương trước. 
Chạy chương trình: 
Chương trình đã hoàn thành và chúng ta có thể kiểm thử. Ấn F5 để chạy chương trình. Ấn 
nút OK và Cancel để xem hộp thoại thông báo. 
2. Tự tạo các lớp cơ sở của riêng mình 
Để biên dịch form2, Inheritance Picker sẽ tạo một liên kết đến dự án và form1 cùng form 
mới. Nội dung của form mới sẽ như sau (trong cửa sổ code editor của form1.vb bạn sẽ 
không nhìn thấy những khai báo này. Để xem bạn có thể dùng một trình soạn thảo nào đó 
như Edit Plus mở file tương ứng là Form2.Designer.vb): 
Partial Class Form2 
 Inherits MyFormInheritance.Form1 
Ngoài những gì kế thừa của VB.NET, chúng ta cũng có thể tạo ra những lớp của riêng 
mình. Lớp này cũng có thuộc tính, phương thức giống như của VB.NET. Để tạo chúng ta 
chọn Project | Add Class rồi định nghĩa lớp trong cửa sổ Code Editor. 
Bài tập MyPersonClass sau đây sẽ hướng dẫn chúng ta cách tạo ra lớp cơ sở Person yêu 
cầu người dùng nhập vào tên nhân viên, ngày sinh. Thông tin này lưu trong lớp đối tượng. 
Ta cũng tạo một phương thức cho phép tính tuổi nhân viên. 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 5 - Add: cnt-44-dh, VIMARU 
2.1. Xây dựng lớp Person 
 Bạn đóng dự án hiện hành lại. Tạo mới một solution và add vào một dự án cùng tên 
là MyPersonClass. 
 Thiết kế form như hình: 
Form gồm một nhãn Label1, một nút nhấn Button1 (Hiển thị), hai textBox như hình. 
 Tạo lớp Person bằng cách chọn Project | Add Class (có thể R-Click vào dự án và 
chọn Add Class trong dach sách). Thay tên lớp là Person.vb. 
Bây giờ chúng ta sẽ tạo lớp bằng cách viết mã cho lớp. Có ba bước chung để tạo lớp đó là 
khai báo biến của lớp, tạo các thuộc tính, tạo các phương thức. Chúng ta sẽ lần lượt tìm 
hiểu. 
Khai báo biến lớp: 
Chúng ta khai báo hai biến chứa First Name và Last Name ngay sau khai báo Public Class 
Person như sau: 
 Private FName, LName As String 
Từ khóa Private cho biết biến này chỉ dùng để truy xuất trong phạm vi khai báo nó. Ở đây 
là truy xuất trong lớp Person. 
Tạo thuộc tính: 
Ta tạo thuộc tính FirstName cho lớp để trả về First Name của nhân viên. Bạn gõ vào dòng 
phát biểu sau: 
 Public Property FirstName() As String 
Ấn Enter, VS.NET sẽ tự tạo ra cấu trúc đầy đủ của thuộc tính như thế này: 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 6 - Add: cnt-44-dh, VIMARU 
 Public Property FirstName() As String 
 Get 
 End Get 
 Set(ByVal value As String) 
 End Set 
 End Property 
Các từ khóa Get sẽ trả về giá trị cho thuộc tính khi người dùng muốn đọc nó và Set sẽ đặt 
giá trị cho thuộc tính khi gán giá trị cho nó. 
Thêm vào mã cài đặt đầy đủ cho thuộc tính như sau: 
 Public Property FirstName() As String 
 Get 
 Return FName 
 End Get 
 Set(ByVal value As String) 
 FName = value 
 End Set 
 End Property 
Khi người cùng đọc thông tin từ thuộc tính của đối tượng thì thuộc tính trả về giá trị biến 
Fname, còn khi gán giá trị thì nó sẽ gán giá trị của biến Lname bằng Value trong phần Set. 
Trong các thuộc tính phức tạp thì bạn có thể cài thêm các câu lệnh xử lý trong khối lệnh 
GetEnd Get, SetEnd Set. Nhưng việc trả về giá trị và gán giá trị là bắt buộc phải có. 
Tương tự ta xây dựng thuộc tính LastName() như sau: 
 Public Property LastName() As String 
 Get 
 Return LName 
 End Get 
 Set(ByVal value As String) 
 LName = value 
 End Set 
 End Property 
Tạo phương thức cho đối tượng: 
Bây giờ chúng ta tạo phương thức Tinhtuoi để tính số tuổi của nhân viên dựa trên ngày 
sinh của họ. 
Bên dưới khai báo thuộc tính LasName bạn khai báo một hàm (hàm Function vì nó trả lại 
cho nơi gọi số tuổi của nhân viên) như sau: 
 Public Function Tinhtuoi(ByVal NS As Date) As Integer 
 Return Int(Now.Subtract(NS).Days / 365.25) 
 End Function 
Từ khóa Public cho phép phương thức có thể truy cập bởi người dùng khi sử dụng lớp 
Person. Hàm trên sử dụng hàm Subtract trừ ngày hiện hành cho ngày sinh của nhân viên và 
chia cho 365.25 để tính ra số tuổi. 
Vậy là lớp Person đã định nghĩa xong. Chúng ta sẽ sử dụng lớp này trong form1. 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 7 - Add: cnt-44-dh, VIMARU 
2.2. Tạo đối tượng dựa trên lớp định nghĩa 
Trở lại cửa sổ thiết kế của form1.vb. Tạo thủ tục Button1_Click bằng cách nhấp đôi vào 
nút nhấn “hiển thị” và nhập vào đoạn mã sau: 
 Dim nhanvien As New Person 
 Dim NgaySinh As Date 
 nhanvien.FirstName = TextBox1.Text 
 nhanvien.LastName = TextBox2.Text 
 NgaySinh = DateTimePicker1.Value.Date 
 MsgBox("Nhân viên " & nhanvien.FirstName & " " & _ 
 nhanvien.LastName _ 
 & " đã " & nhanvien.Tinhtuoi(NgaySinh) & " tuổi") 
Trong đoạn mã trên, trước hết ta khai báo biến đối tượng nhanvien có kiểu Person. Từ 
khóa New dùng để tạo vùng nhớ và cấp phát một đối tượng Person thật sự cho nhanvien. 
Ta khai báo biến NgaySinh để chứa ngày tháng nhập vào. Dữ liệu trong hai TextBox được 
gán cho thuộc tính FirstName và LastName. 
Chạy chương trình: 
Bạn nhấn F5 để chạy chương trình. Nhập vào tên đầy đủ ở cả hai ô textbox và chọn một 
ngày sinh phù hợp rồi ấn nút hiển thị. Kết quả: 
3. Kế thừa lớp tự tạo 
Ta cũng có thể kế thừa lớp tương tự như kế thừa form. Để kế thừa ta chọn Project | Add 
Class và cùng với từ khóa Inherits để tạo lớp kế thừa. Ta có thể thêm vào những phương 
thức cũng như thuộc tính mới đồng thời giữ lại những ưu điểm của lớp cha. 
Bài tập sau sẽ minh họa việc tạo thêm lớp kế thừa của lớp Person ta vừa tạo. Chúng ta sẽ 
tạo thêm lớp mới có tên kisu. 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 8 - Add: cnt-44-dh, VIMARU 
Lớp này kế thừa lớp Person, nó có hai thuộc tính là Firstname và LastName cùng phương 
thức Tinhtuoi() nhưng cũng có thêm phương thức BacTho lưu lại cấp bậc tay nghề của kỹ 
sư đó. 
Bạn add thêm một class tên là KiSu và đặt dưới câu khai báo lớp đó từ khóa Inherits như 
sau: 
Public Class KiSu 
 Inherits Person 
Như vậy là lớp KiSu đã kế thừa lớp Person. Bạn bổ sung thêm mã cho lớp này như sau: 
Public Class KiSu 
 Inherits Person 
 Private CapBac As Short 
 Public Property BacTho() As Short 
 Get 
 Return CapBac 
 End Get 
 Set(ByVal value As Short) 
 CapBac = value 
 End Set 
 End Property 
End Class 
Bây giờ chúng ta sẽ sử dụng lớp này. Bạn trở lại cửa sổ Code Editor của form1 và mở thủ 
tục Button1_Click rồi sửa như sau: 
 Dim nhanvien As New KiSu 
 Dim NgaySinh As Date 
 nhanvien.FirstName = TextBox1.Text 
 nhanvien.LastName = TextBox2.Text 
 NgaySinh = DateTimePicker1.Value.Date 
 nhanvien.BacTho = InputBox("Bậc thợ của nhân viên:") 
 MsgBox("Nhân viên " & nhanvien.FirstName & " " & _ 
 nhanvien.LastName _ 
 & " đã " & nhanvien.Tinhtuoi(NgaySinh) & " tuổi." & _ 
 vbCrLf & "Bậc thợ: " & nhanvien.BacTho) 
Trong đoạn mã này chúng ta cho biến nhanvien có kiểu KiSu để có thêm những thuộc tính 
và phương thức mới bên cạnh những thuộc tính có sẵn của lớp Person. 
Chạy chương trình: 
Nhấn F5 để chạy chương trình. Bạn nhập vào tên đầy đủ, số tuổi và nhập vào cấp bậc thợ 
của nhân viên để hiển thị như sau: 
Hướng dẫn lập trình VB.NET Chương 17: Kế thừa form và tạo các lớp cơ sở 
Biên soạn: Phạm Đức Lập - 9 - Add: cnt-44-dh, VIMARU 
4. Tổng kết 
Bạn làm bảng tổng kết những gì đã biết trong chương này. Bạn có thể tìm hiểu thêm về kế 
thừa trong các ngôn ngữ khác như C, C++, C#... 

File đính kèm:

  • pdfbai_giang_huong_dan_lap_trinh_vb_net_chuong_17_ke_thua_form.pdf