Bài giảng Lập trình hướng đối tượng - Chương 13: Đa xạ-Phương thức ảo

pdf 21 trang phuongnguyen 2920
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 13: Đa xạ-Phương thức ảo", để 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_13_da_xa_phuong_t.pdf

Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 13: Đa xạ-Phương thức ảo

  1. Khoa CNTT LTHĐT Chương 13 ĐA XẠ-PHƯƠNG THỨC ẢO GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 1 ThS. Nguyễn Tấn Trần Minh Khang
  2. Khoa CNTT LTHĐT 1. MỤC TIÊU − Hiểu được cơ chế hoạt động của phương thức ảo. − Ứng dụng được phương thức ảo. − Thi cao học đề thi hay hỏi phần này. − Phỏng vấn xin việc người ta cũng rất hay hỏi. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 2 ThS. Nguyễn Tấn Trần Minh Khang
  3. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP − Hãy thực hiện đoạn chương trình dưới đây và cho biết kết quả của việc chạy chương trình trong bốn trường hợp: − Trường hợp 1: XXXX là khoảng trắng, YYYY là khoảng trắng. − Trường hợp 2: XXXX là virtual, YYYY là khoảng trắng. − Trường hợp 3: XXXX là khoảng trắng, YYYY là virtual. − Trường hợp 4: XXXX là virtual, YYYY là virtual. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 3 ThS. Nguyễn Tấn Trần Minh Khang
  4. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) 11. #include 12.class A 13.{ 14. public: 15. XXXX void Sketchy() 16. { 17. cout<<"\n A‘sSketchy()“; 18. Sketchy(-1); 19. } 20. YYYY void Sketchy(int num) 21. { 22. cout<<"\n A's Sketchy (int)”<< num; 23. } 24.}; GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 4 ThS. Nguyễn Tấn Trần Minh Khang
  5. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) 11.class B:public A 12.{ 13. public: 14. void Sketchy() 15. { 16. cout<<"\nB‘s Sketchy()“; 17. Sketchy(-2); 18. } 19. void Sketchy(int num) 20. { 21. cout<<"\n B's Sketchy (int)”<< num; 22. } 23.}; GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 5 ThS. Nguyễn Tấn Trần Minh Khang
  6. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) 1. class C:public B 2. { 3. public: 4. void Sketchy(int num) 5. { 6. cout Sketchy(); 12. ((C*)wacky)->Sketchy(123); 13.} GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 6 ThS. Nguyễn Tấn Trần Minh Khang
  7. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) 1. void main() 2. { 3. A* inky = new B; 4. inky->Sketchy(); 5. inky->Sketchy(23); 6. Curious(inky); 7. B* pinky = new C; 8. pinky->Sketchy(); 9. pinky->Sketchy(46); 10. Curious(pinky); 11. } GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 7 ThS. Nguyễn Tấn Trần Minh Khang
  8. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) A Sketchy() public Sketchy(int) B Sketchy() public Sketchy(int) C Sketchy() Sketchy(int) GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 8 ThS. Nguyễn Tấn Trần Minh Khang
  9. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) − Kết quả trường hợp 01 GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 9 ThS. Nguyễn Tấn Trần Minh Khang
  10. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) − Kết quả trường hợp 02 GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 10 ThS. Nguyễn Tấn Trần Minh Khang
  11. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) − Kết quả trường hợp 03 GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 11 ThS. Nguyễn Tấn Trần Minh Khang
  12. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP (tiếp) − Kết quả trường hợp 04 GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 12 ThS. Nguyễn Tấn Trần Minh Khang
  13. Khoa CNTT LTHĐT 3. KHÁI NIỆM − Khái niệm: Đa xạ là cơ chế tầm vực động, cho phép "xác định" đúng hành vi (phương thức) của đối tượng khi yêu cầu thực hiện. − Việc "xác định" được thực hiện theo nguyên tắc tự nhiên: đối tượng thuộc lớp nào sẽ gọi thực hiện phương thức của lớp đối tượng đó. − Tầm vực động là cơ chế gọi thực hiện phương thức thông qua con trỏ đối tượng. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 13 ThS. Nguyễn Tấn Trần Minh Khang
  14. Khoa CNTT LTHĐT 4. CÚ PHÁP ĐA XẠ 11. class CCoSo 12. { 13. private: 14. 15. protected: 16. 17. public: 18. 19. virtual KDL ( ); 20. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 14 ThS. Nguyễn Tấn Trần Minh Khang
  15. Khoa CNTT LTHĐT 4. CÚ PHÁP ĐA XẠ 11. class CDanXuat: CCoSo 12. { 13. private: 14. 15. protected: 16. 17. public: 18. 19. KDL ( ); 20. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 15 ThS. Nguyễn Tấn Trần Minh Khang
  16. Khoa CNTT LTHĐT 11. class CCoSo 12. { 13. private: 14. 15. protected: 16. 17. public: 18. 19. virtual KDL ( ); 20. }; 21. class CDanXuat: CCoSo 22. { 23. private: 24. 25. protected: 26. 27. public: 28. 29. KDL ( ); 30. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 16 ThS. Nguyễn Tấn Trần Minh Khang
  17. Khoa CNTT LTHĐT 4. CÚ PHÁP ĐA XẠ (tiếp) − Một phương thức được khai báo bắt đầu với từ khóa virtual thì được gọi là phương thức ảo và phương thức này được gọi thực hiện theo cơ chế đa xạ nếu lời gọi thực hiện phương thức được thông qua một con trỏ đối tượng. − Các phương thức ở lớp dẫn xuất cùng tên và cùng danh sách tham số đầu vào thì cũng sẽ là phương thức ảo nếu ở lớp cơ sở phương thức cùng tên và cùng tham số là phương thức ảo. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 17 ThS. Nguyễn Tấn Trần Minh Khang
  18. Khoa CNTT LTHĐT 5. BÀI TOÁN CHI TIẾT MÁY − Bài toán: Một cái máy có nhiều chi tiết. Mỗi chi tiết máy có thể là chi tiết đơn hoặc là chi tiết phức. + Chi tiết đơn: là chi tiết không chứa bên trong nó chi tiết khác. Thông tin của chi tiết đơn bao gồm: mã số chi tiết, giá tiền. + Chi tiết phức: là chi tiết chứa bên trong nó nhiều chi tiết thành phần, mỗi một chi tiết thành phần này có thể là chi tiết đơn hoặc là chi tiết phức. Thông tin của chi tiết phức bao gồm: mã số chi tiết, số lượng chi tiết thành phần, danh sách các chi tiết thành phần. Giá tiền của chi tiết phức bằng tổng giá tiền của các chi tiết thành phần. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 18 ThS. Nguyễn Tấn Trần Minh Khang
  19. Khoa CNTT LTHĐT 5. BÀI TOÁN CHI TIẾT MÁY (tiếp) − Yêu cầu: Thiết kế các lớp thích hợp để thực hiện các yêu cầu sau: + Nhập các chi tiết cho máy. + Tìm kiếm một chi tiết máy theo mã số. + Tính tiền cho một chi tiết máy, hoặc cho máy. + Xuất các chi tiết máy. + Đếm số lượng chi tiết đơn có trong cái máy. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 19 ThS. Nguyễn Tấn Trần Minh Khang
  20. Khoa CNTT LTHĐT 6. BÀI TOÁN TÍNH TIỀN LƯƠNG − Bài toán: Công ty ABC là công ty sản xuất kinh doanh thú nhồi bông. Công ty có nhiều nhân viên làm việc trong ba bộ phận khác nhau: bộ phận quản lý, bộ phận sản xuất, bộ phận văn phòng. Việc tính lương cho nhân viên dựa vào các yếu tố sau: + Đối với nhân viên văn phòng Lương = Lương Cơ Bản + Số ngày làm việc *100.000 + Trợ Cấp + Đối với nhân viên sản xuất Lương = Lương Cơ Bản + Số Sản Phẩm * 2.000 + Đối với nhân viên quản lý Lương = Lương Cơ Bản* Hệ số chức vụ + Thưởng. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 20 ThS. Nguyễn Tấn Trần Minh Khang
  21. Khoa CNTT LTHĐT 6. BÀI TOÁN TÍNH TIỀN LƯƠNG (tiếp) + Ngoài ra công ty cần quản lý các thông tin về nhân viên của mình như: họ tên, ngày sinh và các thông số trên để tính lương cho từng nhân viên trong công ty. − Yêu cầu: Thiết kế các lớp thích hợp để thực hiện các yêu cầu sau: + Nhập thông tin của các nhân viên để phục vụ cho việc tính lương. + Thực hiện việc tính lương cho từng nhân viên. + Xuất thông tin của các nhân viên. + Tính tổng lương của công ty. + Tìm kiếm một nhân viên theo họ tên. GV. Nguy ễn Sơn Hoàng Quốc Chương 13 - 21 ThS. Nguyễn Tấn Trần Minh Khang