Giáo trình hướng dẫn truy cập phương thức gán đối tượng cho một giao diện đối lập trừu tượng p6
Số trang: 5
Loại file: pdf
Dung lượng: 865.92 KB
Lượt xem: 8
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:
Thật vậy, một phương thức được khai báo tường minh thì sẽ không được khai báo với các từ khóa bổ sung truy cập: abstract, virtual, override, và new. Một địều quan trọng khác là chúng ta không thể truy cập phương thức thực thi tường minh thông qua chính đối tượng. Khi chúng ta viết:
Nội dung trích xuất từ tài liệu:
Giáo trình hướng dẫn truy cập phương thức gán đối tượng cho một giao diện đối lập trừu tượng p6 Ngôn Ngữ Lập Trình C#Thật vậy, một phương thức được khai báo tường minh thì sẽ không được khai báo với các từkhóa bổ sung truy cập: abstract, virtual, override, và new.Một địều quan trọng khác là chúng ta không thể truy cập phương thức thực thi tường minhthông qua chính đối tượng. Khi chúng ta viết: theDoc.Read();Trình biên dịch chỉ hiểu rằng chúng ta thực thi phương thức giao diện ngầm định choIStorable. Chỉ một cách duy nhất truy cập các phương thức thực thi tường minh là thông quaviệc gán cho giao diện để thực thi: ITalk itDoc = theDoc as ITalk; if ( itDoc != null ) { itDoc.Read(); }Sử dụng thực thi tường minh được áp dụng trong ví dụ 8.5 Ví dụ 8.5: Thực thi tường minh.-----------------------------------------------------------------------------using System;interface IStorable{ void Read(); void Write();}interface ITalk{ void Talk(); void Read();}// lớp Document thực thi hai giao diệnpublic class Document : IStorable, ITalk{ // bộ khởi dựng public Document( string s) { Console.WriteLine(“Creating document with: {0}”,s); } // tạo phương thức ảo public virtual void Read() { 198 Thực Thi Giao Diện Ngôn Ngữ Lập Trình C# Console.WriteLine(“Implementing IStorable.Read”); } // thực thi bình thường public void Write() { Console.WriteLine(“Implementing IStorable.Write”); } // thực thi tường minh void ITalk.Read() { Console.WriteLine(“Implementing ITalk.Read”); } public void Talk() { Console.WriteLine(“Implementing ITalk.Talk”); }}public class Tester{ static void Main() { // tạo đối tượng Document Document theDoc = new Document(“Test Document”); IStorable isDoc = theDoc as IStorable; if ( isDoc != null ) { isDoc.Read(); } ITalk itDoc = theDoc as ITalk; if ( itDoc != null ) { itDoc.Read(); } theDoc.Read(); theDoc.Talk(); }}----------------------------------------------------------------------------- 199 Thực Thi Giao Diện Ngôn Ngữ Lập Trình C# Kết quả:Creating document with: Test DocumentImplementing IStorable.ReadImplementing ITalk.ReadImplementing IStorable.ReadImplementing ITalk.Talk-----------------------------------------------------------------------------Lựa chọn việc thể hiện phương thức giao diệnNhững người thiết kế lớp có thể thu được lợi khi một giao diện được thực thi thông qua thựcthi tường minh và không cho phép các thành phần client của lớp truy cập trừ phi sử dụngthông qua việc gán cho giao diện. Giả sử nghĩa của đối tượng Document chỉ ra rằng nó thực thi giao diện IStorable,nhưng không muốn phương thức Read() và Write() là phần giao diện public của lớpDocument. Chúng ta có thể sử dụng thực thi tường minh để chắc chắn chỉ có thể truy cậpthông qua việc gán cho giao diện. Điều này cho phép chúng ta lưu trữ ngữ nghĩa của lớpDocument trong khi vẫn có thể thực thi được giao diện IStorable. Nếu thành phần clientmuốn đối tượng thực thi giao diện IStorable, nó có thể thực hiện gán tường minh cho giaodiện để gọi các phương thức thực thi giao diện. Nhưng khi sử dụng đối tượng Document thìnghĩa là không có phương thức Read() và Write(). Thật vậy, chúng ta có thể lựa chọn thể hiện những phương thức thông qua thực thitường minh, do đó chúng ta có thể trưng bày một vài phương thức thực thi như là một phầncủa lớp Document và một số phương thức khác thì không. Trong ví dụ 8.5, đối tượngDocument trưng bày phương thức Talk() như là phương thức của lớp Document, nhưngphương thức Talk.Read() chỉ được thể hiện thông qua gán cho giao diện. Thậm chí nếuIStorable không có phương thức Read(), chúng ta cũng có thể chọn thực thi tường minhphương thức Read() để phương thức không được thể hiện ra bên ngoài như các phương thứccủa Document. Chúng ta lưu ý rằng vì thực thi giao diện tường minh ngăn ngừa việc sử dụng từ khóavirtual, một lớp dẫn xuất có thể được hỗ trợ để thực thi lại phương thức. Do đó, nếu Notedẫn xuất từ Document, nó có thể được thực thi lại phương thức Talk.Read() bởi vì lớpDocument thực thi phương thức Talk.Read() không phải ảo.Ẩ n thành viênNgôn ngữ C# ch ...
Nội dung trích xuất từ tài liệu:
Giáo trình hướng dẫn truy cập phương thức gán đối tượng cho một giao diện đối lập trừu tượng p6 Ngôn Ngữ Lập Trình C#Thật vậy, một phương thức được khai báo tường minh thì sẽ không được khai báo với các từkhóa bổ sung truy cập: abstract, virtual, override, và new.Một địều quan trọng khác là chúng ta không thể truy cập phương thức thực thi tường minhthông qua chính đối tượng. Khi chúng ta viết: theDoc.Read();Trình biên dịch chỉ hiểu rằng chúng ta thực thi phương thức giao diện ngầm định choIStorable. Chỉ một cách duy nhất truy cập các phương thức thực thi tường minh là thông quaviệc gán cho giao diện để thực thi: ITalk itDoc = theDoc as ITalk; if ( itDoc != null ) { itDoc.Read(); }Sử dụng thực thi tường minh được áp dụng trong ví dụ 8.5 Ví dụ 8.5: Thực thi tường minh.-----------------------------------------------------------------------------using System;interface IStorable{ void Read(); void Write();}interface ITalk{ void Talk(); void Read();}// lớp Document thực thi hai giao diệnpublic class Document : IStorable, ITalk{ // bộ khởi dựng public Document( string s) { Console.WriteLine(“Creating document with: {0}”,s); } // tạo phương thức ảo public virtual void Read() { 198 Thực Thi Giao Diện Ngôn Ngữ Lập Trình C# Console.WriteLine(“Implementing IStorable.Read”); } // thực thi bình thường public void Write() { Console.WriteLine(“Implementing IStorable.Write”); } // thực thi tường minh void ITalk.Read() { Console.WriteLine(“Implementing ITalk.Read”); } public void Talk() { Console.WriteLine(“Implementing ITalk.Talk”); }}public class Tester{ static void Main() { // tạo đối tượng Document Document theDoc = new Document(“Test Document”); IStorable isDoc = theDoc as IStorable; if ( isDoc != null ) { isDoc.Read(); } ITalk itDoc = theDoc as ITalk; if ( itDoc != null ) { itDoc.Read(); } theDoc.Read(); theDoc.Talk(); }}----------------------------------------------------------------------------- 199 Thực Thi Giao Diện Ngôn Ngữ Lập Trình C# Kết quả:Creating document with: Test DocumentImplementing IStorable.ReadImplementing ITalk.ReadImplementing IStorable.ReadImplementing ITalk.Talk-----------------------------------------------------------------------------Lựa chọn việc thể hiện phương thức giao diệnNhững người thiết kế lớp có thể thu được lợi khi một giao diện được thực thi thông qua thựcthi tường minh và không cho phép các thành phần client của lớp truy cập trừ phi sử dụngthông qua việc gán cho giao diện. Giả sử nghĩa của đối tượng Document chỉ ra rằng nó thực thi giao diện IStorable,nhưng không muốn phương thức Read() và Write() là phần giao diện public của lớpDocument. Chúng ta có thể sử dụng thực thi tường minh để chắc chắn chỉ có thể truy cậpthông qua việc gán cho giao diện. Điều này cho phép chúng ta lưu trữ ngữ nghĩa của lớpDocument trong khi vẫn có thể thực thi được giao diện IStorable. Nếu thành phần clientmuốn đối tượng thực thi giao diện IStorable, nó có thể thực hiện gán tường minh cho giaodiện để gọi các phương thức thực thi giao diện. Nhưng khi sử dụng đối tượng Document thìnghĩa là không có phương thức Read() và Write(). Thật vậy, chúng ta có thể lựa chọn thể hiện những phương thức thông qua thực thitường minh, do đó chúng ta có thể trưng bày một vài phương thức thực thi như là một phầncủa lớp Document và một số phương thức khác thì không. Trong ví dụ 8.5, đối tượngDocument trưng bày phương thức Talk() như là phương thức của lớp Document, nhưngphương thức Talk.Read() chỉ được thể hiện thông qua gán cho giao diện. Thậm chí nếuIStorable không có phương thức Read(), chúng ta cũng có thể chọn thực thi tường minhphương thức Read() để phương thức không được thể hiện ra bên ngoài như các phương thứccủa Document. Chúng ta lưu ý rằng vì thực thi giao diện tường minh ngăn ngừa việc sử dụng từ khóavirtual, một lớp dẫn xuất có thể được hỗ trợ để thực thi lại phương thức. Do đó, nếu Notedẫn xuất từ Document, nó có thể được thực thi lại phương thức Talk.Read() bởi vì lớpDocument thực thi phương thức Talk.Read() không phải ảo.Ẩ n thành viênNgôn ngữ C# ch ...
Tìm kiếm theo từ khóa liên quan:
giáo trình đại học tài liệu mạng giáo trình cơ điện giáo trình thiết kế tài liệu kế toánTài liệu liên quan:
-
Giáo trình phân tích một số loại nghiệp vụ mới trong kinh doanh ngân hàng quản lý ngân quỹ p5
7 trang 474 0 0 -
MARKETING VÀ QUÁ TRÌNH KIỂM TRA THỰC HIỆN MARKETING
6 trang 302 0 0 -
122 trang 217 0 0
-
QUY CHẾ THU THẬP, CẬP NHẬT SỬ DỤNG CƠ SỞ DỮ LIỆU DANH MỤC HÀNG HÓA BIỂU THUẾ
15 trang 212 1 0 -
BÀI GIẢNG KINH TẾ CHÍNH TRỊ MÁC - LÊNIN - TS. NGUYỄN VĂN LỊCH - 5
23 trang 210 0 0 -
Giáo trình hướng dẫn phân tích các thao tác cơ bản trong computer management p6
5 trang 201 0 0 -
Giáo trình chứng khoán cổ phiếu và thị trường (Hà Hưng Quốc Ph. D.) - 4
41 trang 200 0 0 -
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - NGÂN HÀNG ĐỀ THI HẾT HỌC PHẦN HỌC PHẦN: TOÁN KINH TẾ
9 trang 177 0 0 -
BÀI GIẢNG LÝ THUYẾT MẠCH THS. NGUYỄN QUỐC DINH - 1
30 trang 176 0 0 -
Giáo trình phân tích giai đoạn tăng lãi suất và giá trị của tiền tệ theo thời gian tích lũy p10
5 trang 170 0 0