Hướng đối tượng trong C#

ppt 33 trang phuongnguyen 2361
Bạn đang xem 20 trang mẫu của tài liệu "Hướng đối tượng 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:

  • ppthuong_doi_tuong_trong_c.ppt

Nội dung text: Hướng đối tượng trong C#

  1. HƯỚNG ĐỐI TƯỢNG TRONG C# 1
  2. Nhắc lại về lập trình HĐT ◼ Tiếp cận HĐT giúp khắc phục khuyết điểm của lập trình cấu trúc:  Không sử dụng lại được mã nguồn.  Mọi thay đổi cấu trúc đòi hỏi phải thay đổi cả giải thuật  Chỉ phát huy hiệu quả trong module chương trình nhỏ. ◼ Lập trình HĐT nhìn nhận và phân tích chương trình là những hoạt động mà các đối tượng tham gia vào chương trình đó. 2
  3. ĐỐI TƯỢNG – LỚP ◼ Một đối tượng là thực thể trong hệ thống. ➔ Mỗi đối tượng sẽ có một số thuộc tính và một số hoạt động nhất định trong hệ thống. ◼ Lớp là khái niệm trừu tượng phản ánh tập hợp các đối tượng có cùng tính chất. ◼ Một đối tượng là một thể hiện của một lớp. 3
  4. CẤU TRÚC CỦA LỚP Class { Các biến thành viên; Hàm xây dựng; Các thuộc tính; Các phương thức; } 4
  5. BIẾN THÀNH VIÊN Cú pháp: ; class ConNguoi() { public string hoTen; protected string gioiTinh; DateTime ngaySinh; } 5
  6. Phạm vi truy cập ◼ private: Chỉ truy cập được từ trong lớp khai báo. ◼ protected: Truy cập được từ trong lớp khai báo và các lớp con của lớp khai báo. ◼ public: Truy cập được từ mọi nơi. ◼ Mặc định là private 66
  7. HÀM XÂY DỰNG ◼ Cú pháp: ([danh sách tham số]) { Các phép toán gán giá trị cho các biến thành viên; } 7
  8. HÀM XÂY DỰNG ◼ Hàm xây dựng không Gọi hàm xây dựng: tham số: ConNguoi cn; public ConNguoi() cn=new ConNguoi() { hoTen=“”; gioiTinh=“Nam”; } Nếu một lớp không định nghĩa hàm xây dựng thì lớp sẽ có một hàm xây dựng mặc nhiên là: Public ConNguoi(){} 8
  9. HÀM XÂY DỰNG ◼ Hàm xây dựng có tham số: public ConNguoi(string hoTen,string gioiTinh, DateTime NS) { this.hoTen=hoTen; this.gioiTinh=gioiTinh; ngaySinh=NS; } Gọi hàm: ConNguoi cn=new ConNguoi(“NVA”,”Nam”,ns); 9
  10. THUỘC TÍNH Cú pháp: ConNguoi cn=new { [get{}] // gán giá trị trả về cho ConNguoi(); thuộc tính. [set{}] // thiết lập giá trị cho Cn.HoTen=“Nguyen Van A”; biến thành viên. // Hàm set trong thuộc } VD: tính HoTen được gọi. Public string HoTen String ht= cn.HoTen; { get{return hoTen;} // Hàm get trong thuộc tính set{hoTen=value;} HoTen được gọi. } 10
  11. THUỘC TÍNH CHỈ ĐỌC Là thuộc tính chỉ có hàm get. Cách sử dụng: class UngCuVien() UngCuVien ucv=new UngCuVien(); { int soPB=ucv.SoPhieuBau; //OK String cmnd; public string hoTen; ucv.SoPhieuBau=7; // Lỗi protected string gioiTinh; DateTime ngaySinh; int soPhieuBau; public int SoPhieuBau { get {return soPhieuBau;} } } 11
  12. PHƯƠNG THỨC ◼ Phương thức của một lớp phản ánh các hành động của các đối tượng trong lớp đó. ◼ Cú pháp: ( [Danh sách các tham số]) { nội dung phương thức; } 12
  13. PHƯƠNG THỨC VD: class NhanKhau() { String cmnd; public string hoTen; protected string gioiTinh; DateTime ngaySinh; int namKetHon; String tinhTrangHonNhan; String hoTenVoChong; public void LapGiaDinh(int nam, string hoTen) { namKetHon=nam; tinhTrangHonNhan=“Đã kết hôn”; hoTenVoChong=hoTen; } } 13
  14. OVERLOAD TRONG PHƯƠNG THỨC Ta có thể định nghĩa nhiều phương thức của một lớp với cùng một tên nhưng phải khác nhau về danh sách tham số. class NhanKhau() { public void LapGiaDinh(int nam, string hoTen) { namKetHon=nam; tinhTrangHonNhan=“Đã kết hôn”; hoTenVoChong=hoTen; } public void LapGiaDinh(string hoTen) { namKetHon=DateTime.Now.Year; tinhTrangHonNhan=“Đã kết hôn”; hoTenVoChong=hoTen; } } 14
  15. BIẾN THÀNH VIÊN TĨNH (STATIC) Cách khai báo: Mô hình bộ nhớ: public Class CuTri{ CuTri ct1=new CuTri(); String cmnd; CuTri ct2=new CuTri(); public string hoTen; ct1 cmnd protected string soNguoiDiBau gioiTinh; DateTime ngaySinh; ct2 cmnd static int soNguoiDiBau; } 15
  16. THUỘC TÍNH TĨNH (STATIC) Các thuộc tính tĩnh chỉ được quyền truy cập vào biến thành viên tĩnh (không có điều ngược lại). public Class CuTri { static int soNguoiDiBau; public static int SoNguoiDiBau { get { return soNguoiDiBau; } } } 16
  17. PHƯƠNG THỨC TĨNH (STATIC) Các phương thức tĩnh chỉ được quyền truy cập vào biến thành viên tĩnh (không có điều ngược lại) và thuộc tính tĩnh. public Class CuTri { static int soNguoiDiBau; public static void DiBau() { soNguoiDiBau++; } } 17
  18. GỌI CÁC YẾU TỐ TĨNH Đối với các yếu tố thông thường của một lớp, chúng ta phải gọi chúng thông qua một đối tượng cụ thể. Ví dụ: CuTri ct=new CuTri(); ct.hoTen=“NVA”; Đối với các yếu tố tĩnh của một lớp ta phải gọi chúng thông qua tên của lớp đó. Ví dụ: int soNguoiDiBau=CuTri.SoNguoiDiBau; int so=ct. SoNguoiDiBau; //Lỗi cú pháp 18
  19. TÍNH THỪA KẾ Tính thừa kế giúp có thể tái sử dụng lại mã nguồn. Một lớp được thừa kế từ một lớp khác được gọi là lớp con, lớp còn lại gọi là lớp cha. Lớp con có thể sử dụng và truy cập những biến thành viên, thuộc tính và phương thức có thuộc tính truy cập là protected hoặc public của lớp cha. 19
  20. TÍNH THỪA KẾ Lớp con: Lớp cha: Class CuTri:ConNguoi class ConNguoi() { { String cmnd; public string hoTen; } protected string gioiTinh; DateTime ngaySinh; } 20
  21. HÀM XÂY DỰNG TRONG LỚP CON Ta có thể xây dựng một hàm xây dựng trong lớp con và thừa kế từ các hàm xây dựng trong lớp cha thông qua từ khóa base. Ví dụ: public ConNguoi() public CuTri():base() { { hoTen=“”; cmnd=“”; gioiTinh=“Nam”; } } 21
  22. HÀM HỦY TRONG LỚP CON Hàm hủy được gọi một cách tự động khi đối tượng được thu hồi. Cú pháp: ~ () { thu hồi vùng nhớ các biến thành viên; } 22
  23. TÁI ĐỊNH NGHĨA HÀM (OVERRIDES) Một đối tượng trong lớp con hoàn toàn có thể sử dụng lại các phương thức đã được định nghĩa trong lớp cha. Tuy nhiên, ta có thể sửa đổi phương thức đó, hoặc viết lại hoàn toàn mới trong lớp con. Lớp CuTri (Con) Lớp ConNguoi (Cha) public int Tuoi() public int Tuoi() { { int tuoi=base.Tuoi(); int tuoi=DateTime.Now.Year- return tuoi ; ngaySinh.Year+1; } return tuoi; } 23
  24. TƯƠNG QUAN GIỮA ĐỐI TƯỢNG LỚP CON VÀ ĐỐI TƯỢNG LỚP CHA Tất cả các đối tượng của lớp con và đối tượng của lớp cha đều sử dụng chung một vùng nhớ đối với các biến thành viên tĩnh của lớp cha. DTLopCha1 DTLopCha2 Biến tĩnh DTLopCon1 DTLopCon2 24
  25. TƯƠNG QUAN GIỮA ĐỐI TƯỢNG LỚP CON VÀ ĐỐI TƯỢNG LỚP CHA Ta có thể gán một đối tượng của lớp cha bằng một đối tượng của lớp con (Không có điều ngược lại) ConNguoi cn=new ConNguoi(); CuTri ct=new CuTri(); cn=ct; // Hợp lệ ct=cn; //Hỗn 25
  26. TƯƠNG QUAN GIỮA ĐỐI TƯỢNG LỚP CON VÀ ĐỐI TƯỢNG LỚP CHA Gọi phương thức của lớp cha đã bị lớp con viết đè: CuTri ct=new CuTri(); ct.NgaySinh=new DateTime(1986,9,15); ConNguoi cn=ct; String tuoi=cn.Tuoi(); // tuoi=27 String tuoi1=ct.Tuoi();// tuoi1=26 26
  27. LỚP DateTime ◼ Khai báo đối tượng mới cho lớp:  DateTime t = new DateTime();  DateTime t = new DateTime(2012,11,10); ◼ Các thuộc tính: Hour, Minute, Second, Month, Year. ◼ Phép cộng: DateTime t = new DateTime(2012,11,10); t.AddDays(-1); t.AddHours(2); 27
  28. LỚP DateTime ◼ Lấy số ngày giữa 2 ngày: DateTime t = new DateTime(2012, 11, 10); DateTime t1 = new DateTime(2012, 11, 9); TimeSpan ts = t - t1; ts.TotalDays; 28
  29. Bài tập Bài 1: Xây dựng lớp PhanSo gồm các biến thành viên: tuSo, mauSo Viết hàm xây dựng không tham số cho lớp PhanSo. Viết hàm xây dựng có 2 tham số tuSo và mauSo. Viết hàm trả về một phân số là kết quả cộng của phân số hiện hành và phân số khác. 29
  30. Bài tập(tt) ◼ Viết hàm trả về một phân số là kết quả trừ của phân số hiện hành và phân số khác. ◼ Viết hàm trả về một phân số là kết quả nhân của phân số hiện hành và phân số khác. ◼ Viết hàm trả về một phân số là kết quả chia của phân số hiện hành và phân số khác. 30
  31. Bài tập(tt) ◼ Bài 2: Xây dựng lớp Diem có các thuộc tính: toaDoX, toaDoY. Viết hàm xây dựng không tham số cho lớp Diem. Viết hàm xây dựng có 2 tham số toaDoX và toaDoY. Viết hàm nhập thông tin cho lớp Diem. Viết hàm in thông tin của điểm hiện hành. Viết hàm tính khoảng cách giữa điểm hiện hành và điểm khác. 31
  32. Bài tập(tt) ◼ Bài 3: Xây dựng lớp ConNguoi có các thuộc tính: hoTen, ngaySinh, gioiTinh. Viết hàm xây dựng không tham số cho lớp ConNguoi . Viết hàm xây dựng có 3 tham số hoTen và ngaySinh, gioiTinh. Viết hàm nhập thông tin cho đối tượng hiện hành. Viết hàm in thông tin của đối tượng hiện hành. 32
  33. Bài tập(tt) ◼ Bài 4: Xây dựng lớp GiaoVien thừa kế từ lớp ConNguoi và có thêm các thuộc tính maGV, khoa, chuyenMon Viết hàm xây dựng có 6 tham số maGiangVien, hoTen và ngaySinh, gioiTinh, khoa, chuyenMon Viết hàm nhập thông tin cho đối tượng hiện hành. Viết hàm in thông tin của đối tượng hiện hành. 33