Xem mẫu

  1. CHƯƠNG 3: Lớp và đối tượng
  2. Nội dung chính  Định nghĩa lớp  Tạo đối tượng  Sử dụng các thành viên tĩnh  Truyền tham số  Hàm dựng và nạp chồng phương thức  Đóng gói dữ liệu với property
  3. 1. Định nghĩa lớp  Lớp trong C# cho phép người lập trình tự định nghĩa các kiểu dữ liệu phức tạp (user-defined types) và được sử dụng tương tự như kiểu dữ liệu có sẵn (built-in data types).  Lớp thường được sử dụng để định nghĩa các vấn đề trừu tượng như: ngày tháng, vector …  Lớp cho phép tách rời phần cài đặt (implementation) và phần giao diện (interface).
  4. 1.Định nghĩa lớp (tt)  Mộtlớp có chứa dữ liệu (member data) và hàm (member function). Class data1 data2 data3 functiona() functionb() functionc()
  5. Ví dụ class Employee // khai báo tên lớp { // từ khóa cho biết không thể truy nh ập t ừ ngoài l ớp private int EmpID ; // member data private char EmpName[30]; private float EmpSalary; // từ khóa cho biết có thể truy nhập từ ngoài l ớp public void AddEmployee(); // member function };
  6. Bổ từ truy xuất Từ khoá Giải thích public Truy xuất mọi nơi protected Truy xuất trong nội bộ lớp hoặc trong các lớp con private (mặc định) Chỉ được truy xuất trong nội bộ lớp
  7. Ví dụ using System; public class Time { // phương thức public public void DisplayCurrentTime() { Console.WriteLine("stub for DisplayCurrentTime"); } // các biến private private int Year; int Month; int Date; public int Hour,Minute, Second; } public class Tester { static void Main() { Time t = new Time(); t.DisplayCurrentTime(); } }
  8. Điều khiển truy nhập Phần được khai báo với từ khóa  Class private chỉ được truy nhập bởi các  private               hàm thành phần của cùng class data1 data2 functiond() Phần được khai báo với từ khóa  public              public có thể được truy nhập tại functiona() bất kỳ nơi nào trong chương trình functionb() functionc()
  9. 2.Tạo đối tượng Cú pháp khai báo đối tượng và cấp phát vùng nhớ cho đối tượng: TênLớp TênBiếnĐốiTượng; TênBiếnĐốiTượng = new TênLớp(DanhSáchĐốiSố); hoặc TênLớp TênBiếnĐốiTượng = new TênLớp(DanhSáchĐốiSố); Chú ý: • Sau khi khai báo biến đối tượng thì biến đó chỉ là một con trỏ. • Sau khi cấp phát bắng từ khóa new thì biến trỏ tới một đối tượng thực sự.
  10. 2.Tạo đối tượng  Ví dụ: public void Xuat() Chương trình nhập chiều dài, chiều rộng của hình chữ nhật và xuất ra di ện { tích, chu vi của hình chữ nhật. Console.WriteLine("Hinh chu nhat: Dai = {0}, using System; Rong = {1}", Dai, Rong); namespace LopDoiTuongHCN } { } class HCN class Application { { protected float Dai, Rong; static void Main(string[] args) public float ChuVi() { { HCN h; return (Dai + Rong )*2; h = new HCN(); } h.Nhap(); public float DienTich() h.Xuat(); { Console.WriteLine("Chu vi hinh chu nhat: return Dai* Rong; {0}", h.ChuVi()); } Console.WriteLine("Dien tich hinh chu nhat: public void Nhap() {0}", h.DienTich()); { Console.ReadLine(); Console.WriteLine("Nhap chieu dai: "); } Dai = float.Parse(Console.ReadLine()); } Console.WriteLine("Nhap chieu rong: "); } Rong = float.Parse(Console.ReadLine()); }
  11. Từ khoá this  Từ khoá this được dùng để tham chiếu đến chính bản thân của đối tượng đó. Ví dụ: public void SomeMethod (int hour) { this.hour = hour; }
  12. 3.Sử dụng các thành viên tĩnh  Phương thức tĩnh (static) được nói là hoạt động trong lớp. Do đó, nó không thể được tham chiếu this chỉ tới.  Phương thức static cũng không truy cập trực tiếp vào các phương thức không static được mà phải dùng qua thể hiện của đối tượng.  Việc truy cập đến thành viên tĩnh (static) phải thực hiện thông qua tên lớp (không được truy cập thành viên tĩnh thông qua đối tượng) theo cú pháp: TênLớp.TênThànhViênTĩnh
  13. Ví dụ Ví dụ 4‑6 Cách sử dụng phương thức tĩnh using System; public class MyClass { public void SomeMethod(int firstParam, float secondParam) { Console.WriteLine("Here are the parameters received: {0}, {1}", firstParam, secondParam); } } ------------------------------------------------------------------------------------- public class Tester { static void Main( ) { int howManyPeople = 5; float pi = 3.14f; MyClass mc = new MyClass( ); mc.SomeMethod(howManyPeople, pi); } } Trong ví dụ trên phương thức Main() là tĩnh và phương thức SomeMethod() không là tĩnh.
  14. 3.Sử dụng các trường tĩnh (tt) Cách dùng chung các biến thành viên tĩnh là giữ vết của một số các thể hiện  mà hiện tại nó đang tồn tại trong lớp đó. using System; public void HowManyCats1() public class Cat { { public Cat() Console.WriteLine("{0} { cats adopted", instances); instances++; } } private static int instances = public static void HowManyCats() { 0; Console.WriteLine("{0} cats public static int instances1 = adopted",instances); 0; } }
  15. 3. Sử dụng các trường tĩnh (tt) public class Tester {     static void Main()     {         Cat c = new Cat();         //Truy cap vao phuong thuc ko Static phải tạo 1 đối tượng          c.HowManyCats1();         //Khong the truy cap vao phuong thuc Static          //bang this, hay the hien          //đoi tuong ma Tendoituong.phuongthuc_static         Cat.HowManyCats();         Cat frisky = new Cat();         Cat.HowManyCats();         Cat whiskers = new Cat();         Cat.HowManyCats();        } }
  16. 4. Truyền tham số  Trong C#, ta có thể truyền tham số cho phương thức theo kiểu tham chiếu hoặc tham trị
  17. Truyền bằng tham chiếu  Mộthàm chỉ có thể trả về một giá trị. Trong trường hợp muốn nhận về nhiều kết quả, ta sử dụng chính các tham số truyền cho hàm như các tham số có đầu ra (chứa trị trả về). Ta gọi tham số truyền theo kiểu này là tham chiếu.
  18. Ví dụ Trị trả về trong tham số public class Time { // một phương thức public public void DisplayCurrentTime() { System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}“, Month, Date, Year, Hour, Minute, Second); } public int GetHour( ) { return Hour; } public void GetTime(ref int h, ref int m, ref int s) { h = Hour; m = Minute; s = Second; }
  19. Ví dụ (tt) // hàm dựng public Time(System.DateTime dt) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; } // biến thành viên private private int Year; private int Month; private int Date; private int Hour; private int Minute; private int Second; }
  20. Ví dụ (tt) 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(ref theHour, ref theMinute, ref theSecond); System.Console.WriteLine("Current time: {0}:{1}:{2}", theHour, theMinute, theSecond); } }
nguon tai.lieu . vn