Bài giảng Lập trình hướng đối tượng C#

ppt 30 trang hapham 3510
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng 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:

  • pptbai_giang_lap_trinh_huong_doi_tuong_c.ppt

Nội dung text: Bài giảng Lập trình hướng đối tượng C#

  1. Lập trình hướng đối tượng C# Bài 3
  2. Yêu cầu Định nghĩa lớp và tạo được các thể hiện của lớp (đối tượng). Khai báo và sử dụng các phương thức trong lớp, cách nạp chồng phương thức. Truyền tham số, các từ khóa ref, out và params. Cơ chế ủy quyền và sự kiện (delegate - event).
  3. Định nghĩa lớp Để định nghĩa một kiểu dữ liệu mới hay một lớp đầu tiên phải khai báo rồi sau đó mới định nghĩa các thuộc tính và phương thức của kiểu dữ liệu đó. [bổ sung truy cập] class [:Lớp cơ sở] { }
  4. Bổ sung truy cập Bổ sung Giới hạn truy cập truy cập public Không hạn chế. private Chỉ được truy cập bởi các phương thức trong cùng một lớp. protected Truy cập bởi các phương thức trong lớp A và những lớp dẫn xuất từ A internal Truy cập bởi những phương thức của bất cứ lớp nào trong khối hợp ngữ của A protected Truy cập bởi các phương thức của lớp A, internal dẫn xuất từ A và các lớp nằm cùng trong khối hợp ngữ với A.
  5. Định danh lớp Định danh lớp là tên của lớp do người xây dựng chương trình tạo ra được viết theo đúng quy ước chuẩn. Lớp cơ sở là lớp mà đối tượng sẽ kế thừa. Tất cả các thành viên của lớp được định nghĩa trong thân của lớp, được bao bọc bởi hai dấu ({})
  6. Ví dụ minh họa Tạo một lớp thời gian, hiển thị thời gian trong ngày. using System; public class ThoiGian { private int Nam; private int Thang; private int Ngay; private int Gio; private int Phut; private int Giay;
  7. Ví dụ minh họa public void ThoiGianHienHanh() { Console.WriteLine(“Hien thi thoi gian hien hanh”); } } public class Tester { static void Main() { ThoiGian t = new ThoiGian(); t.ThoiGianHienHanh(); } }
  8. Tham số của phương thức Một phương thức có thể lấy bất kỳ số lượng tham số nào. Mỗi tham số phải khai báo kèm với kiểu dữ liệu void Method(int p1, string p2) { //thân của phương thức }
  9. Tạo đối tượng Sử dụng từ khóa new để tạo một đối tượng ThoiGian t= new ThoiGian(); Các đối tượng là kiểu dữ liệu tham chiếu và được tạo ra trên heap >< kiểu dữ liệu giá trị được tạo ra trên stack
  10. Bộ khởi dựng Một phương thức khởi dựng (constructor) sẽ được gọi thực hiện khi ta tạo một đối tượng. Chức năng của nó là tạo các đối tượng được xác định bởi một lớp và đặt trạng thái này hợp lệ. Nếu không tạo bộ khởi dựng thì CLR sẽ tự động tạo bộ khởi dựng mặc định, các thành viên được khởi tạo giá trị tầm thường (int, long, byte →0) Khai báo bộ khởi dựng là khai báo một phương thức có tên trùng với tên lớp.
  11. Bộ khởi dựng public ThoiGian( System.DateTime dt ) { Nam = dt.Year; Thang = dt.Month; Ngay = dt.Day; Gio = dt.Hour; Phut = dt.Minute; Giay = dt.Second; }
  12. Bộ khởi dựng public class Tester { static void Main() { System.DateTime currentTime = System.DateTime.Now; ThoiGian t = new ThoiGian( currentTime ); t.ThoiGianHienHanh(); } }
  13. Bộ khởi dựng sao chép Bộ khởi dựng sao chép thực hiện việc tạo một đối tượng mới bằng cách sao chép tất cả các biến từ một đối tượng đã có và cùng một kiểu dữ liệu. public ThoiGian( ThoiGian tg) { Nam = tg.Nam; Thang = tg.Thang; Ngay = tg.Ngay; Gio = tg.Gio; Phut = tg.Phut; Giay = tg.Giay; }
  14. Bộ khởi dựng tĩnh Nếu một lớp khai báo bộ khởi dựng tĩnh (static constructor), thì được đảm bảo rằng bộ khởi dựng tĩnh này sẽ được thực hiện trước bất kỳ thể hiện nào của lớp được tạo ra static ThoiGian() { Ten = “Thoi gian”; } Không có bất cứ thuộc tính truy cập nào như public trước bộ khởi dựng tĩnh.
  15. Bộ khởi dựng private C# không có phương thức toàn cục và hằng số toàn cục. Do vậy chúng ta có thể tạo ra những lớp tiện ích nhỏ chỉ để chứa các phương thức tĩnh. Để ngăn ngừa việc tạo bất cứ thể hiện của lớp ta tạo ra bộ khởi dựng không có tham số và không làm gì cả, tức là bên trong thân của phương thức rỗng, và thêm vào đó phương thức này được đánh dầu là private. Do không có bộ khởi dựng public, nên không thể tạo ra bất cứ thể hiện nào của lớp.
  16. Khởi tạo biến thành viên Các biến thành viên có thể được khởi tạo trực tiếp khi khai báo, thay vì phải thực hiện khởi tạo các biến trong bộ khởi dựng. private int Giay=30; Khi xác định giá trị khởi tạo như vậy biến sẽ không nhận giá trị mặc định mà chương trình cung cấp. Nếu các biến này không được gán lại giá trị trong bộ khởi dựng thì nó sẽ nhận giá trị đã được khởi tạo
  17. Từ khóa this Từ khóa this dùng để tham chiếu đến thể hiện hiện hành của một đối tượng, được xem con trỏ ẩn của tất cả các phương thức không có thuộc tính tĩnh trong một lớp. Tham chiếu this được sử dụng: ⚫ Khi các biến thành viên bi che lấp bởi các tham số đưa vào public void SetYear(int Nam) { this.Nam=Nam; }
  18. Từ khóa this ⚫ Sử dụng tham chiếu this để truyền đối tượng hiện hành vào một tham số của phương thức đối tượng khác ⚫ Sử dụng tham chiếu this là mảng, chỉ mục (indexer) public string this [ int index ] { get { } set { } }
  19. Sử dụng các thành viên tĩnh (static) Thuộc tính và phương thức trong một lớp có thể là thành viên thể hiện (instance members) hay thành viên tĩnh (static members). Thành viên thể hiện hay thành viên của đối tượng liên quan đến thể hiện của một kiểu dữ liệu. Trong khi thành viên tĩnh được xem như một phần của lớp. Chúng ta có thể truy cập đến thành viên tĩnh của một lớp thông qua tên lớp đã được khai báo. Còn để truy cập đến thành viên thể hiện buộc phải thông qua thể hiện của lớp (đối tượng)
  20. Gọi một phương thức tĩnh using System; public class Class1 { public void SomeMethod(int p1, float p2) { Console.WriteLine(“Ham nhan duoc hai tham so: {0} va {1}”, p1,p2); } }
  21. Gọi một phương thức tĩnh public class Tester { static void Main() { int var1 = 5; float var2 = 10.5f; Class1 c = new Class1(); c.SomeMethod( var1, var2 ); } }
  22. Nạp chồng phương thức Khi xây dựng lớp, ta có mong muốn tạo ra nhiều hàm có cùng tên nhưng nhận tham số khác nhau. Chức năng này gọi là nạp chồng phương thức void myMethod( int p1 ); void myMethod( int p1, int p2 ); void myMethod( int p1, string p2 );
  23. Truyền tham số Tham số có kiểu dữ liệu là giá trị thì sẽ được truyền giá trị vào cho phương thức. Tuy nhiên,C# còn cung cấp khả năng cho phép ta truyền các đối tượng có kiểu giá trị dưới hình thức là tham chiếu. ⚫ ref cho phép truyền các đối tượng giá trị vào trong phương thức theo kiểu tham chiếu. ⚫ out trong trường hợp muốn truyền dưới dạng tham chiếu mà không cần phải khởi tạo giá trị ban đầu cho tham số truyền. ⚫ params cho phép phương thức chấp nhận số lượng nhiều các tham số.
  24. Truyền tham chiếu using System; public class Time { public void DisplayCurrentTime() { Console.WriteLine(“{0}/{1}/{2}/ {3}:{4}:{5}”, Date, Month, Year, Hour, Minute, Second); } public void GetTime(int h, int m, int s) { h = Hour; m = Minute; s = Second; }
  25. Truyền tham chiếu public Time( System.DateTime dt) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second;} private int Year; private int Month; private int Date; private int Hour; private int Minute; private int Second; }
  26. Truyền tham chiếu public class Tester { static void Main() {System.DateTime currentTime = System.DateTime.Now; Time t = new Time( currentTime); t.DisplayCurrentTime(); int theHour = 0; int theMinute = 0; int theSecond = 0; t.GetTime( theHour, theMinute, theSecond); System.Console.WriteLine(“Current time: {0}:{1}:{2}”, theHour, theMinute, theSecond); } }
  27. delegate Ủy quyền (delegate) là kiểu dữ liệu tham chiếu được dùng để đóng gói một phương thức với tham số và kiểu trả về xác định. Chúng ta có thể đóng gói bất cứ phương thức thích hợp nào vào trong một đối tượng ủy quyền. Nó không cần biết đến những lớp đối tượng mà nó tham chiếu tới. Điều cần quan tâm đến những đối tượng đó là các đối mục của phương thức và kiểu trả về phải phù hợp với đối tượng ủy quyền khai báo. public delegate int WhichIsFirst(object obj1, object obj2);
  28. delegate namespace NewExample { public delegate void ExampleDelagate(); class Example { public void Method1() {Console.WriteLine("Method 1"); } public void Method2() {Console.WriteLine("Method 2"); } }
  29. delegate class Program { public static void Main() { Example a=new Example(); ExampleDelegate deg; deg=new ExampleDeleage(a.Method1); deg(); deg=new ExampleDeleage(a.Method2); deg(); } }
  30. event Trong môi trường giao diện đồ họa (Graphical User Interfaces: GUIs), Windows hay trong trình duyệt web đòi hỏi các chương trình phải đáp ứng các sự kiện (event). Một sự kiện có thể là một nút lệnh được nhấn, một mục trong menu được chọn, hành động sao chép tập tin hoàn thành, Một hành động nào đó xảy ra, và ta phải đáp ứng lại sự kiện đó. Chúng ta không thể đoán trước được khi nào thì các sự kiện sẽ xuất hiện. Hệ thống sẽ chờ cho đến khi nhận được sự kiện, và sẽ chuyển vào cho trình xử lý sự kiện thực hiện.