Tìm hiểu C# và ứng dụng của C# p 10
Số trang: 8
Loại file: pdf
Dung lượng: 301.10 KB
Lượt xem: 19
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:
Chương 8 Giao diệnGiao diện định nghĩa các hợp đồng (constract). Các lớp hay cấu trúc cài đặt giao diện này phải tôn trọng hợp đồng này. Điều này có nghĩa là khẳng định với client (người dùng lớp hay cấu trúc) rằng “Tôi bảo đảm rằng tôi sẽ hỗ trợ đầy đầy đủ các phương thức, property, event, delegate, indexer đã được ghi trong giao diện” Một giao diện có thể thừa kế một hay nhiều giao diện khác, và một lớp hay cấu trúc có thể cài đặt một hay nhiều giao diện. Quan sát về phía lập...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 10Giao diện Gvhd: Nguyễn Tấn Trần Minh KhangChương 8 Giao diệnGiao diện định nghĩa các hợp đồng (constract). Các lớp hay cấu trúc cài đặt giaodiện này phải tôn trọng hợp đồng này. Điều này có nghĩa là khẳng định với client(người dùng lớp hay cấu trúc) rằng “Tôi bảo đảm rằng tôi sẽ hỗ trợ đầy đầy đủ cácphương thức, property, event, delegate, indexer đã được ghi trong giao diện”Một giao diện có thể thừa kế một hay nhiều giao diện khác, và một lớp hay cấu trúccó thể cài đặt một hay nhiều giao diện.Quan sát về phía lập trình thì giao diện là tập các hàm được khai báo sẵn mà khôngcài đặt. Các lớp hay cấu trúc cài đặt có nhiệm vụ phải cài tất cả các hàm này.8.1 Cài đặt một giao diệnCú pháp của việc định nghĩa một giao diện: [attributes] [access-modifier] interface interface-name [:base-list] { interface-body }Ý nghĩa của từng thành phần như sau attributes: sẽ đề cập ở phần sau. modifiers: bổ từ phạm vi truy xuất của giao diện identifier: tên giao diện muốn tạo base-list: danh sách các giao diện mà giao diện này thừa kế, (nói rõ trong phần thừa kế) interface-body: thân giao diện luôn nằm giữa cặp dấu {}Trong thư viện .NET Framework các giao diện thường bắt đầu bởi chữ I (i hoa),điều này không bắt buộc. Giả sử rằng chúng ta tạo một giao diện cho các lớp muốnlưu trữ xuống/đọc ra từ cơ sở dữ liệu hay các hệ lưu trữ khác. Đặt tên giao diện nàylà IStorable, chứa hai phương thức Read( ) và Write( ). interface IStorable { void Read( ); void Write(object); }Giao diện như đúng tên của nó: không dữ liệu, không cài đặt. Một giao diện chỉtrưng ra các khả năng, và khải năng này sẽ được hiện thực hoá trong các lớp cài đặtnó. Ví dụ như ta tạo lớp Document, do muốn các đối tượng Document sẽ được lưutrữ vào cơ sở dữ liệu, nên ta cho Document kế thừa (cài đặt) giao diện IStorable. // lớp Document thừa kế IStorable, // phải cài đặt tất cả các phương thức của IStorable public class Document : IStorable 50Giao diện Gvhd: Nguyễn Tấn Trần Minh Khang { public void Read( ) { // phải cài đặt...} public void Write(object obj) { // phải cài đặt...} // ... }8.1.1 Cài đặt nhiều giao diệnLớp có thể cài đặt một hoặc nhiều giao diện. Chẳng hạn như ở lớp Document ngoàilưu trữ ra nó còn có thể được nén lại. Ta cho lớp Document cài đặt thêm một giaodiện thứ hai là ICompressible public class Document : IStorable, ICompressibleTương tự, Document phải cài đặt tất cả phương thức của ICompressible: public void Compress( ) { Console.WriteLine(Implementing the Compress Method); } public void Decompress( ) { Console.WriteLine(Implementing the Decompress Method); }8.1.2 Mở rộng giao diệnChúng ta có thể mở rộng (thừa kế) một giao diện đã tồn tại bằng cách thêm vào đónhững phương thức hoặc thành viên mới. Chẳng hạn như ta có thể mở rộngICompressable thành ILoggedCompressable với phương thức theo dõi những byteđã được lưu: interface ILoggedCompressible : ICompressible { void LogSavedBytes( ); }Lớp cài đặt phải cân nhắc chọn lựa giữa 2 lớp ICompressable hayILoggedCompressable, điều này phụ thuộc vào nhu cầu của lớp đó. Nếu một lớp cósử dụng giao diện ILoggedCompressable thì nó phải thực hiện toàn bộ các phươngthức của ILoggedCompressable (bao gồm ICompressable và phương thức mở rộng).8.1.3 Kết hợp các giao diện khác nhauTương tự, chúng ta có thể tạo một giao diện mới bằng việc kết hợp nhiều giao diệnvà ta có thể tùy chọn việc có thêm những phương thức hoặc những thuộc tính mới.Ví dụ như ta tạo ra giao diện IStorableCompressable từ giao diện IStorable vàILoggedCompressable và thêm vào một phương thức mới dùng để lưu trữ kíchthước tập tin trước khi nén. interface IStorableCompressible: IStoreable,ILoggedCompressible { void LogOriginalSize( ); } 51Giao diện Gvhd: Nguyễn Tấn Trần Minh Khang8.2 Truy xuất phương thức của giao diệnChúng ta có thể truy xuất thành viên của giao diện IStorable như chúng là thànhviên của lớp Document: Document doc = new Document(Test Document); doc.status = -1; doc.Read( );hoặc ta có thể tạo một thể diện của giao diện bằng việc phân phối tài liệu về kiểucủa giao diện và sau đó sử dụng giao diện để truy cập những phương thức: IStorable isDoc = (IStorable) doc; isDoc.status = 0; isDoc.Read( );In this case, in Main( ) you know that Document is in fact an IStorable, so you can takeadvantage of that knowledge. As stated earlier, you cannot instantiate an interfacedirectly. That is, you cannot say: IStorable isDoc = new IStorable( );Mặc dù vậy, chúng ta có thể tạo một thể hiện của lớp thi công như sau: Document doc = new Document(Test Document);Sau đấy ta có thể tạo một ...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 10Giao diện Gvhd: Nguyễn Tấn Trần Minh KhangChương 8 Giao diệnGiao diện định nghĩa các hợp đồng (constract). Các lớp hay cấu trúc cài đặt giaodiện này phải tôn trọng hợp đồng này. Điều này có nghĩa là khẳng định với client(người dùng lớp hay cấu trúc) rằng “Tôi bảo đảm rằng tôi sẽ hỗ trợ đầy đầy đủ cácphương thức, property, event, delegate, indexer đã được ghi trong giao diện”Một giao diện có thể thừa kế một hay nhiều giao diện khác, và một lớp hay cấu trúccó thể cài đặt một hay nhiều giao diện.Quan sát về phía lập trình thì giao diện là tập các hàm được khai báo sẵn mà khôngcài đặt. Các lớp hay cấu trúc cài đặt có nhiệm vụ phải cài tất cả các hàm này.8.1 Cài đặt một giao diệnCú pháp của việc định nghĩa một giao diện: [attributes] [access-modifier] interface interface-name [:base-list] { interface-body }Ý nghĩa của từng thành phần như sau attributes: sẽ đề cập ở phần sau. modifiers: bổ từ phạm vi truy xuất của giao diện identifier: tên giao diện muốn tạo base-list: danh sách các giao diện mà giao diện này thừa kế, (nói rõ trong phần thừa kế) interface-body: thân giao diện luôn nằm giữa cặp dấu {}Trong thư viện .NET Framework các giao diện thường bắt đầu bởi chữ I (i hoa),điều này không bắt buộc. Giả sử rằng chúng ta tạo một giao diện cho các lớp muốnlưu trữ xuống/đọc ra từ cơ sở dữ liệu hay các hệ lưu trữ khác. Đặt tên giao diện nàylà IStorable, chứa hai phương thức Read( ) và Write( ). interface IStorable { void Read( ); void Write(object); }Giao diện như đúng tên của nó: không dữ liệu, không cài đặt. Một giao diện chỉtrưng ra các khả năng, và khải năng này sẽ được hiện thực hoá trong các lớp cài đặtnó. Ví dụ như ta tạo lớp Document, do muốn các đối tượng Document sẽ được lưutrữ vào cơ sở dữ liệu, nên ta cho Document kế thừa (cài đặt) giao diện IStorable. // lớp Document thừa kế IStorable, // phải cài đặt tất cả các phương thức của IStorable public class Document : IStorable 50Giao diện Gvhd: Nguyễn Tấn Trần Minh Khang { public void Read( ) { // phải cài đặt...} public void Write(object obj) { // phải cài đặt...} // ... }8.1.1 Cài đặt nhiều giao diệnLớp có thể cài đặt một hoặc nhiều giao diện. Chẳng hạn như ở lớp Document ngoàilưu trữ ra nó còn có thể được nén lại. Ta cho lớp Document cài đặt thêm một giaodiện thứ hai là ICompressible public class Document : IStorable, ICompressibleTương tự, Document phải cài đặt tất cả phương thức của ICompressible: public void Compress( ) { Console.WriteLine(Implementing the Compress Method); } public void Decompress( ) { Console.WriteLine(Implementing the Decompress Method); }8.1.2 Mở rộng giao diệnChúng ta có thể mở rộng (thừa kế) một giao diện đã tồn tại bằng cách thêm vào đónhững phương thức hoặc thành viên mới. Chẳng hạn như ta có thể mở rộngICompressable thành ILoggedCompressable với phương thức theo dõi những byteđã được lưu: interface ILoggedCompressible : ICompressible { void LogSavedBytes( ); }Lớp cài đặt phải cân nhắc chọn lựa giữa 2 lớp ICompressable hayILoggedCompressable, điều này phụ thuộc vào nhu cầu của lớp đó. Nếu một lớp cósử dụng giao diện ILoggedCompressable thì nó phải thực hiện toàn bộ các phươngthức của ILoggedCompressable (bao gồm ICompressable và phương thức mở rộng).8.1.3 Kết hợp các giao diện khác nhauTương tự, chúng ta có thể tạo một giao diện mới bằng việc kết hợp nhiều giao diệnvà ta có thể tùy chọn việc có thêm những phương thức hoặc những thuộc tính mới.Ví dụ như ta tạo ra giao diện IStorableCompressable từ giao diện IStorable vàILoggedCompressable và thêm vào một phương thức mới dùng để lưu trữ kíchthước tập tin trước khi nén. interface IStorableCompressible: IStoreable,ILoggedCompressible { void LogOriginalSize( ); } 51Giao diện Gvhd: Nguyễn Tấn Trần Minh Khang8.2 Truy xuất phương thức của giao diệnChúng ta có thể truy xuất thành viên của giao diện IStorable như chúng là thànhviên của lớp Document: Document doc = new Document(Test Document); doc.status = -1; doc.Read( );hoặc ta có thể tạo một thể diện của giao diện bằng việc phân phối tài liệu về kiểucủa giao diện và sau đó sử dụng giao diện để truy cập những phương thức: IStorable isDoc = (IStorable) doc; isDoc.status = 0; isDoc.Read( );In this case, in Main( ) you know that Document is in fact an IStorable, so you can takeadvantage of that knowledge. As stated earlier, you cannot instantiate an interfacedirectly. That is, you cannot say: IStorable isDoc = new IStorable( );Mặc dù vậy, chúng ta có thể tạo một thể hiện của lớp thi công như sau: Document doc = new Document(Test Document);Sau đấy ta có thể tạo một ...
Tìm kiếm theo từ khóa liên quan:
Tìm hiểu ngôn ngữ C# C# và .Net Framework lập trình c# ngôn ngữ C# tài liệu c#Tài liệu liên quan:
-
161 trang 130 1 0
-
33 trang 70 0 0
-
Giáo trình Kỹ thuật lập trình nâng cao (Ngành: Tin học ứng dụng) - CĐ Kinh tế Kỹ thuật TP.HCM
119 trang 66 0 0 -
1 trang 44 0 0
-
thủ thuật windows XP hay nhất phần 2
14 trang 43 0 0 -
Các Chủ Đề Tiến Bộ Trong C# part
8 trang 40 0 0 -
Bài giảng Lập trình Windows Form với C#: Chương 1 - Lê Thị Ngọc Hạnh
56 trang 35 0 0 -
Tự học C# bằng hình ảnh cho người mới bắt đầu: Phần 1
88 trang 32 0 0 -
accounting reference desktop 2002 phần 6
64 trang 29 0 0 -
Các Chủ Đề Tiến Bộ Trong C# part 1
19 trang 29 0 0