Lý thuyết ngôn ngữ lập trình - Chương 4: Interface & Class trong C#

pdf 14 trang vanle 3100
Bạn đang xem tài liệu "Lý thuyết ngôn ngữ lập trình - Chương 4: Interface & Class trong C#", để 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:

  • pdfly_thuyet_ngon_ngu_lap_trinh_chuong_4_interface_class_trong.pdf

Nội dung text: Lý thuyết ngôn ngữ lập trình - Chương 4: Interface & Class trong C#

  1. 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
  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
  3. 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. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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