Giáo trình Hệ điều hành - Chương 3: Lập trình hướng đối tượng với C++ - Nguyễn Sơn Hoàng Quốc

pdf 24 trang huongle 2840
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành - Chương 3: Lập trình hướng đối tượng với C++ - Nguyễn Sơn Hoàng Quố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:

  • pdfgiao_trinh_he_dieu_hanh_chuong_3_lap_trinh_huong_doi_tuong_v.pdf

Nội dung text: Giáo trình Hệ điều hành - Chương 3: Lập trình hướng đối tượng với C++ - Nguyễn Sơn Hoàng Quố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 vào một điểm trong mặt phẳng và xuất điểm đó ra màn hình. 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. PHƢƠNG PHÁP LẬP TRÌNH ĐƠN THỂ 1. #include 2. #include 3. struct DIEM 4. { 5. float x; 6. float y; 7. }; 8. void Nhap(DIEM&); 9. void Xuat(DIEM); 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. PHƢƠNG PHÁP LẬP TRÌNH ĐƠN THỂ 1. void main() 2. { 3. DIEM d; 4. Nhap(d); 5. Xuat(d); 6. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 4 ThS. Nguyễn Tấn Trần Minh Khang
  5. Khoa CNTT LTHĐT 1. PHƢƠNG PHÁP LẬP TRÌNH ĐƠN THỂ 1. void Nhap(DIEM& d) 2. { 3. printf("x : "); 4. scanf("%f", &d.x); 5. printf("y : "); 6. scanf("%f", &d.y); 7. } 8. void Xuat(DIEM d) 9. { 10. printf("x : %f", d.x); 11. printf("y : %f", d.y); 12. } 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. LỚP ĐỐI TƢỢNG Khái niệm: Lớp đối tƣợng (class) 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 - 6 ThS. Nguyễn Tấn Trần Minh Khang
  7. Khoa CNTT LTHĐT 2. LỚP ĐỐI TƢỢNG 1. struct DIEM 2. { 3. float x; 4. float y; 5. }; 6. class CDiem 7. { 8. public: 9. static void Nhap(DIEM&); 10. static void Xuat(DIEM); 11. }; 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 PHƢƠNG THỨC TĨNH Phƣơng thức tĩnh (static method) có vai trò gần giống như một hàm/thủ tục ở phương pháp lập trình hướng đơn thể Thông thường một phương thức tĩnh được khai báo trong phạm vi là public. Cú pháp định nghĩa phương thức tĩnh 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 TĨNH Ví dụ 1: Định nghĩa phương thức tĩnh nhập của lớp CDiem. 1. void CDiem::Nhap(DIEM& d) 2. { 3. printf("Nhap x : "); 4. scanf("%f", &d.x); 5. printf("Nhap y : "); 6. scanf("%f", &d.y); 7. } 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 TĨNH Ví dụ 1: Định nghĩa phương thức tĩnh xuất của lớp CDiem. 1. void CDiem::Xuat(DIEM d) 2. { 3. printf("x = %f", d.x); 4. printf("y = %f", d.y); 5. } 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 TĨNH Cách gọi phƣơng thức tĩnh Giống như cách gọi hàm/thủ tục nhưng theo cú pháp của lập trình hướng đối tượng. Cú pháp CTenLop::TenPhuongThuc ( ) 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 3. PHƢƠNG THỨC TĨNH Cú pháp CTenLop::TenPhuongThuc ( ) - Ví dụ DIEM d; Ví dụ 1: CDiem::Nhap(d); Trong ví dụ trên ta nói phương thức tĩnh nhập của lớp CDiem được gọi thực hiện với đối số là d. Ví dụ 2: CDiem::Xuat(d); Trong ví dụ trên ta nói phương thức tĩnh xuất của lớp CDiem được gọi thực hiện với đối số là d. 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 CHƢƠNG TRÌNH ĐẦU TIÊN 1. struct DIEM 2. { 3. float x; 4. float y; 5. }; 6. class CDiem 7. { 8. public: 9. static void Nhap(DIEM&); 10. static void Xuat(DIEM); 11. }; 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 CHƢƠNG TRÌNH ĐẦU TIÊN 1. void main() 2. { 3. DIEM d; 4. CDiem::Nhap(d); 5. CDiem::Xuat(d); 6. } 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 CHƢƠNG TRÌNH ĐẦU TIÊN 1. void CDiem::Nhap(DIEM& d) 2. { 3. printf("Nhap x : "); 4. scanf("%f", &d.x); 5. printf("Nhap y : "); 6. scanf("%f", &d.y); 7. } 8. void CDiem::Xuat(DIEM d) 9. { 10. printf("x = %f", d.x); 11. printf("y = %f", d.y); 12. } 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 CHƢƠNG TRÌNH ĐẦU TIÊN 1. void CDiem::Xuat(DIEM d) 2. { 3. printf("x = %f", d.x); 4. printf("y = %f", d.y); 5. } 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 THUỘC TÍNH TĨNH Thuộc tĩnh (static attribute) có vai trò gần giống như biến toàn cục ở phương pháp lập trình hướng đơn thể Thông thường một thuộc tính tĩnh được khai báo trong phạm vi là private. Thuộc tính tĩnh cũng phải được khai báo và định nghĩa giống như phương thức tĩnh. Cú pháp định nghĩa thuộc tính tĩnh 1. KDL CTenLop:: TenThuocTinh=GiaTri; 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 THUỘC TÍNH TĨNH Cú pháp định nghĩa thuộc tính tĩnh 1. KDL CTenLop:: TenThuocTinh=GiaTri; - Ví dụ - Khai báo 1. class A 2. { 3. private: 4. static int a; 5. }; - Định nghĩa 6. int A::a = 2; 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 2. TỪ KHÓA PHẠM VI Có hai loại từ khóa phạm vi: private public Tầm vực private: Những thành phần được khai báo trong phạm vi private chỉ được truy xuất ở bên trong lớp mà thôi và không được truy xuất ở bên ngoài lớp Tầm vực public: Những thành phần được khai báo trong phạm vi public được truy xuất ở cả bên trong lẫn bên ngoài lớp 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 7. PHẠM VI TRUY XUẤT Ví dụ: Hãy cho biết trong đoạn chương trình sau câu lệnh nào đúng, câu lệnh nào sai. 1. class A 2. { 3. private: 4. static int a; 5. static void f(); 6. public: 7. static int b; 8. static void g(); 9. }; 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 7. PHẠM VI TRUY XUẤT 10. int A::a = 5; 11. int A::b = 6; 12. void A::f() 13. { 14. A::a = 1; // gọi tắt a=1 15. A::b = 2; 16. A::g(); // gọi tắt g() 17. } 18. void A::g() 19. { 20. A::a = 4; 21. A::b = 5; 22. } 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 7. PHẠM VI TRUY XUẤT 31. void main() 32. { 33. A::a = 10; 34. A::f(); 35. A::b = 20; 36. A::g(); 37. } 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 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 - 23 ThS. Nguyễn Tấn Trần Minh Khang
  24. Khoa CNTT LTHĐT 9. BÀI TẬP Yêu cầu chung: Làm tất cả các bài tập trong một workspace có tên là MSSV_Tuan03. Trong workspace có 9 project tương ứng với từng bài tập. Tên tương ứng như sau: • BT01 • BT02 • Nộp bài tập lên hệ thống Moodle theo qui định. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 24 ThS. Nguyễn Tấn Trần Minh Khang