Thông tin tài liệu
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC 1 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái niệm lớp giao tiếp • Kh i bá à khởit lớ itiế • Kh a i bá o v à khởi t ạo lớ p g i ao tiế p 2 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái niệm lớp giao tiếp Khai báo 1 tập các thành phần(thuộc tính phương thức) − Khai báo 1 tập các thành phần (thuộc tính , phương thức) • chỉ khai báo, nhưng không thực thi − Các lớp thực thi interface phải cung cấp định nghĩa các ầ thành ph ầ n mà interface khai báo − Interface là một kiểu tham chiếu (reference type) 3 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái niệm lớp giao tiếp Ví dụ: Interface IComparable − Ví dụ: Interface IComparable public interface I Comparable{ Keywork Tên interface public interface I Comparable{ int CompareTo(object obj); } Sự thực thi được thay thế bằng ; 4 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái niệm lớp giao tiếp Interface ICompareable − Interface ICompareable • Không thực thi phương thức CompareTo • Cung cấp mô tả chức năng phương thức CompareTo • Khi gọi, CompareTo trả về các giá trị: –– < 0: đối tượng hiện hành < đối tượng truyền vào< 0: đối tượng hiện hành < đối tượng truyền vào –– > 0: đối tư ợ n g hi ệ n hành > đối tư ợ n g tru y ền vào> 0: đối tư ợ n g hi ệ n hành > đối tư ợ n g tru y ền vào ợ g ệ ợ gyợ g ệ ợ gy –– = 0: đối tượng hiện hành = đối tượng truyền vào= 0: đối tượng hiện hành = đối tượng truyền vào 5 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái niệm lớp giao tiếp Ví dụ sử dụng IComparable − Ví dụ sử dụng IComparable . // tạo mảng số nguyên int [] m y Int=new int []{ 20 , 4 , 16 , 9 , 2 }; Kiểu int thực thi interface [] y []{ , , , , }; // sắp xếp các phần tử Array.Sort(myInt); // in kết q uả interface IComparable // q foreach (int i in myInt) Console.Write(“{0} ”,i); 6 2 4 9 16 20 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái niệm lớp giao tiếp − Ví dụ sử dụng IComparable. // khai báo 1 lớp đơn giản class MyClass{ bli i t Th V l pu bli c i n t Th e V a l ue; } // tạo mảng có 5 phần tử với lớp vừa tạo Cl [] Cl [ ] My Cl ass [] mc=new My Cl ass [ 5 ] ; // tạo và khởi gán các phần tử … ắ ế ả ERROR M Cl khô thự 7 // s ắ p x ế p m ả ng Array.Sort(mc); ERROR : M y Cl ass khô ng thự c thi interface IComparable TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái iệ lớ iiế • Khái n iệ m lớ p g i ao t iế p − Thực thi interface IComparable • Khai báo interface khi khai báo lớp Khai báo interface khi khai báo lớp • Cung cấp thực thi tất cả các thành phần của interface trong khai báo lớp lMCl IC bl c l ass M y Cl ass : IC omparea bl e { public int TheValue; public int CompareTo(object obj) { Thực thi phương thức CompareTo public int CompareTo(object obj) { MyClass mc=(MyClass)obj; if (this.TheValue<mc.TheValue) return -1; if (this.TheValue>mc.TheValue) return 1; et n 0 8 r et ur n 0 ; } } TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khái niệm lớp giao tiếp var myInt=new []{20,4,16,9,2}; MyClass[] mc=new MyClass[5]; for (int i=0;i<5;i++){ mc[i]=new M y Class () ; y() mc[i].TheValue=myInt[i]; } PrintOut ( “Initial Order: “ , mc ); (,); Array.Sort(mc); PrintOut(“Sorted Order: “,mc); 9 Initial Order: 20 4 16 9 2 Sorted Order: 2 4 9 16 20 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 7: Interface • Khai báo và khởi tạo lớp giao tiếp Các lưu ý khi khai báo interface − Các lưu ý khi khai báo interface • Khai báo interface không chứa các thành phần dữ liệu • Khai báo interface chỉ chứa các khai báo của các non-static fti b f unc ti on mem b er. ––Phương thức (methods)Phương thức (methods) ––Thuộc tính (properties)Thuộc tính (properties) S kiệ ()S kiệ () –– S ự kiệ n ( events )S ự kiệ n ( events ) ––Chỉ mục (indexers)Chỉ mục (indexers) • Chỉ khai báo các thành phần, không khai báo code thực thi 10 • Tên interface nên bắt đầu bằng I (ví dụ IComparable) [...]... public và không đư c dùng bổ từ truy xuất 11 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Khai báo và khởi tạo lớp giao tiếp − Th c thi interface • • Chỉ c c c class/ struct c thể th c thi interface Khi th c thi interface, c c class/ struct phải – Thêm khai báo interface vào khai báo class/ struct – Th c thi tất c c c thành phần c a interface trong class/ struct 12... through IIfc1 // Call through IIfc2 26 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Kế thừa Interface − − Một interface c thể đư c kế thừa từ 1/nhiều interface Chỉ định 1 interface kế thừa từ c c interface kh c: • Thêm danh sách c c interface kế thừa vào khai báo interface • C c interface c ch nhau bởi dấu phẩy (,) interface IDataIO : IDataRetrieve, IDataStore { } 27 TRƯỜNG... interface IIfc1 • Từ tham chiếu đến interface IIfc2 25 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Tham chiếu đến nhiều interface MyClass mc = new MyClass(); IIfc1 ifc1 = (IIfc1) mc; IIfc2 ifc2 = (IIfc2) mc; mc.PrintOut("object."); ifc1.PrintOut( "interface 1."); ifc2.PrintOut( "interface 2."); // Get ref to IIfc1 // Get ref to IIfc2 // Call through class object // Call through... interface, nó phải th c thi hết tất c c c thành phần c a interface • Nếu lớp đư c dẫn xuất từ lớp c sở và c th c thi interface : tên lớp c sở phải đặt trư c c c tên interface trong khai báo lớp class Derived: MyBaseClass, IIfc1, IEnumerable, IEnumerator { … Lớp c sở Interface } 14 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Interface là một kiểu tham chiếu (reference... xuất interface tr c tiếp thông qua c c thành phần c a đối tượng thu c lớp C thể tham chiếu đến interface thông qua ép kiểu c a đối tượng thu c lớp sang kiểu interface 15 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Interface là một kiểu tham chiếu (reference type) interface IIfc1{ void PrintOut(string s); ( g ); } class MyClass: IIfc1{ public void PrintOut(string s){ Console.WriteLine(“Calling... {0}”,s); } } MyClass mc=new MyClass(); IIfc1 ifc=mc as IIfc1; if (ifc!=null) ifc.PrintOut( Interface ); PrintOut( Interface ); else Calling through: Interface Console.WriteLine(“Nothing”); 18 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Sử dụng toán tử A với interface d t á As ới i t f interface IIfc2{ void PrintOut(string s); ( g ); } class MyClass: IIfc1{ public void PrintOut(string... H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Th c thi interface với c thành phần giống nhau 1 Th c thi chung cho 2 phương th c giống nhau class MyClass: IIfc1, IIfc2{ public void PrintOut(string s){ Console.WriteLine( Calling Console WriteLine(“Calling through: {0} ,s); {0}” s); } } … MyClass mc=new MyClass(); Calling through: Object mc.PrintOut(“Object”); … 24 TRƯỜNG ĐẠI H C. .. H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Tham chiếu đến nhiều interface interface IIfc1 { interface IIfc2 { void PrintOut(string s); void PrintOut(string s); } } class MyClass : IIfc1, IIfc2 { public void PrintOut(string s) { Console.WriteLine("Calling through: {0}", s); } } Ta c thể gọi phương th c PrintOut theo 3 c ch: • Từ đối tượng thu c lớp MyClass • Từ tham chiếu đến interface. .. Một class/ struct c thể th c thi nhiều interface C c interface đư c th c thi phải đư c liệt kê trên khai báo lớp và c ch nhau bởi dấu p y ( ) p phẩy (“,”) 21 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Th c thi nhiều interface interface IDataRetrieve { int GetData() interface IDataStore { void SetData( int x ) class MyData: IDataRetrieve, IDataStore { int Mem1; public... ); } class MyClass: IIfc1{ public void PrintOut(string s){ Console.WriteLine( Calling Console WriteLine(“Calling through: {0}”,s); {0} s); } EXCEPTION } MyClass mc=new MyClass(); IIfc2 ifc=(IIfc2)mc; IIf 2 if (IIf 2) if (ifc!=null) ifc.PrintOut( Interface ); else Console.WriteLine(“Nothing”); 20 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Bài 7: Interface • Th c thi nhiều interface − . interface • Chỉ c c c class/ struct c thể th c thi interface • Khi th c thi interface, c c class/ struct phải –– Thêm khai báo interface vào khai báo class/ structThêm khai báo interface vào. báo class/ struct ––Th c thi tất c c c thành phần c a interface trong class/ Th c thi tất c c c thành phần c a interface trong class/ structstruct 12 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG. báo interface − C c lưu ý khi khai báo interface • Khai báo interface không chứa c c thành phần dữ liệu • Khai báo interface chỉ chứa c c khai báo c a c c non-static fti b f unc ti on
Ngày đăng: 23/05/2014, 15:57
Xem thêm: nền tảng lập trình c bài 7 interface, nền tảng lập trình c bài 7 interface