Bài giảng Lập trình DOTNET - Chương 3: Lập trình hướng đối tượng với C# - Huỳnh Lê Uyên Minh

pdf 36 trang Gia Huy 17/05/2022 2070
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình DOTNET - Chương 3: Lập trình hướng đối tượng với C# - Huỳnh Lê Uyên Minh", để 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_lap_trinh_dotnet_chuong_3_lap_trinh_huong_doi_tuon.pdf

Nội dung text: Bài giảng Lập trình DOTNET - Chương 3: Lập trình hướng đối tượng với C# - Huỳnh Lê Uyên Minh

  1. CHƯƠNG 3: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C# Môn học: Lập trình DOTNET Giảng viên: Huỳnh Lê Uyên Minh Khoa: Sư phạm Toán – Tin, ĐH Đồng Tháp 1
  2. NỘI DUNG 1. Phương pháp lập trình hướng đối tượng 2. Định nghĩa lớp - class 3. Tạo đối tượng - Object
  3. 1. Phương pháp lập trình hướng đối tượng • Chương trình là một hệ thống những lớp đối tượng. Mỗi một lớp đối tượng về mặt thực tế tương ứng với những đối tượng có xuất hiện trong thực tế. • LT hướng đối tượng là xây dựng những lớp đối tượng và yêu cầu chúng thực hiện những trách nhiệm của mình. • LT hướng đối tượng là phương pháp LT dựa trên kiến trúc lớp (class) và đối tượng (object) 3
  4. Đối tượng là gì ?  Đối tượng trong thế giới thực: là một thực thể cụ thể mà ta có thể sờ, nhìn thấy hay cảm nhận được.  Đối tượng phần mềm: dùng để biểu diễn các đối tượng trong thế giới thực.  Mỗi đối tượng bao gồm 2 thành phần: thuộc tính và hành động. 4
  5. Đối tượng là gì ? Ví dụ: một người A • Một người có các thuộc tính: tên, tuổi, địa chỉ, màu mắt, • Các hành động: đi, nói, thở, Một đối tượng là 1 thực thể bao gồm thuộc tính & hành động 5
  6. Lớp đối tượng là gì ? • Lớp đối tượng thể hiện cho một nhóm các đối tượng giống nhau (cùng thuộc tính & hành động) • Ví dụ: học sinh A, học sinh B, học sinh C 6
  7. Thiết kế phần mềm hướng đối tượng . Trừu tượng hóa dữ liệu và các hàm/ thủ tục liên quan . Chia hệ thống ra thành các lớp/ đối tượng . Mỗi lớp/ đối tượng có các tính năng và hành động chuyên biệt . Các lớp có thể được sử dụng để tạo ra nhiều đối tượng cụ thể 7
  8. Sự trừu tượng hoá Thế giới thực Trừu tượng hóa Phần mềm Thuộc tính Dữ liệu Thực thể Hành động hàm 8
  9. Một số khái niệm Thế giới thực PPLT Ngôn ngữ lập trình Đối tượng trong thế giới thực Đối tượng Biến có kiểu cấu trúc Khái niệm chung về đối tượng Lớp đối tượng Kiểu dữ liệu cấu trúc Các thông tin được quan tâm Thuộc tính Thành phần thuộc về 1 đối tượng tính của kiểu cấu trúc Các khảnăng của đối tượng Hành động Các phương thức Phân công giữa các đối tượng Yêu cầu Gọi thực hiện phương thức 9
  10. 2. Định nghĩa Lớp - Class . Lớp đối tượng: Định nghĩa các đặc điểm/ thông tin (thuộc tính) và hành động/ chức năng/ (phương thức) chung cho tất cả các đối tượng của cùng một loại. Ví dụ: Lớp SINHVIEN gồm . Thuộc tính: Họ tên, giới tính, ngày tháng năm sinh, điểm tb, đối tượng ưu tiên, . Phương thức: Học bài, làm bài thi, bài tập, Sinh viên Nguyễn Văn A, Lý Thị B là đối tượng thuộc lớp SINHVIEN 10
  11. Cú pháp định nghĩa lớp (class) class { các thuộc tính; phương thức () { Cài đặt } } 11
  12. Từ khóa truy xuất . private (mặc định): Truy xuất trong nội bộ lớp (thường sử dụng cho thuộc tính). . protected: Truy xuất trong nội bộ lớp/ lớp con (được sử dụng cho lớp cơ sở) . public: Truy xuất mọi nơi (thường sử dụng cho phương thức). . static: truy xuất không cần khởi tạo đối tượng của lớp. 12
  13. Ví dụ: định nghĩa lớp CHocSinh public class CHocSinh { private string hoten; private int toan, van; private float dtb; public void Nhap() { } public void Xuat() { } } 13
  14. 3. Đối tượng, Tạo và sử dụng đối tượng . Đối tượng: Thể hiện (instance) cụ thể của một lớp đối tượng. . Tạo đối tượng TênĐốiTượng = new (); VD: HOCSINH hsA = new HOCSINH(); . Sử dụng đối tượng TênĐốiTượng.TênPhươngThức([tham số]); VD: hsA.Nhap(); hsA.Xuat(); 14
  15. Ví dụ: Nhập vào họ tên, điểm văn và điểm toán của 1 học sinh. Tính điểm trung bình và in kết quả public class HOCSINH { private string hoten; private int toan, van; private float dtb; public void Nhap() { Console.Write("Nhap ho ten: "); hoten = Console.ReadLine(); Console.Write("Nhap diem van: "); van = int.Parse(Console.ReadLine()); Console.Write("Nhap diem toan: "); toan = int.Parse(Console.ReadLine()); dtb = (float)(toan + van) / 2; } public void Xuat() { Console.WriteLine("Diem trung binh: {0:0.00}", dtb); } } 15
  16. class Program { static void Main(string[] args) { HOCSINH hsA = new HOCSINH(); hsA.Nhap(); hsA.Xuat(); } } Kết quả: 16
  17. 4. Thiết kế thuộc tính Đối với mỗi đối tượng, xác định các thông tin cần lưu trữ. Sau đó lập bảng mô tả thuộc tính như sau: Stt Thuộc tính Kiểu/ lớp Ràng buộc Diễn giải Nếu có ràng buộc liên thuộc tính thì lập thêm bảng sau: Thuộc tính Stt Mô tả ràng buộc Ghi chú liên quan 17
  18. Ràng buộc Ràng buộc trên lớp là các quy định, quy tắc áp đặt trên các giá trị thuộc tính của đối tượng trong lớp, sao cho đối tượng này thể hiện đúng với thực tế. • Ràng buộc tĩnh: ràng buộc trên giá trị thuộc tính. • Ràng buộc động: ràng buộc trên biến đổi giá trị thuộc tính. Ví dụ: • “Lương của nhân viên ít nhất là 1.500.000 đồng” Ràng buộc tĩnh. • “Lương của nhân viên chỉ có thể tăng” Ràng buộc động. 18
  19. Ràng buộc tĩnh Gồm 2 loại: • Ràng buộc trên thuộc tính (Ràng buộc MGT) • Ràng buộc liên thuộc tính 19
  20. VD1: Xét lớp điểm ký tự (CDiemKT) trên cửa sổ Console Thuộc Stt Kiểu/ lớp Ràng buộc Diễn giải tính 0 ≤ x < Kích 1 x Số nguyên Cột thước ngang 0 ≤ y < Kích 2 y Số nguyên Dòng thước dọc Ký tự 3 ch Ký tự hiển thị 20
  21. VD2: Xét lớp hình chữ nhật (CHCN) trên cửa sổ Console Mô tả thuộc tính Chiều ngang Tọa độ góc Chiều đứngChiều Thuộc Stt Kiểu/ lớp Ràng buộc Diễn giải tính 1 goc CDiemKT Toạ độ góc 2 ngang Số nguyên 1<ngang< Kích thước ngang Chiều ngang 3 dung Số nguyên 1<dung< Kích thước dọc Chiều đứng 21
  22. VD2: Xét lớp hình chữ nhật (CHCN) trên cửa sổ Console Mô tả ràng buộc liên thuộc tính STT Mô tả ràng buộc Thuộc tính Ghi chú liên quan 1 Tổng của hoành độ góc và m Goc, m nhỏ hơn kích thước ngang 2 Tổng của tung độ góc và n Goc, n nhỏ hơn kích thước dọc 22
  23. VD3: Mô tả ràng buộc liên thuộc tính cho lớp CDate STT Mô tả ràng buộc Thuộc tính Ghi chú liên quan 1 Nếu Th là 4, 6, 9, 11 thì Ng, Th Ng tối đa là 30 2 Nếu Th là 2 và Nm nhuận Ng, Th, Nm thì Ng tối đa là 29 Nếu Th là 2 và Nm không nhuận thì Ng tối đa là 28 23
  24. 5. Bài tập – Thiết kế thuộc tính Lớp 24
  25. 5. Bài tập – Thiết kế các hành động của Lớp 25
  26. Thiết kế các hành động của lớp 2. Khởi tạo 1. Kiểm tra ràng buộc 3. Cập nhật 4. Xử lý, tính toán 5. Cung cấp thông tin
  27. VD1: Thiết kế các hành động của lớp CDiemKT 1. Nhóm kiểm tra ràng buộc public bool KiemTraX(int xx); public bool KiemTraY(int yy); 2. Nhóm khởi tạo public void Nhap(); public bool KhoiTao (int xx, int yy, char cc); public void PhatSinh(); 27
  28. VD1: Thiết kế các hành động của lớp CDiemKT 3. Nhóm cập nhật //Trực tiếp public bool CapNhatX(int xx); public bool CapNhatY(int yy); public void CapNhatCh(char c); //Gián tiếp public bool DichPhai(uint k); public bool DichTrai(uint k); public bool DichLen(uint k); public bool DichXuong(uint k); public bool DichXien1(uint k); public bool DichXien2(uint k); 28
  29. VD1: Thiết kế các hành động của lớp CDiemKT 4. Nhóm xử lý nhtí toán public double KhoangCach(CDiemKT M); public int KhoangCachX(CDiemKT M); public int KhoangCachY(CDiemKT M); 5. Nhóm cung cấp thông tin public void Xuat(); public void Xoa(); public int GiaTriX(); public int GiaTriY(); public char GiaTriCh(); 29
  30. VD2: Thiết kế các hành động của lớp CHCN 1. Nhóm kiểm tra ràng buộc public bool KiemTraM(int mm); public bool KiemTraN(int nn); 2. Nhóm khởi tạo public void Nhap(); public bool KhoiTao(CDiemKT M,int cng, int cd); public bool KhoiTao(int x, int y, int cng, int cd); public void KhoiTao(CDiemKT X, CDiemKT Y); public void PhatSinh(); 30
  31. VD2: Thiết kế các hành động của lớp CHCN 3. Nhóm cập nhật //Trực tiếp public bool CapNhatGoc(CDiemKT M); public bool CapNhatNgang(int cng); public bool CapNhatDung(int cd); 31
  32. VD2: Thiết kế các hành động của lớp CHCN 3. Nhóm cập nhật //Gián tiếp public bool DichPhai(int k); public bool DichTrai(int k); public bool DichLen(int k); public bool DichXuong(int k); public bool TangNgang(int k); public bool GiamNgang(int k); public bool TangDung(int k); public bool GiamDung(int k); public bool XoayThuan(); public void XoayNghich(); 32
  33. VD2: Thiết kế các hành động của lớp CHCN 4. Nhóm xử lý nhtí toán public int XetViTri(CDiemKT M); //-1: Bên trong, 0: Trên cạnh, 1: Bên ngoài public int KhoangCachX(CDiemKT M); public int KhoangCachY(CDiemKT M);
  34. VD2: Thiết kế các hành động của lớp CHCN 5. Nhóm cung cấp thông tin public void Xuat(); public void Xoa(); public CDiemKT ToaDoGoc(); public int ChieuNgang(); public int ChieuDung(); public int ChuVi(); public long DienTich(); public double DuongCheo();
  35. 6. Sử dụng từ khóa this class Program class CViDu { { static void Main(string[] args) int a, b; { public void Gan(int a, int b) CViDu vd = new CViDu(); { vd.Gan(21, 9); a = a; vd.Xuat(); b = b; } } } public void Xuat() { Console.WriteLine("a={0}, b={1}", a, b); } } 35
  36. Trường hợp tên tham số trùng với tên thuộc tính của đối tượng ta dùng từ khóa this. Từ khoá this được dùng để tham chiếu đến chính bản thân của đối tượng đó class CViDu { int a, b; public void Gan(int a, int b) { this.a = a; this.b = b; } public void Xuat() { Console.WriteLine("a={0}, b={1}", a, b); } } 36