nền tảng lập trình c bài 7 interface

30 311 0
nền tảng lập trình c bài 7 interface

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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 interfaceC 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: InterfaceInterface 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: InterfaceInterface 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

Tài liệu cùng người dùng

Tài liệu liên quan