TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 5
Số trang: 19
Loại file: pdf
Dung lượng: 377.30 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Delegate và EventGvhd: Nguyễn Tấn Trần Minh KhangChương 12 Delegate và EventDelegate có nghĩa là ủy quyền hay ủy thác. Trong lập trình đôi lúc ta gặp tình huống phải thực thi một hành động nào đó, nhưng lại không biết sẽ gọi phương thức nào của đối tượng nào. Chằng hạn, một nút nhấn button khi được nhấn phải thông báo cho đối tượng nào đó biết, nhưng đối tượng này không thể được tiên đoán trong lúc cài đặt lớp button. Vì vậy ta sẽ kết nối lớp button với một đối tượng ủy thác và ủy thác...
Nội dung trích xuất từ tài liệu:
TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 5Delegate và Event Gvhd: Nguyễn Tấn Trần Minh KhangChương 12 Delegate và EventDelegate có nghĩa là ủy quyền hay ủy thác. Trong lập trình đôi lúc ta gặp tình huốngphải thực thi một hành động nào đó, nhưng lại không biết sẽ gọi phương thức nàocủa đối tượng nào. Chằng hạn, một nút nhấn button khi được nhấn phải thông báocho đối tượng nào đó biết, nhưng đối tượng này không thể được tiên đoán trong lúccài đặt lớp button. Vì vậy ta sẽ kết nối lớp button với một đối tượng ủy thác và ủythác (hay thông báo) cho đối tượng này trách nhiệm thực thi khi button được nhấn.Đối tượng ủy thác sẽ được gán (đăng ký ủy thác) vào thời điểm khác thích hợp.Event có nghĩa là sự kiện. Ngày nay mô hình lập trình giao diện người dùng đồ họa(Graphical User Interface - GUI) đòi hỏi cách tiếp cận theo hướng sự kiện. Một ứngdụng ngày nay hiển thị giao diện người dùng và chờ người dùng thao tác. Ứng vớimỗi thao tác như chọn một trình đơn, nhấn một nút button, nhập liệu vào ô textbox… sẽ một sự kiện sẽ phát sinh. Một sự kiện có nghĩa là có điều gì đó đã xảy ra vàchương trình phải đáp trả.Delegate và event là hai khái niệm có liên quan chặt chẽ với nhau. Bởi vì để quản lýcác sự kiện một cách mềm dẻo đòi hỏi các đáp trả phải được phân phối đến cáctrình giải quyết sự kiện. Trình giải quyết sự kiện trong C# được cài đặt bằngdelegate.Delegate còn được sử dụng như một hàm callback. Hàm callback là hàm có thểđược tự động gọi bởi hàm khác. Công dụng thứ hai này của delegate được đề cậptrong chương 19.12.1 Delegate (ủy thác, ủy quyền)Trong C#, delegate được hỗ trợ hoàn toàn bởi ngôn ngữ. Về mặt kỹ thuật,delegate thuộc kiểu tham chiếu được dùng để đóng gói phương thức đã xác địnhkiểu trả về và số lượng, kiểu tham số. Chúng ta có thể đóng gói bất kỳ phương thứcthức nào phù hợp với phương thức của delegate. (Trong C++ có kỹ thuật tươngtự là con trỏ hàm, tuy nhiên delegate có tính hướng đối tượng và an toàn về kiểu)Một delegate có thể được tạo bắng từ khóa delagate, sau đó là kiểu trả về, têndelegate và các tham số của phương thức mà delegate chấp nhận: public delegate int WhichIsFirst(object obj1, object obj2)Dòng trên khai báo một delegate tên là WhichIsFirst có thể đóng gói (nhận)bất kỳ một phương thức nào nhận vào hai tham số kiểu object và trả về kiểu int. 87Delegate và Event Gvhd: Nguyễn Tấn Trần Minh KhangKhi một delegate được định nghĩa, ta có thể đóng gói một phương thức vớidelegate đó bằng cách khởi tạo với tham số là phương thức cho delegate.12.1.1 Dùng delegate để xác định phương thức vào lúc chạyDelegate được dùng để xác định (specify) loại (hay kiểu) của các phương thức dùngđể quản lý các sự kiện; hoặc để cài đặt các hàm callback trong ứng dụng. Chúngcũng được dùng để xác định các phương thức tĩnh và không tĩnh (còn gọi là phươngthức thề hiện - instance methods: là phương chỉ gọi được thông qua một thể hiệncủa lớp) chưa biết trước vào lúc thiết kế (có nghĩa là chỉ biết vào lúc chạy).Ví dụ, giả sử chúng ta muốn tạo một lớp túi chứa đơn giản có tên là Pair (mộtcặp). Lớp này chứa 2 đối tượng được sắp xếp. Chúng ta không biết trước được đốitượng nào sẽ được truyền vào cho một thể hiện của lớp Pair, vì vậy không thể xâydựng hàm sắp xếp tốt cho tất cả các trường hợp. Tuy nhiên ta sẽ đẩy trách nhiệmnày cho đối tượng bằng cách tạo phương thức mà công việc sắp xếp có thể ủy thác.Nhờ đó ta có thể sắp thứ thự của các đối tượng chưa biết bằng cách ủy thác tráchnhiệm này chính phương thức của chúng.Ta định nghĩa một delegate có tên WhichIsFirst trong lớp Pair. Phương thứcsort sẽ nhận một tham số kiểu WhichIsFirst. Khi lớp Pair cần biết thứ tự củađối tượng bên trong, nó sẽ gọi delegate với hai đối tượng làm tham số. Trách nhiệmquyết định xem đối tượng nào trong 2 đối tượng có thứ tự trước được ủy thác chophương thức được đóng gói trong delegate.Để kiểm thử delegate, ta tạo ra hai lớp: Dog và Student. Lớp Dog và Studentkhông giống nhau ngoại trừ cả hai cùng cài đặt phương thức có thể được đóng góibới WhichIsFirst, vì vậy cả Dog lẫn Student đều thích hợp được giữ trong đốitượng Pair.Để kiểm thử chương trình chúng ta tạo ra một cặp đối tượng Student và một cặpđối tương Dog và lưu trữ chúng trong hai đối tượng Pair. Ta sẽ tạo một đối tượngdelegate để đóng gói cho từng phương thức, sau đó ta yêu cầu đối tượng Pairsắp xếp đối tượng Dog và Student. Sau đây là các bước thực hiện: public class Pair { // cặp đối tượng public Pair(object firstObject, object secondObject) { thePair[0] = firstObject; thePair[1] = secondObject; } // biến lưu giữ hai đối tượng private object[]thePair = new object[2];Kế tiếp, ta override hàm ToString() public override string ToString( ) { return thePair[0].ToString() + , + thePair[1].ToString(); ...
Nội dung trích xuất từ tài liệu:
TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 5Delegate và Event Gvhd: Nguyễn Tấn Trần Minh KhangChương 12 Delegate và EventDelegate có nghĩa là ủy quyền hay ủy thác. Trong lập trình đôi lúc ta gặp tình huốngphải thực thi một hành động nào đó, nhưng lại không biết sẽ gọi phương thức nàocủa đối tượng nào. Chằng hạn, một nút nhấn button khi được nhấn phải thông báocho đối tượng nào đó biết, nhưng đối tượng này không thể được tiên đoán trong lúccài đặt lớp button. Vì vậy ta sẽ kết nối lớp button với một đối tượng ủy thác và ủythác (hay thông báo) cho đối tượng này trách nhiệm thực thi khi button được nhấn.Đối tượng ủy thác sẽ được gán (đăng ký ủy thác) vào thời điểm khác thích hợp.Event có nghĩa là sự kiện. Ngày nay mô hình lập trình giao diện người dùng đồ họa(Graphical User Interface - GUI) đòi hỏi cách tiếp cận theo hướng sự kiện. Một ứngdụng ngày nay hiển thị giao diện người dùng và chờ người dùng thao tác. Ứng vớimỗi thao tác như chọn một trình đơn, nhấn một nút button, nhập liệu vào ô textbox… sẽ một sự kiện sẽ phát sinh. Một sự kiện có nghĩa là có điều gì đó đã xảy ra vàchương trình phải đáp trả.Delegate và event là hai khái niệm có liên quan chặt chẽ với nhau. Bởi vì để quản lýcác sự kiện một cách mềm dẻo đòi hỏi các đáp trả phải được phân phối đến cáctrình giải quyết sự kiện. Trình giải quyết sự kiện trong C# được cài đặt bằngdelegate.Delegate còn được sử dụng như một hàm callback. Hàm callback là hàm có thểđược tự động gọi bởi hàm khác. Công dụng thứ hai này của delegate được đề cậptrong chương 19.12.1 Delegate (ủy thác, ủy quyền)Trong C#, delegate được hỗ trợ hoàn toàn bởi ngôn ngữ. Về mặt kỹ thuật,delegate thuộc kiểu tham chiếu được dùng để đóng gói phương thức đã xác địnhkiểu trả về và số lượng, kiểu tham số. Chúng ta có thể đóng gói bất kỳ phương thứcthức nào phù hợp với phương thức của delegate. (Trong C++ có kỹ thuật tươngtự là con trỏ hàm, tuy nhiên delegate có tính hướng đối tượng và an toàn về kiểu)Một delegate có thể được tạo bắng từ khóa delagate, sau đó là kiểu trả về, têndelegate và các tham số của phương thức mà delegate chấp nhận: public delegate int WhichIsFirst(object obj1, object obj2)Dòng trên khai báo một delegate tên là WhichIsFirst có thể đóng gói (nhận)bất kỳ một phương thức nào nhận vào hai tham số kiểu object và trả về kiểu int. 87Delegate và Event Gvhd: Nguyễn Tấn Trần Minh KhangKhi một delegate được định nghĩa, ta có thể đóng gói một phương thức vớidelegate đó bằng cách khởi tạo với tham số là phương thức cho delegate.12.1.1 Dùng delegate để xác định phương thức vào lúc chạyDelegate được dùng để xác định (specify) loại (hay kiểu) của các phương thức dùngđể quản lý các sự kiện; hoặc để cài đặt các hàm callback trong ứng dụng. Chúngcũng được dùng để xác định các phương thức tĩnh và không tĩnh (còn gọi là phươngthức thề hiện - instance methods: là phương chỉ gọi được thông qua một thể hiệncủa lớp) chưa biết trước vào lúc thiết kế (có nghĩa là chỉ biết vào lúc chạy).Ví dụ, giả sử chúng ta muốn tạo một lớp túi chứa đơn giản có tên là Pair (mộtcặp). Lớp này chứa 2 đối tượng được sắp xếp. Chúng ta không biết trước được đốitượng nào sẽ được truyền vào cho một thể hiện của lớp Pair, vì vậy không thể xâydựng hàm sắp xếp tốt cho tất cả các trường hợp. Tuy nhiên ta sẽ đẩy trách nhiệmnày cho đối tượng bằng cách tạo phương thức mà công việc sắp xếp có thể ủy thác.Nhờ đó ta có thể sắp thứ thự của các đối tượng chưa biết bằng cách ủy thác tráchnhiệm này chính phương thức của chúng.Ta định nghĩa một delegate có tên WhichIsFirst trong lớp Pair. Phương thứcsort sẽ nhận một tham số kiểu WhichIsFirst. Khi lớp Pair cần biết thứ tự củađối tượng bên trong, nó sẽ gọi delegate với hai đối tượng làm tham số. Trách nhiệmquyết định xem đối tượng nào trong 2 đối tượng có thứ tự trước được ủy thác chophương thức được đóng gói trong delegate.Để kiểm thử delegate, ta tạo ra hai lớp: Dog và Student. Lớp Dog và Studentkhông giống nhau ngoại trừ cả hai cùng cài đặt phương thức có thể được đóng góibới WhichIsFirst, vì vậy cả Dog lẫn Student đều thích hợp được giữ trong đốitượng Pair.Để kiểm thử chương trình chúng ta tạo ra một cặp đối tượng Student và một cặpđối tương Dog và lưu trữ chúng trong hai đối tượng Pair. Ta sẽ tạo một đối tượngdelegate để đóng gói cho từng phương thức, sau đó ta yêu cầu đối tượng Pairsắp xếp đối tượng Dog và Student. Sau đây là các bước thực hiện: public class Pair { // cặp đối tượng public Pair(object firstObject, object secondObject) { thePair[0] = firstObject; thePair[1] = secondObject; } // biến lưu giữ hai đối tượng private object[]thePair = new object[2];Kế tiếp, ta override hàm ToString() public override string ToString( ) { return thePair[0].ToString() + , + thePair[1].ToString(); ...
Tìm kiếm theo từ khóa liên quan:
tin học ứng dụng lập trình C# giáo trình C# thủ thuật máy tính mẹo hay cho windowsGợi ý tài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 301 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 287 0 0 -
Tài liệu bồi dưỡng giáo viên sử dụng SGK Tin học 10 Cánh diều (Định hướng Tin học ứng dụng)
61 trang 226 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 202 0 0 -
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 201 0 0 -
101 trang 198 1 0
-
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 196 0 0 -
Hướng dẫn cách khắc phục lỗi màn hình xanh trong windows
7 trang 194 0 0 -
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 193 0 0 -
Tải video YouTube chất lượng gốc
4 trang 192 0 0