Lập trình hướng đối tượng - Phần 3

nguyenac

Administrator
Staff member
18/11/08
22.554
1
38
Sau khi khai báo lớp, bạn có thể định nghĩa lại các toán tử trên các đối tượng của lớp. Thực chất Operator Overloading là những phương thức được khai báo với từ khóa Operator và tiếp theo là các toán tử thông dụng được liệt kê sau đây.

Định nghĩa toán tử (Operator Overloading)
Các toán tử thường được định nghĩa lại

Các toán tử nàyphải tuân theo một số yêu cầu sau :
- Phải được khai báo với từ khóa Shared.
- Trong toán tử một toán hạng, tóan hạng phải có kiểu của lớp toán tử định nghĩa lại.
- Với toán tử hai toán hạng, phải có ít nhất một toán hạng có kiểu của lớp, mang ý nghĩa so sánh một đối tượng thuộc lớp với một đối tượng thuộc lớp khác.
- Đối với một số toán tử định nghĩa lại, VB.NET đòi hỏi phải định nghĩa luôn toán tử ngược lại (như toán tử > phải có toán tử <).
- Phải có từ khóa Return trong khối lệnh để trả về giá trị.
- Giá trị trả về không nhất thiết phải cùng kiểu với các toán hạng.

Cú pháp khai báo :

Sau đây là ví dụ minh họa định nghĩa toán tử > và < trên lớp NHAN_VIEN mang ý nghĩa thâm niên công tác hơn hay kém.

Các toán tử > và < trả về giá trị Boolean cho biết mức thâm niên của hai toán hạng có phù hợp với toán tử định nghĩa lại hay không. Nếu muốn trả về nhân viên có mức thâm niên lớn hơn, bạn có thể định nghĩa hai toán tử trên như sau :

Tạo một sự kiện (Event)
Sự kiện là thông điệp do một đối tượng phát sinh cho biết một hành động đang xảy ra. Hành động có thể do sự tương tác của người dùng, do chương trình khác kích hoạt … Đối tượng kích hoạt biến cố được gọi là đối tượng gởi biến cố. Đối tượng bắt sự kiện và đáp lại gọi là đối tượng nhận sự kiện. Đối tượng gởi không biết đối tượng nhận sự kiện do nó kích hoạt nhưng giữa đối tượng gởi và đối tượng nhận có một đối tượng trung gian. Trong .NET Framework có một kiểu đặc biệt thích hợp cho vai trò trung gian này là Delegate (ủy quyền).

Chức năng của sự kiện được xác định từ ba yếu tố liên quan : một đối tượng cung cấp dữ liệu sự kiện (event data), một event delegate và một đối tượng kích hoạt sự kiện (sender). .NET Framework có một quy ước về việc đặt tên các lớp và các phương thức liên quan đến sự kiện như sau :
• Phát sinh sự kiện

Để một Class phát sinh sự kiện Tensukien cần có các yếu tố sau :
- Một tham số sự kiện chứa các dữ liệu có tên TensukienEventArgs phát sinh từ lớp System.EventArgs.
- Một thành phần xử lý sự kiện có tên TensukienEventHandler. Đây là một thủ tục sẽ được gọi khi sự kiện xảy ra. Bạn có thể sử dụng bất kỳ thủ tục hợp lệ nào làm thành phần xử lý sự kiện nhưng không được là một hàm.
- Một đối tượng phát sinh sự kiện. Đối tượng này phải cung cấp :
º Một khai báo sự kiện

Hoặc

º Một phương thức tên OnEventName phát sinh sự kiện
Các đối tượng event delegate và đối tượng dữ liệu biến cố có thể phát sinh từ những lớp tương ứng có sẵn trong .NET.

Các từ khóa khai báo sự kiện có thể là :

Các sự kiện trong VB.NET không hỗ trợ đúng nguyên tắc kế thừa. Một sự kiện khai báo trong Class nào chỉ được phép gọi phát sinh sự kiện (RaiseEvent) chỉ trong lớp đó mà thôi, không được gọi phát sinh kể cả trong các lớp kế thừa.

Cú pháp để gọi phát sinh sự kiện như sau :

Ví dụ : bạn có lớp Con_Nguoi và thuộc tính Chieu_Cao, khi chiêu cao thay đổi sẽ phát sinh sự kiện Chieu_Cao_Thay_Doi như sau :

Để sử dụng các sự kiện trên một biến, bạn sử dụng cúpháp sau khi khai báo biến :

• Kết hợp sự kiện với xử lý sự kiện
Bạn kết hợp sự kiện với thủ tục xử lý sự kiện bằng các lệnh : Handles hoặc AddHandler.

Từ khóa WithEventsHandles cung cấp cách khai báo các xử lý sự kiện. Các sự kiện do một đối tượng phát sinh với từ khóa WithEvents có thể được xử lý bằng bất kỳ thủ tục nào được chỉ ra trong mệnh đề Handles của sự kiện. Tuy mệnh đề Handles là cách thức chuẩn để kết hợp một sự kiện với một xử lý sự kiện, nhưng lại giới hạn số các biến cố kết hợp với cùng xử lý sự kiện khi biên dịch.

Các lệnh AddHandlerRemoveHandler uyển chuyển hơn trong việc kết hợp sự kiện với xử lý sự kiện. Chúng cho phép bạn linh hoạt kết hợp và ngắt rời các sự kiện với các xử lý sự kiện lúc thực thi và chúng không đòi hỏi bạn phải khai báo biến với từ khóa WithEvents.

Với các sự kiện kết hợp với các form, control, Visual Basic .NET tự động phát sinh một xử lý sự kiện rỗng và kết hợp với sự kiện.

Ví dụ : khi bạn nhấp đúp vào một nút lệnh trên màn hình ở chế độ thiết kế, Visual Basic .NET tạo một xử lý sự kiện kết hợp với sự kiện Click của nút lệnh như sau :

Hoặc bạn kết hợp các biến cố Click của các nút lệnh Button1, Button2 cho cùng một xử lý sự kiện như sau :

• Custom Events
Mặc định, khi khai báo một sự kiện, trình biên dịch sẽ dành một khoảng vùng nhớ để lưu trữ thông tin của sự kiện. Nếu lớp có nhiều sự kiện không được sử dụng, chúng cũng vẫn chiếm chỗ trên vùng nhớ.

Trong một số trường hợp, hạn chế vùng nhớ sử dụng là điều cần thiết thì Custom Events sẽ giúp bạn hạn chế sử dụng vùng nhớ bằng cách chỉ đưa lên vùng nhớ các sự kiện mà nó điều quản. Vì vậy, thay vì khai báo sự kiện theo cách thông thường, bạn nên khai báo Custom Events để tự quản lý việc sử dụng vùng nhớ.

Cách khai báo Custom Events như sau :
Nhập cú pháp khai báo

Sau đó nhấn Enter, Code Editor tự động phát sinh các phần còn lại.

Ví dụ : minh họa tối ưu vùng nhớ với Custom Event
 

Facebook Comment

Find Diễn đàn Công nghệ thông tin và truyền thông on mobile

Thành viên trực tuyến

Không có thành viên nào trực tuyến.

Thống kê diễn đàn

Chủ đề
31.050
Bài viết
33.103
Thành viên
5.957
Thành viên mới nhất
susu93439

Mobile app users
0
Latest mobile user

Tài nguyên mới