Bài giảng Nhập môn Công nghệ phần mềm - Chương 3: Hiện thực mô hình hướng đối tượng trên C#

pdf 13 trang phuongnguyen 6010
Bạn đang xem tài liệu "Bài giảng Nhập môn Công nghệ phần mềm - Chương 3: Hiện thực mô hình hướng đối tượng trên 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:

  • pdfbai_giang_nhap_mon_cong_nghe_phan_mem_chuong_3_hien_thuc_mo.pdf

Nội dung text: Bài giảng Nhập môn Công nghệ phần mềm - Chương 3: Hiện thực mô hình hướng đối tượng trên C#

  1. Chương 3 Hiệnthựcmôhìnhhướng ₫ốitượng trên C# 3.0 Dẫnnhập 3.1 Tổng quát về phát biểuclass củaC# 3.2 Định nghĩathuộctínhvậtlý 3.3 Định nghĩatácvụ chứcnăng 3.4 Định nghĩa toán tử chứcnăng 3.5 Định nghĩathuộctínhgiaotiếp(luậnlý) 3.6 Định nghĩa ₫ốitượng ₫ạidiện hàm (delegate) 3.7 Định nghĩasự kiện (Event) 3.8 Định nghĩaphầntử quản lý danh sách (indexer) 3.9 Thành phần static và thành phần không static 3.10 Lệnh ₫ịnh nghĩa 1 class C# ₫iểnhình 3.11 Kếtchương Khoa Khoa học& Kỹ thuật Máy tính Môn : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 1 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 2
  2. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 3 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 4
  3. 3.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 ‰ Cú pháp ₫ơngiản ₫ể ₫ịnh nghĩa 1 thuộctínhvậtlýnhư sau : [scope] type name [= value]; Khoa Khoa học& Kỹ thuật Máy tính Môn : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 5 3.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 internal. Khoa Khoa học& Kỹ thuật Máy tính Môn : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 6
  4. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 7 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 8
  5. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 9 3.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] 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ừ 0 tới 2 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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 10
  6. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 11 3.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] 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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 12
  7. 3.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] 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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 13 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 14
  8. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 15 3.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[0] = 0; int ret = objRec[10]; Khoa Khoa học& Kỹ thuật Máy tính Môn : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 16
  9. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 17 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 18
  10. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 19 3.9 Các thuộctínhmiêutả hành vi abstract class C1 { public void f1() {} //không cho con override public virtual void f2() {} //cho phép con override public abstract void f3(); //₫ể con override } class C2 : C1 { public void f1() {} //không ₫ược phép public sealed void f2() {} //₫ược phép override và khóa lại public override void f3() {} //phải override } class C3 : C2 { public void f1() {} //không ₫ược phép public void f2() {} //không ₫ược phép public void f3() {} //₫ược phép override } Khoa Khoa học& Kỹ thuật Máy tính Môn : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 20
  11. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 21 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 22
  12. 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 23 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 24
  13. 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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 25 3.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 : Nhập môn Công nghệ phầnmềm Trường ĐH Bách Khoa Tp.HCM Chương 3 : Hiệnthựcmôhìnhhướng ₫ốitượng trên C# © 2010 Slide 26