Bài giảng Lập trình hướng đối tượng - Chương 4: Interface & Class trong C# - Đại học Bách khoa TP.HCM
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 4: Interface & Class trong C# - Đại học Bách khoa TP.HCM", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_lap_trinh_huong_doi_tuong_chuong_4_interface_class.pdf
Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 4: Interface & Class trong C# - Đại học Bách khoa TP.HCM
- Chương 4 Interface & Class trong C# 4.0 Dẫnnhập 4.1 Tổng quát về phát biểuclass củaC# 4.2 Định nghĩathuộctínhvậtlý 4.3 Định nghĩatácvụ chứcnăng 4.4 Định nghĩa toán tử chứcnăng 4.5 Định nghĩathuộctínhgiaotiếp(luậnlý) 4.6 Định nghĩa ₫ốitượng ₫ạidiện hàm (delegate) 4.7 Định nghĩasự kiện (Event) 4.8 Định nghĩaphầntử quản lý danh sách (indexer) 4.9 Thành phần static và thành phần không static 4.10 Lệnh ₫ịnh nghĩa 1 class C# ₫iểnhình 4.11 Kếtchương Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 1 4.0 Dẫnnhập Chương này giớithiệu cú pháp của phát biểu class C# ₫ượcdùng ₫ể ₫ặctả chi tiếthiệnthực1 loại ₫ốitượng ₫ược dùng trong chương trình. Chương này cũng giớithiệucúphápcácphátbiểu ₫ể ₫ịnh nghĩa các thành phầncấu thành ₫ốitượng như thuộctínhvật lý, thuộc tính giao tiếp, tác vụ chứcnăng, toán tử, delegate, event, indexer. Chương này cũng phân biệt2 loại thành phần ₫ược ₫ặctả trong 1 class : thành phần dùng chung (static) và thành phần nhân bản theo từng ₫ốitượng. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 2
- 4.1 Tổng quát về phát biểu class củaC# Ngôn ngữ C# (hay bấtkỳ ngôn ngữ lập trình nào khác) cung cấpcho ngườilập trình nhiều phát biểu (statement) khác nhau, trong ₫óphát biểu class ₫ể ₫ặctả chi tiếthiệnthựctừng loại ₫ốitượng cấu thành phầnmềmlàphátbiểu quan trọng nhất. Sau ₫ây là 1 template của1 class C# : class MyClass : BaseClass, I1, I2, I3 { //₫ịnh nghĩacácthuộctínhvậtlýcủa ₫ốitượng //₫ịnh nghĩacáctácvụ chứcnăng, các toán tử //₫ịnh nghĩacácthuộctínhgiaotiếp(luậnlý) //₫ịnh nghĩacác₫ạidiện hàm chứcnăng (delegate) //₫ịnh nghĩacácsự kiện (event) //₫ịnh nghĩa indexer củaclass //₫ịnh nghĩacáctácvụ quảnlý₫ờisống ₫ốitượng } Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 3 4.1 Tổng quát về phát biểu class củaC# Khi ₫ịnh nghĩa 1 class mới, ta có thể thừakế tối ₫a 1 class ₫ãcó (₫ơnthừakế), tên class này nếu có, phảinằm ở vị trí ₫ầutiên ngay sau dấungăn":". Khi ₫ịnh nghĩa 1 class, ta có thể hiệnthực nhiều interface khác nhau (₫ahiệnthực), danh sách này nếu có, phảinằmsautên class cha. Trong trường hợp nhiều interface có cùng 1 tác vụ (phân biệtbằng chữ ký) và nếu class muốnhiệnthực chúng khác nhau thì ta dùng tên dạng phân cấp: class MyClass : BaseClass, I1, I2, I3 { //hiệnthựccáctácvụ cùng chữ ký trong các interface khác nhau void I1.func1() {} void I2.func1() {} void I3.func1() {} }Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 4
- 4.2 Định nghĩathuộctínhvậtlý Mỗithuộctínhvậtlýcủa ₫ốitượng là 1 biếndữ liệucụ thể. Phát biểu ₫ịnh nghĩa 1 thuộc tính vậtlýsẽ₫ặctả cácthôngtin sauvề thuộctínhtương ứng : Tên nhậndạng. Kiểudữ liệu. Giá trị ban ₫ầu. Tầmvựctruyxuất Tinh chat va hanh vi Cú pháp ₫ơngiản ₫ể ₫ịnh nghĩa 1 thuộctínhvậtlýnhư sau : [scope|attribute]* type name [= value]; Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 5 4.2 Định nghĩathuộctínhvậtlý thành phần scope miêu tả tầmvựctruyxuấtcủathuộc tính, có thể chọn 1 trong 5 khả năng sau : public : thuộctínhcóthể ₫ượctruyxuấtbấtkỳ₫âu. internal : thuộc tính có thể ₫ượctruyxuấtbấtkỳ₫âu trong cùng assembly chứa class. protected : thuộctínhcóthể ₫ượctruyxuấtbởi class hiện hành và các class con, cháu. protected internal : thuộc tính có thể ₫ượctruyxuấtbấtkỳ₫âu trong cùng assembly chứa class hay các class con, cháu. private : thuộc tính chỉ có thể ₫ượctruyxuấtnộibộ trong class hiện hành. nếuthànhphần scope không ₫ượcmiêutả tường minh, thuộc tính sẽ có tầmvực private. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 6
- 4.2 Định nghĩathuộctínhvậtlý Hệ thống các ₫ốitượng trên máy tính Assembly class public i1; internal i2; C1 protected i3; protected internal i4; private i5; C2 A1 C3 C4 A2 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 7 4.2 Định nghĩathuộctínhvậtlý thành phần type thường là tên kiểudữ liệucủathuộc tính tương ứng, nó có thể là tên kiểugiátrị hay tên kiểu tham khảo. thành phần name là tên nhậndạng thuộctính. thành phần [= value] miêu tả biểuthứcxác₫ịnh trị ban ₫ầucủa thuộc tính. thành phần nào nằm trong [] là nhiệm ý (optional), có thể có hoặc không. Các thành phần khác bắtbuộcphảicó. Thí dụ : private int dorong = 10; private int docao = 10; Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 8
- 4.3 Định nghĩatácvụ chứcnăng Mỗitácvụ (operation) thựchiện1 chứcnăng xác ₫ịnh, rõ ràng nào ₫ó mà bên ngoài ₫ốitượng (client) cần dùng. Định nghĩatác vụ gồm2 phần: ₫ịnh nghĩa interface sử dụng và ₫ịnh nghĩathuật giải chi tiếtmàtácvụ thựchiện (method). Lệnh ₫ịnh nghĩa 1 tác vụ thường gồm5 phầnsau: [scope | attribute]* return_type name (arg_list) body scope miêu tả tầmvựctruyxuấtcủatácvụ : public, protected, internal, protected internal, private. attribute miêu tả tính chấthoạt ₫ộng củatácvụ : static, virtual, sealed, override, abstract, extern. return_type là tên kiểucủagiátrị mà tác vụ sẽ trả về. name là tên tác vụ, arg_list là danh sách từ 0 tới n tham số hình thức cách nhau bởidấu ',', ₫ịnh nghĩamỗi tham số hình thứcgầngiống như₫ịnh nghĩathuộc tính vậtlý. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 9 4.4 Định nghĩatoántử chứcnăng Mỗi toán tử (operator) thựchiện 1 phép toán xác ₫ịnh. Toán tử là trường hợp ₫ặcbiệtcủatácvụ. Định nghĩa toán tử gồm2 phần: ₫ịnh nghĩa interface sử dụng và ₫ịnh nghĩathuậtgiải chi tiếtmà toán tử thựchiện (method). Lệnh ₫ịnh nghĩa 1 toán tử thường gồm6 phầnsau: [scope | attribute]* return_type operator name (arg_list) body scope miêu tả tầmvựctruyxuấtcủa toán tử : public, static, extern. return_type là tên kiểucủagiátrị mà toán tử sẽ trả về. name là tên toán tử : +,-,*,/, arg_list là danh sách từ 1tới 3 tham số hình thức cách nhau bởidấu ',', ₫ịnh nghĩamỗi tham số hình thứcgầngiống như ₫ịnh nghĩathuộctínhvậtlý. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 10
- 4.5 Định nghĩathuộc tính giao tiếp(luậnlý) Mỗithuộctínhgiaotiếp(luận lý) chẳng qua là 1 hay 2 tác vụ get/set (tham khảo/thiếtlập) nội dung thuộc tính tương ứng. Định nghĩathuộctínhgiaotiếplà₫ịnh nghĩa 1 hay 2 tác vụ get/set. Lệnh ₫ịnh nghĩa 1 thuộctínhthường có dạng sau : [scope | attribute]* type name {[getdef] [setdef]}; scope, attirbute, type, name có ý nghĩagiống như lệnh ₫ịnh nghĩatácvụ. getdef và setdef là lệnh ₫ịnh nghĩatácvụ get và set thuộctính tương ứng. class Rectangle { private int m_cao; //thuộctínhvậtlý public int Cao { //thuộctínhluậnlý get { return m_cao; } set { if (value>0 && value <1024) m_cao = value; } } Khoa} Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 11 4.6 Định nghĩa ₫ốitượng ₫ạidiện hàm (delegate) Nhiều khi chúng ta cầnviếtlệnh gọi hàm mà chưabiếttêncụ thể, tên củahàmchỉ có thể xác ₫ịnh tạithời ₫iểm run-time. Delegate của C# cho phép ta giải quyết ₫ượcyêucầu này. Delegate là 1 class ₫ốitượng ₫ặcbiệt, ₫ốitượng delegate chỉ chứa 1 field thông tin, field này là ₫ịachỉ của 1 hàm chứcnăng nào ₫ó. Delegate ₫ặcbiệthữudụng khi kếthợpvớisự kiện (Event) mà ta sẽ trình bày sau. Lệnh ₫ịnh nghĩa delegate thường có dạng : [scope | attribute]* delegate return_type name (arg_list); scope, return_type, name, arg_list có ý nghĩagiống như lệnh ₫ịnh nghĩatácvụ. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 12
- 4.7 Định nghĩasự kiện (Event) Tác vụ chỉ có thể₫ược(gọi) kích hoạtbởingườilập trình, trong khi nhiềulúctamuốnngườidùngcóthể kích hoạttrựctiếpchức năng nào ₫ócủa ₫ốitượng (thí dụ₫ốitượng giao diện). Event là phương tiệngiải quyếtyêucầu này. Event là 1 ₫ốitượng thuộc class delegate, sau khi ₫ượckhởi ₫ộng, nó có thể miêu tả từ 1 tới n tác vụ chứcnăng mà sẽ ₫ượctự kích hoạtmỗi khi event xảyra. Lệnh ₫ịnh nghĩa Event giống như lệnh ₫ịnh nghĩathuộctínhdữ liệu: [scope | attribute]* event delegate_type name; scope, name có ý nghĩagiống như lệnh ₫ịnh nghĩathuộc tính. delegate_type là tên của 1 delegate ₫ã ₫ịnh nghĩatrước. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 13 4.8 Định nghĩaphầntử quản lý danh sách (indexer) Để truy xuất1 ₫ốitượng thuộc 1 class, ta dùng biến ₫ốitượng. Thông qua biến ₫ốitượng (tham khảo), ta truy xuấttừng thành phần ₫ược phép (thuộc tính, tác vụ, toán tử, ) thông qua cú pháp gởi thông ₫iệp: objVar.tên thành phần. Ngoài khả năng thông thường trên, C# còn cho phép kếthợpvới ₫ốitượng 1 danh sách các phầntử dữ liệuthuộc1 kiểu nào ₫ó. Indexer chính là khả năng này. Nếuthuộctínhgiaotiếpchophéptamiêutả 1 giá trị luận lý duy nhất thì Indexer cho phép ta miêu tả 1 danh sách nhiềugiátrị luận lý. Lệnh ₫ịnh nghĩa Indexer giống như lệnh ₫ịnh nghĩathuộc tính luậnlý: [scope | attribute] type this [int i] {[getdef] [setdef]}; Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 14
- 4.8 Định nghĩaphầntử quản lý danh sách (indexer) scope, attirbute, type có ý nghĩagiống như lệnh ₫ịnh nghĩa thuộc tính. getdef và setdef là lệnh ₫ịnh nghĩatácvụ get và set phầntử thứ i trong danh sách. class Rectangle { private int[] arr = new int[100]; public int this[int index] { //₫ịnh nghĩa Indexer get { if (index = 100) { return 0; } else { return arr[index]; } } set { if (!(index = 100)) { arr[index] = value; } } } } Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 15 4.8 Định nghĩaphầntử quản lý danh sách (indexer) Để truy xuấtphầntử thứ i trong danh sách, ta dùng cú pháp giống như truy xuấtbiến array. Rectangle objRec = new Rectangle(); objRec.component ; objRec[0] = 0; int ret = objRec[10]; Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 16
- 4.9 Thành phần static và thành phần không static Phát biểu class ₫ược dùng ₫ể ₫ặctả các ₫ốitượng cùng loạimà phầnmềm dùng. Về nguyên tắc, khi ₫ốitượng ₫ượctạora(bằng lệnh new), nó sẽ chứatấtcả các thành phần ₫ược ₫ặctả trong class tương ứng. Tuy nhiên, nếu xét chi li thì VC# cho phép ₫ặc tả 2 loại thành phần trong 1 class như sau : 1. Thành phần static : là thành phầncótừ khóa static trong lệnh ₫ịnh nghĩa nó. Đây là thành phầnkếthợpvới class, nó không ₫ượcnhânbảnchotừng ₫ốitượng và như thế₫ốitượng không thể truy xuất nó. Cách duy nhất ₫ể truy xuất thành phần static là thông qua tên class. //Console là tên class chứacáchàmtruyxuất //các thiếtbị nhập/xuấtchuẩn Console.Writeln("Nội dung cầnhiểnthị"); Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 17 4.9 Thành phần static và thành phần không static 2. Thành phầnkhôngstatic: là thành phần không dùng từ khóa static trong lệnh ₫ịnh nghĩa nó. Đây là thành phầnkếthợpvới từng ₫ốitượng, nó sẽ ₫ược nhân bảnchotừng ₫ốitượng. Ta truy xuất thành phần không static thông qua tham khảo ₫ối tượng. class Rectangle { private int m_cao; //thuộc tính vậtlý public int Cao { //thuộc tính luậnlý get { return m_cao; } set { if (value>0 && value <1024) m_cao = value; } } } Rectangle r = new Rectangle(); r.Cao = 10; Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 18
- 4.9 Các thuộctínhmiêutả hành vi Từ khóa virtual trong lệnh ₫ịnh nghĩatácvụ miêu tả tác vụ này sẽ ₫ượcxử lý theo cơ chế liên kết ₫ộng và sẽ₫ảmbảo ₫ược tính ₫a xạ, tức ₫ảmbảotính₫úng ₫ắn trong lờigởi thông ₫iệp. Biết ₫ược ₫iều này, từ₫ây về sau, mỗilần ₫ịnh nghĩa1 tácvụ hay 1 toán tử, ta hãy luôn dùng từ khóa virtual kếthợpvới nó. Từ khóa sealed trong lệnh ₫ịnh nghĩatácvụ miêu tả tác vụ này sẽ ₫ược khóa lại, class con cháu không còn cơ may override ₫ược. Từ khóa abstract trong lệnh ₫ịnh nghĩatácvụ miêu tả tác vụ này chỉ có interface sử dụng, class con cháu sẽ phải override ₫ể hiện thực theo yêu cầu riêng. Từ khóa override trong lệnh ₫ịnh nghĩatácvụ miêu tả tác vụ này ₫ã có trong class cha, class hiện hành chỉ muốn override nó chứ không phải ₫ịnh nghĩamới. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 19 4.9 Các thuộctínhmiêutả hành vi class A { public void func1() { } public virtual void func2() { } } class B : A { public override void func1() { } public sealed void func2() { } } class C : B { public override void func1() { } public override void func2() { } } Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 20
- 4.9 Các thuộctínhmiêutả hành vi abstract class A { abstract public virtual void func1(); abstract public virtual void func2(); } == interface A { void func1(); void func2(); } Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 21 4.9 Các thuộctínhmiêutả hành vi Từ khóa extern trong lệnh ₫ịnh nghĩatácvụ miêu tả tác vụ này ₫ã ₫ượchiệnthực ở bên ngoài class hiệnhành(thường là trong thư viện DLL). Đây là phương pháp chuyển 1 hàm chứcnăng trong thư viện DLL truyềnthống thành 1 tác vụ của class C# ₫ể ứng dung C# có thể gọi ₫ược(mặc ₫ịnh thì không gọi ₫ược). Class MyClass { //chuyển hàm API Windows thành tác vụ C#. [DllImport("Kernel32.dll", CharSet = CharSet.Auto)] public static extern IntPtr FindFirstFile(String fileName, [In, Out] FindData findFileData); [DllImport("Kernel32.dll", CharSet = CharSet.Auto)] public static extern Boolean FindNextFile(IntPtr handle, [In, Out] FindData findFileData); } MyClass.FindFirstFile( ); Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 22
- 4.9 Các thuộctínhmiêutả hành vi Từ khóa extern trong lệnh ₫ịnh nghĩatácvụ miêu tả tác vụ này ₫ã ₫ượchiệnthực ở bên ngoài class hiệnhành(thường là trong thư viện DLL). Đây là phương pháp chuyển 1 hàm chứcnăng trong thư viện DLL truyềnthống thành 1 tác vụ của class C# ₫ể ứng dung C# có thể gọi ₫ược(mặc ₫ịnh thì không gọi ₫ược). //chuyển hàm API Windows thành tác vụ C#. [DllImport("Kernel32.dll", CharSet = CharSet.Auto)] public static extern IntPtr FindFirstFile(String fileName, [In, Out] FindData findFileData); [DllImport("Kernel32.dll", CharSet = CharSet.Auto)] public static extern Boolean FindNextFile(IntPtr handle, [In, Out] FindData findFileData); Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 23 4.10 Lệnh ₫ịnh nghĩa 1 class C# ₫iểnhình class MyClass { //1. ₫ịnh nghĩacácthuộctínhvậtlý private int m_x; private int[] arr = new int[100]; //2. ₫ịnh nghĩacáctácvụ & toán tử chứcnăng public void button1_Click(object sender, System.EventArgs e) {} //3. ₫ịnh nghĩa ₫ốitượng ₫ạidiện hàm chứcnăng public delegate void EventHandler (Object sender, EventArgs e); //4. ₫ịnh nghĩasự kiện Click ₫ượcxử lý bởi delegate EventHandler. public event EventHandler Click; Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 24
- 4.10 Lệnh ₫ịnh nghĩa 1 class C# ₫iểnhình //5. ₫ịnh nghĩathuộctínhluậnlýx public int x { get { return m_x; } set { m_x = value; } } //6. ₫ịnh nghĩacáctácvụ quảnlý₫ốitượng public MyClass() { this.Click += new EventHandler(button1_Click); } ~MyClass() { } //hàm destructor //còn tiếp ở slide kế sau Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 25 4.10 Lệnh ₫ịnh nghĩa 1 class C# ₫iểnhình //7. ₫ịnh nghĩa indexer public int this[int index] { get { //kiểmtragiớihạn ₫ể quyết ₫ịnh if (index = 100) { return 0; } else { return arr[index]; } } set { if (!(index = 100)) { arr[index] = value; } } } }; Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 26
- Lệnh ₫ịnh nghĩa 1 inreface C# ₫iểnhình interface IMyInterface { //2. ₫ịnh nghĩacáctácvụ & toán tử chứcnăng void button1_Click(object sender, System.EventArgs e); //4. ₫ịnh nghĩasự kiện Click ₫ượcxử lý bởi delegate EventHandler. event EventHandler Click; //5. ₫ịnh nghĩathuộctínhluậnlýx int x {get; set;} //7. ₫ịnh nghĩa indexer int this[int index] {get; set;} } Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 27 4.11 Kếtchương Chương này ₫ãgiớithiệucúphápcủaphátbiểu class C# ₫ược dùng ₫ể ₫ặctả chi tiếthiệnthực1 loại ₫ốitượng ₫ược dùng trong chương trình. Chương này cũng ₫ãgiớithiệu cú pháp các phát biểu ₫ể ₫ịnh nghĩa các thành phầncấu thành ₫ốitượng như thuộctínhvậtlý, thuộctínhgiaotiếp, tác vụ chứcnăng, toán tử, delegate, event, indexer. Chương này cũng ₫ã phân biệt2 loại thành phần ₫ược ₫ặctả trong 1 class : thành phần dùng chung (static) và thành phần nhân bản theo từng ₫ốitượng. Khoa Khoa học& Kỹ thuật Máy tính Môn : Lậptrìnhhướng ₫ốitượng Trường ĐH Bách Khoa Tp.HCM Chương 4 : Interface & Class trong C# © 2010 Slide 28