intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng ngôn ngữ C#: Bài 7 - Chử Đức Hoàng

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:28

33
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

"Bài giảng ngôn ngữ C# - Bài 7: Ủy nhiệm, sự kiện và xử lý ngoại lệ trong C#" trnag bị cho người học kiến thức về khái niệm, cách thức sử dụng ủy nhiệm trong C#; khái niệm sự kiện, và thực hiện chương trình qua các sự kiện trong C#; khái niệm về ngoại lệ, và bắt lỗi, xử lý lỗi trong C#; xây dựng chương trình sử dụng ủy nhiệm, sự kiện và bắt lỗi.

Chủ đề:
Lưu

Nội dung Text: Bài giảng ngôn ngữ C#: Bài 7 - Chử Đức Hoàng

  1. BÀI 7 ỦY NHIỆM, SỰ KIỆN VÀ XỬ LÝ NGOẠI LỆ TRONG C# GV. Chử Đức Hoàng 1 v1.0011106203
  2. TÌNH HUỐNG DẪN NHẬP Chương trình được xây dựng một nhiệm vụ lớn như chương trình quản lý học viên của trường đại học Quốc Gia thì cần đến rất nhiều các kỹ thuật tinh vi của ngôn ngữ lập trình. Các ký thuật này không những giúp cho người viết phần mềm dễ dàng thực hiện các công việc mà còn tổ chức và xử lý các lỗi cho chương trình để chương trình chạy ổn định. Ngôn ngữ lập trình C# thực hiện việc uỷ nhiệm, xử lý sự kiện và xử lý  các ngoại lệ như thế nào? 2 v1.0011106203
  3. MỤC TIÊU Trình bày khái niệm, cách thức sử dụng ủy nhiệm trong C#. Trình bày khái niệm sự kiện, và thực hiện chương trình qua các sự kiện trong C#. Trình bày khái niệm về ngoại lệ, và bắt lỗi, xử lý lỗi trong C#. Xây dựng chương trình sử dụng ủy nhiệm, sự kiện và bắt lỗi. 3 v1.0011106203
  4. NỘI DUNG 1 1.1. Uỷ nhiệm 2 1.2. Các phương thức dấu tên 3 1.3. Sự kiện 4 1.4. Xử lý ngoại lệ 4 v1.0011106203
  5. 1.1. ỦY NHIỆM - DELEGATE Khai báo • Uỷ nhiệm(delegate): là kiểu dữ liệu tham chiếu được dùng để đóng gói một phương thức với tham số và kiểu trả về xác định. • Trong delegate thì không cần quan tâm đến những lớp đối tượng mà nó tham chiếu tới mà chỉ cần quan tâm đến các tham số của phương thức và kiểu trả về phải phù hợp với đối tượng ủy quyền khai báo. • Khai báo: delegate ; 5 v1.0011106203
  6. 1.1.1. ĐẶC ĐIỂM CỦA DELEGATE • Lớp đóng gói các phương thức (method signature) • Dùng trong xử lý sự kiện của C# • Đặc tính  An toàn kiểu (typesafe).  Bảo mật.  Hướng đối tượng. • Tất cả các phương thức đóng gói có cùng kiểu trả về và dạng tham số thì có thể được truyền vào thể hiện của delegate. 6 v1.0011106203
  7. 1.1.1. ĐẶC ĐIỂM CỦA DELEGATE (tiếp theo) • Sử dụng: new ; • Ủy quyền được dùng để:  Xác định những loại phương thức có thể được dùng để xử lý các sự kiện  Thực hiện callback trong chương trình ứng dụng.  Xác định các phương thức tĩnh và các instance của phương thức không biết trước cho đến khi chương trình thực hiện. • Các phương thức được gọi lại thông qua Delegate có thể là:  Một instance method.  Một class method. 7 v1.0011106203
  8. 1.1.1. ĐẶC ĐIỂM CỦA DELEGATE (tiếp theo) Ví dụ: • public delegate void MyDelegate1(int x, int y) • public delegate string MyDelegate2(float f) • public void Method1(int x, int y) • { • … • } • … • MyDelegate1 del1 = new MyDelegate1(Method1); • public string Method2(float f) • { • … • } 8 v1.0011106203 • …
  9. 1.1.1. ĐẶC ĐIỂM CỦA DELEGATE (tiếp theo) • Gọi delegate Gọi del1 int x = 5, y = 10; int y = 2; del1(x, y); del1(10, 20); del1(100, y); Gọi del2 float f =0.5f; string s; string s = del2(100f); s = del2(f); 9 v1.0011106203
  10. 1.2. MULTICAST DELEGATE • Khi một delegate gói nhiều hơn một phương thức thì nó được gọi là multicast delegate. • Một multicast delegate được gọi thì nó sẽ gọi liên tiếp các phương thức theo thứ tự. • Một delegate có kiểu trả về là void thì trình biên dịch sẽ coi như đây là một multicast delegate. • Một multiccast delegate cho phép nhận toán tử “+”, “-”, “+= “, “-=“. • Một muticast delegate là một lớp được dẫn xuất từ lớp System.MulticastDelegate. Ví dụ multicast delegate 15. void Print(int x,int y) { 16. } 17. Console.WriteLine(“x = {0}, y = {1}”, x, y); 18. void Sum(int x, int y) { 19. Console.WriteLine(“Tong = {0}”, x+y); 20. } 21. MyDelegate1 mulDel = new MyDelegate1(Print); 22. mulDel += new MyDelegate1(Sum); 23. mulDel(5, 10); 24. mulDel -= new MyDelegate1(Print); 25. mulDel(5,10); 10 v1.0011106203
  11. 1.3. SỰ KIỆN - EVENT • Sự kiện là một hành động nào đó sảy ra và không thể tiên đoán trước trình tự mà sự kiện phát sinh • Khi một sự kiện sảy ra thì lớp phát sinh sự kiện (publish) sẽ phát ra thông điệp sự kiện cho lớp khác biết. Các lớp khác sẽ bắt thông điệp sự kiện và xử lý sự kiện. • Lớp phát sinh sự kiện không quan tâm đến việc xử lý sự kiện như thế nào. • Sự kiện thể hiện sự truyền thông qua lại giữa các lớp phát sinh sự kiện và xử lý sự kiện. 11 v1.0011106203
  12. 1.3. SỰ KIỆN – EVENT (tiếp theo) Cơ chế publishing và subscribing Sự kiện được thực hiện nhờ delegate, trong đó: • Lớp Publish định nghĩa uỷ thác • Lớp Subscrib phải thực thi. • Khi có sự kiện sảy ra thì các phương thức lớp subcribing được gọi thông qua uỷ thác. event Thôn g báo subscribe publish B A Đăng ký C 12 v1.0011106203
  13. 1.3. SỰ KIỆN – EVENT (tiếp theo) Trình xử lý sự kiện • Phương thức để xử lý sự kiện gọi là trình xử lý sự kiện (event handler). Hay event handler. • Trình xử lý sự kiện trong .NET Framework được thực hiện theo mẫu sau:  Trả về giá trị void  Tham số 1: nguồn phát sinh sự kiện, đây chính là đối tượng publisher  Tham số 2: là đối tượng thuộc lớp dẫn xuất từ EventArgs 13 v1.0011106203
  14. 1.3. SỰ KIỆN – EVENT (tiếp theo) Khai báo • Khai báo delegate xử lý sự kiện: public delegate void HandlerName(object obj, EventArgs arg); • Khai báo event: public event HandlerName OnEventName; • Các lớp muốn xử lý khi sự kiện OnEventName phát sinh thì phải thực thi event handler • Từ khóa event điều khiển cách mà thuộc tính sự kiện được truy cập bởi các lớp subscriber. Từ khóa event được thiết kế để duy trì cho cách thể hiện publish/subscribe. 14 v1.0011106203
  15. 1.3. SỰ KIỆN – EVENT (tiếp theo) • Lớp EventArgs • EventArgs là lớp cơ sở cho tất cả các dữ liệu về sự kiện. • Lớp EventArgs thừa kế tất cả các phương thức từ lớp Object và thêm vào một trường public static empty thể hiện một sự kiện không có trạng thái (sử dụng cho những sự kiện không trạng thái). • Lớp dẫn xuất từ EventArgs chứa những thông tin về sự kiện. • Sự kiện là thuộc tính của lớp phát ra sự kiện. • Ví dụ: • Xây dựng một lớp thực hiện yêu cầu: “cứ mỗi giây sẽ phát sinh một sự kiện”. • Cho phép lớp đồng hồ số hiển thị thời gian đăng ký xử lý sự kiện trên. • Giải quyết:  Tạo một lớp Clock:  Khai báo một event: OnSecondChange.  Một phương thức Run: cứ 1s thì phát sinh sự kiện OnSecondChange.  Tạo lớp: DigitalClock nhận xử lý sự kiện OnSecondChange của lớp Clock. 15 v1.0011106203
  16. 1.3. SỰ KIỆN – EVENT (tiếp theo) Lớp DigitalClock • Định nghĩa trình xử lý sự kiện của Clock  Đúng mô tả delegate hàm xử lý của lớp Clock.  Thực hiện một số thao tác riêng của DigitalClock. • Đăng ký xử lý với trình xử lý sự kiện trên khi có sự kiện OnSecondChange của Clock  Chức năng đăng ký với lớp Clock là có xử lý khi sự kiện OnSencondChange của Clock phát sinh.  Ủy thác cho lớp Clock sẽ gọi trình xử lý định nghĩa bên trên của DigitalClock. 16 v1.0011106203
  17. 1.3. SỰ KIỆN – EVENT (tiếp theo) Trình xử lý của DigitalClock Tên của trình xử lý Đối tượng phát sinh sự kiện public void Show(object obj, EventArgs args) { DateTime date = DateTime.Now; Console.WriteLine("Digital Clock: {0}:{1}:{2}", date.Hour, date.Minute, date.Second); } 17 v1.0011106203
  18. 1.3. SỰ KIỆN – EVENT (tiếp theo) Đăng ký xử lý sự kiện Đối tượng này sẽ phát sinh sự kiện public void Subscribe(Clock theClock) { theClock.OnSecondChange += new Clock.SecondChangeHandler(Show); } Ủy thác phương thức Show cho OnSecondChange 18 v1.0011106203
  19. 1.3. SỰ KIỆN – EVENT (tiếp theo) Tạo lớp DigitalClock 40. public class DigitalClock 41. { 42. public void Subscribe(Clock theClock) 43. { 44. theClock.OnSecondChange += new Clock.SecondChangeHandler(Show); 45. } 46. public void Show(object obj, EventArgs args) 47. { 48. DateTime date = DateTime.Now; 49. Console.WriteLine("Digital Clock: {0}:{1}:{2}", date.Hour, date.Minute, date.Second); 50. } 51. } 19 v1.0011106203
  20. 1.4. XỬ LÝ NGOẠI LỆ • Một ngoại lệ (exception) là một đối tượng đóng gói những thông tin về sự cố bất thường của một chương trình. • Ngoại lệ xảy ra do:  Các lỗi về lập trình do lập trình viên không kiểm soát tốt mã nguồn (gọi là bug) và phát sinh ra ngoại lệ. Ngoại lệ không thể sửa các bug mà nên viết lại mã nguồn.  Lỗi gây ra bởi người dùng (error) phát sinh ngoại lệ, phải bắt ngoại lệ này và yêu cầu người dùng thực hiện đúng.  Tài nguyên không đủ, truy cập tập tin không tồn tại,… và phát sinh ngoại lệ. Có thể không xử lý được nhưng phải bắt được những ngoại lệ này và quản lý chúng để chúng không làm hỏng hoặc treo ứng dụng. 20 v1.0011106203
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2