Bài giảng Lập trình hướng đối tượng - Chương 3: Lập trình hướng đối tượng với C++

pdf 38 trang phuongnguyen 4290
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 - Chương 3: Lập trình hướng đối tượng với 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_lap_trinh_huong_doi_tuong_chuong_3_lap_trinh_huong.pdf

Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 3: Lập trình hướng đối tượng với C++

  1. Khoa CNTT LTHĐT Chƣơng 3 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG VỚI C++ GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 1 ThS. Nguyễn Tấn Trần Minh Khang
  2. Khoa CNTT LTHĐT 0. ĐẶT VẤN ĐỀ Viết chương trình nhập họ tên, điểm toán, điểm văn của một học sinh. Tính điểm trung bình và xuất kết quả. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 2 ThS. Nguyễn Tấn Trần Minh Khang
  3. Khoa CNTT LTHĐT 1. LỚP ĐỐI TƢỢNG (class) Khái niệm: Lớp đối tượng tượng hiểu một cách đơn giản nhất là sự tích hợp của hai thành phần: Thành phần dữ liệu và Thành phần xử lý. Cú pháp khai báo lớp 1. class CTenLop 2. { 3. // Thành phần dữ liệu. 4. // Thành phần xử lý 5. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 3 ThS. Nguyễn Tấn Trần Minh Khang
  4. Khoa CNTT LTHĐT 1. LỚP ĐỐI TƢỢNG (class) Ví dụ: Hãy khai báo lớp cho bài toán được nêu ra trong phần đặt vấn đề. 11. struct HocSinh 12. { 13. char hoten[31]; 14. int toan; 15. int van; Thành phần 16. float dtb; dữ liệu 17. }; 18. typedef struct hocsinh HOCSINH; 19. void Nhap(HOCSINH&); 20. void Xuat(HOCSINH); 21. void XuLy(HOCSINH &); Thành phần GV. Nguyễn Sơn Hoàng Quốc Chươngxử lý03 - 4 ThS. Nguyễn Tấn Trần Minh Khang
  5. Khoa CNTT LTHĐT 1. LỚP ĐỐI TƢỢNG (class) 11. class CHocSinh 12. { 13. private: 14. char hoten[31]; 15. int toan; 16. int van; 17. float dtb; 18. public: 19. void Nhap(); 20. void Xuat(); 21. void XuLy(); 22. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 5 ThS. Nguyễn Tấn Trần Minh Khang
  6. Khoa CNTT LTHĐT 2. ĐỐI TƢỢNG (object) Khái niệm: Đối tƣợng là một sự thể hiện của một lớp. Trong một lớp có thể có nhiều sự thể hiện khác nhau. Nói một cách khác: có thể có nhiều đối tƣợng cùng thuộc về một lớp. Cú pháp khai báo đối tượng. 1. CTenLop ; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 6 ThS. Nguyễn Tấn Trần Minh Khang
  7. Khoa CNTT LTHĐT 2. ĐỐI TƢỢNG (object) Ví dụ 1: CHocSinh x; Trong ví dụ trên ta nói x là một đối tượng thuộc về lớp đối tượng CHocSinh. Ví dụ 2: CHocSinh a,b; CHocSinh y; Trong ví dụ trên ta nói a,b,y là ba đối tượng thuộc về lớp đối tượng CHocSinh. Nói một cách khác: Lớp đối tượng CHocSinh có ba sự thể hiện khác nhau. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 7 ThS. Nguyễn Tấn Trần Minh Khang
  8. Khoa CNTT LTHĐT 3. PHƢƠNG THỨC (method) Khái niệm: Phương thức là khả năng mà đối tượng thuộc về lớp có thể thực hiện. Cú pháp định nghĩa phương thức: 1. KDL CTenLop::PhuongThuc ( ) 2. { 3. // Thân Phương Thúc 4. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 8 ThS. Nguyễn Tấn Trần Minh Khang
  9. Khoa CNTT LTHĐT 3. PHƢƠNG THỨC (method) Ví dụ 1: Định nghĩa phương thức nhập của lớp CHocSinh. 1. void CHocSinh::Nhap() 2. { 3. printf(“Nhap ho ten:”); 4. gets(hoten); 5. printf(“Nhap toan:”); 6. scanf(“%d”, &toan); 7. printf(“Nhap van:”); 8. scanf(“%d”, &van); 9. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 9 ThS. Nguyễn Tấn Trần Minh Khang
  10. Khoa CNTT LTHĐT 3. PHƢƠNG THỨC (method) Ví dụ 2: Định nghĩa phương thức XuLy của lớp CHocSinh. 1. void CHocSinh::XuLy() 2. { 3. dtb=(float)(toan+van)/2; 4. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 10 ThS. Nguyễn Tấn Trần Minh Khang
  11. Khoa CNTT LTHĐT 3. PHƢƠNG THỨC (method) Ví dụ 3: Định nghĩa phương thức Xuat của lớp CHocSinh. 1. void CHocSinh::Xuat() 2. { 3. printf(“\nHo ten:%s”, hoten); 4. printf(“\nToan: %d”,toan); 5. printf(“\nVan: %d”,van); 6. printf(“\nDTB: %f”,dtb); 7. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 11 ThS. Nguyễn Tấn Trần Minh Khang
  12. Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG HÀNH ĐỘNG Khái niệm: Đối tượng hành động là đối tượng gọi thực hiện phương thức mà lớp đối tượng nó thuộc về cung cấp. Cú pháp 1. TenDoiTuong.PhuongThuc( ) Ví dụ 1: 1. CHocSinh hs; 2. hs.Nhap(); GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 12 ThS. Nguyễn Tấn Trần Minh Khang
  13. Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 1: 1. CHocSinh hs; 2. hs.Nhap(); Trong câu lệnh thứ hai của đoạn chương trình trên ta nói: đối tƣợng hs gọi thực hiện phƣơng thức Nhập. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 13 ThS. Nguyễn Tấn Trần Minh Khang
  14. Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 2: 1. CHocSinh a,b,c; 2. a.Nhap(); 3. b.Nhap(); 4. c.Nhap(); Trong câu lệnh thứ hai của đoạn chương trình trên ta nói: đối tƣợng a gọi thực hiện phƣơng thức Nhập. v v GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 14 ThS. Nguyễn Tấn Trần Minh Khang
  15. Khoa CNTT LTHĐT 1. CHocSinh a,b,c; 2. a.Nhap(); 3. b.Nhap(); hoten a 4. c.Nhap(); toan van dtb void Nhap() void Xuat() void XuLy() c hoten hoten toan toan van van b dtb dtb GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 15 ThS. Nguyễn Tấn Trần Minh Khang
  16. Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 1: Định nghĩa phương thức nhập của lớp CHocSinh. 1. void CHocSinh::Nhap() 2. { 3. printf(“Nhap ho ten:”); 4. gets(hoten); 5. printf(“Nhap toan:”); 6. scanf(“%d”, &toan); 7. printf(“Nhap van:”); 8. scanf(“%d”, &van); 9. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 16 ThS. Nguyễn Tấn Trần Minh Khang
  17. Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 2: Định nghĩa phương thức XuLy của lớp CHocSinh. 1. void CHocSinh::XuLy() 2. { 3. dtb=(float)(toan+van)/2; 4. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 17 ThS. Nguyễn Tấn Trần Minh Khang
  18. Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 3: Định nghĩa phương thức Xuat của lớp CHocSinh. 1. void CHocSinh::Xuat() 2. { 3. printf(“\nHo ten:%s”, hoten); 4. printf(“\nToan: %d”,toan); 5. printf(“\nVan: %d”,van); 6. printf(“\nDTB: %f”,dtb); 7. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 18 ThS. Nguyễn Tấn Trần Minh Khang
  19. Khoa CNTT LTHĐT 5. CHƢƠNG TRÌNH ĐẦU TIÊN Bài toán: Viết chƣơng trình nhập họ tên, điểm toán, điểm văn của một học sinh. Tính điểm trung bình và xuất kết quả. Chƣơng trình GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 19 ThS. Nguyễn Tấn Trần Minh Khang
  20. Khoa CNTT LTHĐT 5. CHƢƠNG TRÌNH ĐẦU TIÊN 11. #include 12. #include 13. class CHocSinh 14. { 15. private: 16. char hoten[31]; 17. int toan; 18. int van; 19. float dtb; 20. public: 21. void Nhap(); 22. void Xuat(); 23. void XuLy(); 24. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 20 ThS. Nguyễn Tấn Trần Minh Khang
  21. Khoa CNTT LTHĐT 5. CHƢƠNG TRÌNH ĐẦU TIÊN 11. void main() 12. { 13. CHocSinh hs; 14. hs.Nhap(); 15. hs.XuLy(); 16. hs.Xuat(); 17. } 18. void CHocSinh::Xuat() 19. { 20. printf(“\nHo ten:%s”, hoten); 21. printf(“\nToan: %d”,toan); 22. printf(“\nVan: %d”,van); 23. printf(“\nDTB: %f”,dtb); 24. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 21 ThS. Nguyễn Tấn Trần Minh Khang
  22. Khoa CNTT LTHĐT 5. CHƢƠNG TRÌNH ĐẦU TIÊN 11. void CHocSinh::Nhap() 12. { 13. printf(“Nhap ho ten:”); 14. gets(hoten); 15. printf(“Nhap toan:”); 16. scanf(“%d”, &toan); 17. printf(“Nhap van:”); 18. scanf(“%d”, &van); 19. } 20. void CHocSinh::XuLy() 21. { 22. dtb=(float)(toan+van)/2; 23. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 22 ThS. Nguyễn Tấn Trần Minh Khang
  23. Khoa CNTT LTHĐT 6. ỨNG DỤNG 6.1 Ứng dụng 1: Viết chƣơng trình nhập vào một phân số. Rút gọn phân số đó và xuất kết quả. Chƣơng trình GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 23 ThS. Nguyễn Tấn Trần Minh Khang
  24. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. #include 12. #include 13. class CPhanSo 14. { 15. private: 16. int tu; 17. int mau; 18. public: 19. void Nhap(); 20. void Xuat(); 21. void RutGon(); 22. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 24 ThS. Nguyễn Tấn Trần Minh Khang
  25. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. void main() 12. { 13. CPhanSo ps; 14. ps.Nhap(); 15. ps.RutGon(); 16. ps.Xuat(); 17. } 18. void CPhanSo::Nhap() 19. { 20. printf(“Nhap tu: ”); 21. scanf(“%d”,&tu); 22. printf(“Nhap mau: ”); 23. scanf(“%d”,&mau); 24. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 25 ThS. Nguyễn Tấn Trần Minh Khang
  26. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. void CPhanSo::RutGon() 12. { 13. 14. 15. 16. 17. 18. 19. } 20. void CPhanSo::Xuat() 21. { 22. printf(“%d/%d”,tu,mau); 23. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 26 ThS. Nguyễn Tấn Trần Minh Khang
  27. Khoa CNTT LTHĐT 6. ỨNG DỤNG 6.2 Ứng dụng 2: Viết chƣơng trình nhập vào tọa độ 2 điểm trong mặt phẳng Oxy. Tính khoảng cách giữa chúng và xuất kết quả. Chƣơng trình GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 27 ThS. Nguyễn Tấn Trần Minh Khang
  28. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. #include 12. #include 13. #include 14. class CDiem 15. { 16. private: 17. float x; 18. float y; 19. public: 20. void Nhap(); 21. void Xuat(); 22. float KhoangCach(CDiem); 23. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 28 ThS. Nguyễn Tấn Trần Minh Khang
  29. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. void main() 12. { 13. CDiem A,B; 14. A.Nhap(); 15. B.Nhap(); 16. float kq = A.KhoangCach(B); 17. A.Xuat(); 18. B.Xuat(); 19. printf(“\n Khoang cach : %f”, kq); 20. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 29 ThS. Nguyễn Tấn Trần Minh Khang
  30. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. void CDiem::Nhap() 12. { 13. float temp; 14. printf(“Nhap x:”); 15. scanf(“%f”,&temp); 16. x = temp; 17. printf(“Nhap y:”); 18. scanf(“%f”,&temp); 19. y = temp; 20. } 21. void CDiem::Xuat() 22. { 23. printf(“(%f,%f)”,x,y); 24. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 30 ThS. Nguyễn Tấn Trần Minh Khang
  31. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 31 ThS. Nguyễn Tấn Trần Minh Khang
  32. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. void main() 12. { 13. CDiem A,B; 14. A.Nhap(); 15. B.Nhap(); 16. float kq = A.KhoangCach(B); 17. A.Xuat(); 18. B.Xuat(); 19. printf(“\n Khoang cach : %f”, kq); 20. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 32 ThS. Nguyễn Tấn Trần Minh Khang
  33. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. #include 12. #include 13. #include 14. class CDiem 15. { 16. private: 17. float x; 18. float y; 19. public: 20. void Nhap(); 21. void Xuat(); 22. float KhoangCach(CDiem); 23. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 33 ThS. Nguyễn Tấn Trần Minh Khang
  34. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 34 ThS. Nguyễn Tấn Trần Minh Khang
  35. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 35 ThS. Nguyễn Tấn Trần Minh Khang
  36. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 36 ThS. Nguyễn Tấn Trần Minh Khang
  37. Khoa CNTT LTHĐT 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } float kq = A.KhoangCach(B); float kq = B.KhoangCach(A); GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 37 ThS. Nguyễn Tấn Trần Minh Khang
  38. Khoa CNTT LTHĐT 7. BÀI TẬP VỀ NHÀ Làm tất cả các bài tập của chương 01 bằng phương pháp lập trình hướng đối tượng (9 bài). GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 38 ThS. Nguyễn Tấn Trần Minh Khang