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 4 - Chử Đức Hoàng

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

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

Mời các bạn sinh viên cùng tham khảo "Bài giảng ngôn ngữ C# - Bài 4: Lớp trừu tượng và giao diện trong C#" để nắm chi tiết nội dung kiến thức về khái niệm lớp trừu tượng; mô tả sự khác nhau giữa lớp trừu tượng và một lớp cụ thể; khái niệm giao diện, cách xây dựng và thực thi một giao diện; kế thừa giao diện; xây dựng ví dụ minh hoạ.

Chủ đề:
Lưu

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

  1. BÀI 4 LỚP TRỪU TƯỢNG VÀ GIAO DIỆN TRONG C# GV. Chử Đức Hoàng 1 v1.0011106202
  2. TÌNH HUỐNG DẪN NHẬP • Các thành phần dữ liệu và cách thức thực hiện, thao tác trên các dữ liệu để thực hiện công việc quản lý học viên của trường đại học quốc gia cần được thực hiện theo cách nào đó để khi viết các chương trình, tổ chức các lớp, đối tượng cũng như việc dùng lại các thành phần dữ liệu và phương thức được thuận lợi. • Có những thành phần dữ liệu và phương thức chỉ thực hiện trong chương trình mà người ta không muốn lớp khác kế thừa lại. • Khi lớp muốn kế thừa một lớp do đơn vị thứ ba cung cấp thì nó tiến hành kế thừa, hơn nữa chương trình lại dùng lại các thành phầncủa một lớp do chương trình cung cấp.  Vậy những thông tin và việc tiến hành thao tác quản lý các học viên được thực hiện quản lý và cất dấu như thế nào bằng C# ? 2 v1.0011106202
  3. MỤC TIÊU Trình bày khái niệm lớp trừu tượng? Mô tả sự khác nhau giữa lớp trừu tượng và một lớp cụ thể? Trình bày khái niệm giao diện, cách xây dựng và thực thi một giao diện. Kế thừa giao diện Xây dựng ví dụ minh hoạ 3 v1.0011106202
  4. NỘI DUNG 1 Giới thiệu về lớp trừu tượng 2 Giao diện và thực thi giao diện trong C# 4 v1.0011106202
  5. 1.1. LỚP TRỪU TƯỢNG • Lớp trừu tượng là gì? • Các giới hạn của lớp trừu tượng? • Lớp sealed là gì và hoạt động của nó? 5 v1.0011106202
  6. 1.1.1. KHÁI NIỆM • Lớp trừu tượng là lớp chỉ thiết lập một cơ sở cho các lớp kế thừa mà nó không thể có bất kỳ một thể hiện nào tồn tại. • Khai báo lớp trừu tượng bằng từ khoá abstract: abstract class 6 v1.0011106202
  7. 1.1.2. CÁC GIỚI HẠN • Lớp trừu tượng không cho phép tạo thể hiện của lớp • Bất cứ lớp nào có một phương thức trừu tượng thì phải khai báo lớp là lớp trừu tượng • Override chúng trong lớp dẫn xuất • Các phương thức trừu tượng của lớp trừu tượng không được thực thi trong thân lớp mà phải được thực thi ở tất cả các lớp kế thừa từ lớp trừu tượng đó. • Phương thức trong lớp trừu tượng Abstract Method Virtual Method Từ khoá: abstract Từ khoá: virtual Chỉ có phần khai báo method và kết thúc là Có phần thực thi cho phương thức virtual ở dấu “;”, Không cần có phần thực thi cho lớp cơ sở phương thức abstract ở lớp abstract Bắt buộc lớp dẫn xuất phải override lại Không bắt buộc lớp dẫn xuất phải override Từ khoá override trước phương thức ở Từ khoá override trước phương thức ở lớp con lớp con 7 v1.0011106202
  8. 1.1.2. CÁC GIỚI HẠN (tiếp theo) Lớp trừu tượng Ví dụ • Lớp trừu tượng: AbstractClass • public abstract class AbstractClass • { Phương thức trừu tượng • public AbstractClass() • { • } • public abstract int AbstractMethod() ; • public virtual int VirtualMethod() • { • return 0; • } • } 8 v1.0011106202
  9. 1.1.2. CÁC GIỚI HẠN (tiếp theo) Lớp dẫn xuất từ lớp trừu tượng Bắt buộc phải có 13. public class DerivedClass : AbstractClass 14. { 15. public DerivedClass() 16. {} 17. public override int AbstractMethod() 18. { 19. return 0; 20. } 21. public override int VirtualMethod() 22. { 23. return base.VirtualMethod (); 24. } 25. } 9 v1.0011106202
  10. 1.1.3. LỚP SEALED • Còn gọi là lớp niêm phong, không cho phép lớp khác kế thừa nó, ngược với lớp abstract. • Sử dụng từ khoá “sealed” thay cho từ khoá “abstract” để có được lớp sealed: sealed class • Sử dụng từ khoá “sealed” trước phương thức để ngăn không cho lớp dẫn xuất override. 10 v1.0011106202
  11. 1.1.3. LỚP SEALED (tiếp theo) Ví dụ minh hoạ lớp sealed 26. using System; 27. sealed class MyClass 28. { 29. public int x; 30. public int y; 31. } 32. class MainClass { 33. public static void Main() 34. { 35. MyClass mC = new MyClass(); 36. mC.x = 110; mC.y = 150; 37. Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y); 38. } 39. } 11 v1.0011106202
  12. 1.1.3. LỚP SEALED (tiếp theo) Phương thức sealed Sử dụng sealed trước 40. using System; phương thức để ngăn ko 41. class MyClass1 { cho lớp dẫn xuất override 42. public int x; public int y; 43. public virtual void Method() { 44. Console.WriteLine("virtual method"); 45. } 46. } 47. class MyClass : MyClass1 { 48. public override sealed void Method() { 49. Console.WriteLine("sealed method"); 50. } 51. } 52. class MainClass { 53. public static void Main() { 54. MyClass1 mC = new MyClass(); 55. mC.x = 110; mC.y = 150; 56. Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y); 57. mC.Method(); 58. } 59. } 12 v1.0011106202
  13. PROPERTIES On passing, 'Finish' button: Goes to Next Slide On failing, 'Finish' button: Goes to Next Slide Allow user to leave quiz: At any time User may view slides after quiz: At any time User may attempt quiz: Unlimited times
  14. 2.2. GIAO DIỆN • 2.2.1. Định nghĩa và thực thi các giao diện; • 2.2.2. Kế thừa các giao diện. 14 v1.0011106202
  15. 2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN • Giao diện (interface) định nghĩa những khả năng muốn có trong một lớp; • Giao diện quy định các chức năng nhưng không mô tả cụ thể chúng. Định nghĩa giao diện • Cú pháp định nghĩa một giao diện: [Bổ từ truy cập] interface { //Phần thân giao diện } • Bổ từ truy cập: public, private, protected, internal, và protected internal, ý nghĩa tương tự như các bổ sung truy cập của lớp. • Sau từ khóa interface là tên của giao diện. Tên có tiền tố là “I”, ví dụ như: IFile, IComparable, IDisposable, IStorable, Icloneable,… • Phần thân của giao diện là phần khai báo cho giao diện 15 v1.0011106202
  16. 2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo) Đặc điểm của giao diện • Chỉ có thể chứa những khai báo của phương thức, thuộc tính, bộ phận lập mục lục, và sự kiện; • Không có Constructor hay các trường; • Không cho phép chứa các phương thức nạp chồng; • Không cho phép khai báo những bổ từ trên các thành phần khi định nghĩa một giao diện; • Các thành phần bên trong giao diện luôn luôn là public và không thể khai báo virtual hay static. 16 v1.0011106202
  17. 2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo) Ví dụ giao diện: Khai báo property StudentID gồm 60. public interface IStudent hàm get ,set 61. { 62. int StudentID 63. { 64. get; 65. set; Khai báo phương thức AddSubject 66. } 67. void AddSubject(string subjectName); 68. } Phải định nghĩa {get,set} của StudentID và AddSubject ở lớp thực thi interface 17 v1.0011106202
  18. 2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo) • Thực thi giao diện  Việc thực thi giao diện không sảy ra trong thân của nó mà nó chỉ thực thi trong lớp kế thừa từ nó.  Nếu không thực thi các phương thức của giao diện thì khi biên dịch sẽ bị báo lỗi. • Khai báo thực thi giao diện: class : { // Thực thi các phương thức của lớp //Thực thi các phương thức của giao diện IDSkhoakt } 18 v1.0011106202
  19. 2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo) Ví dụ: thực thi giao diện 69. public class Student : IStudent 70. { Bắt buộc lớp student phải 71. private int studentID = 0; định nghĩa property Student 72. private ArrayList subjects = null; và hàm AddSubject 73. public Student() {} 74. public int StudentID 75. { 76. get { return studentID; } 77. set { studentID = value; } 78. } 79. public void AddSubject(string subjectName) 80. { 81. subjects.Add(subjectName); 82. } 83. } 19 v1.0011106202
  20. 2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo) • Thực thi nhiều giao diện  C# cho phép một lớp thực thi nhiều hơn một giao diện. • Ví dụ: 84. public class QLSV : IDSkhoakt, IDSkhoatin 85. { 86. //Thực thi giao diện 87. } Trong lớp QLSV phải thực hiện tất cả các Giữa các giao diện được phương thức đã định nghĩa trong ngăn cách bởi dấu “,” hai giao diện cơ sở trên 20 v1.0011106202
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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