Giáo trình Hệ điều hành - Chương 3: Lập trình hướng đối tượng với C++(Tiếp theo) - Nguyễn Sơn Hoàng Quốc
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++(Tiếp theo) - 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:
- giao_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++(Tiếp theo) - Nguyễn Sơn Hoàng Quốc
- Khoa CNTT LTHĐT Chƣơng 3 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG VỚI C++ (tiếp theo) GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 1 ThS. Nguyễn Tấn Trần Minh Khang
- 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
- Khoa CNTT LTHĐT 1. PHƢƠNG PHÁP LẬP TRÌNH HƢỚNG ĐÔ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 - 3 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 1. PHƢƠNG PHÁP LẬP TRÌNH HƢỚNG ĐÔI TƢỢNG 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 - 4 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 1. PHƢƠNG PHÁP LẬP TRÌNH HƢỚNG ĐÔI TƢỢNG 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 - 5 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 1. PHƢƠNG PHÁP LẬP TRÌNH HƢỚNG ĐÔI TƢỢNG 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 - 6 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 1. PHƢƠNG PHÁP LẬP TRÌNH HƢỚNG ĐÔI TƢỢNG 1. struct DIEM 2. { Thành phần dữ liệu 3. float x; 4. float y; Có cách nào tích 5. }; hợp hai thành phần này lại ? 6. class CDiem 7. { Thành phần xử 8. public: lý 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
- Khoa CNTT LTHĐT 2. CHUẨN HÓA DỮ LIỆU 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 - 8 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 2. CHUẨN HÓA DỮ LIỆU 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 - 9 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 2. CHUẨN HÓA DỮ LIỆU 1. void CDiem::Xuat(DIEM* d) 2. { 3. printf("x = %f", (*d).x); 4. printf("y = %f", (*d).y); 5. } 6. Viết gọn 7. void CDiem::Xuat(DIEM* d) 8. { 9. printf("x = %f", d->x); 10. printf("y = %f", d->y); 11. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 10 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 2. CHUẨN HÓA DỮ LIỆU 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 - 11 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 3. 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 - 12 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 3. LỚP ĐỐI TƢỢNG 1. class CDiem 2. { 3. private: 4. float x; 5. float y; 6. public: 7. void Nhap(); 8. void Xuat(); 9. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 13 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG Khái niệm: Đối tƣợng (object) 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 - 14 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 4. ĐỐI TƢỢNG Ví dụ 1: CDiem d; Trong ví dụ trên ta nói d là một đối tượng thuộc về lớp đối tượng CDiem. Ví dụ 2: CDiem A, B; CDiem Z; Trong ví dụ trên ta nói A, B, Z là ba đối tượng thuộc về lớp đối tượng CDiem. Nói một cách khác: Lớp đối tượng CDiem có ba sự thể hiện khác nhau. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 15 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 5. PHƢƠNG THỨC Khái niệm: Phương thức (method) 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 - 16 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 5. PHƢƠNG THỨC 1. void CDiem::Xuat() 2. { 3. printf("x=%f", this->x); 4. printf("y=%f", this->y); 5. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 17 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 5. PHƢƠNG THỨC Miền giá trị của một biến con trỏ là địa chỉ ô nhớ. Miền giá trị của một con trỏ đối tượng là địa chỉ ô nhớ. Bên trong thân của một phương thức, this là một con trỏ đối tượng thuộc về lớp mà phương thức đó thuộc về. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 18 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 5. PHƢƠNG THỨC Bên trong thân của một phương thức, this là một con trỏ đối tượng thuộc về lớp mà phương thức đó thuộc về. Ví dụ 01: Bên trong thân phương thức xuất của lớp CDiem, this là con trỏ đối tượng thuộc về lớp CDiem. Ví dụ 02: Bên trong thân phương thức nhap của lớp CPhanSo, this là con trỏ đối tượng thuộc về lớp CPhanSo. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 19 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 5. PHƢƠNG THỨC Bên trong thân phương thức của một lớp, this là một con trỏ đối tượng giữ địa chỉ của đối tượng đang gọi thực hiện phương thức. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 20 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 5. PHƢƠNG THỨC 1. void CDiem::Xuat() 2. { 3. printf("x=%f", this->x); 4. printf("y=%f", this->y); 5. } Viết tắt 1. void CDiem::Xuat() 2. { 3. printf("x=%f", x); 4. printf("y=%f", y); 5. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 21 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 5. PHƢƠNG THỨC 1. void CDiem::Nhap() 2. { 3. printf("Nhap x : "); 4. scanf("%f", &x); 5. printf("Nhap y : "); 6. scanf("%f", &y); 7. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 22 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 6. ĐỐ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. CDiem d; 2. d.Nhap(); GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 23 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 6. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 1: 1. CDiem d; 2. d.Nhap(); Trong câu lệnh thứ hai của đoạn chương trình trên ta nói: đối tƣợng d gọi thực hiện phƣơng thức Nhập. GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 24 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 6. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 2: 1. CDiem 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 - 25 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 1. CDiem a,b,c; 2. a.Nhap(); 3. b.Nhap(); x a 4. c.Nhap(); y void Nhap() void Xuat() c x x y y b GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 26 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 6. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 1: Định nghĩa phương thức nhập của lớp CDiem. 1. void CDiem::Nhap() 2. { 3. printf("Nhap toan:"); 4. scanf("%f", &x); 5. printf("Nhap van:"); 6. scanf("%f", &x); 7. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 27 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 6. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 2: Định nghĩa phương thức Xuat của lớp CDiem. 1. void CDiem::Xuat() 2. { 3. printf("x=%f", this->x); 4. printf("y=%f", y); 5. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 28 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 7. CHƢƠNG TRÌNH 1. class CDiem 2. { 3. private: 4. float x; 5. float y; 6. public: 7. void Nhap(); 8. void Xuat(); 9. }; GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 29 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 7. CHƢƠNG TRÌNH 1. void main() 2. { 3. CDiem d; 4. d.Nhap(); 5. d.Xuat(); 6. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 30 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 7. CHƢƠNG TRÌNH 1. void CDiem::Xuat() 2. { 3. printf("x=%f", x); 4. printf("y=%f", y); 5. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 31 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 7. CHƢƠNG TRÌNH 1. void CDiem::Nhap() 2. { 3. printf("Nhap x : "); 4. scanf("%f", &x); 5. printf("Nhap y : "); 6. scanf("%f", &y); 7. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 32 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. ỨNG DỤNG Ứ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 - 33 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 34 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 35 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. ỨNG DỤNG 11. void CDiem::Nhap() 12. { 13. printf("Nhap x:"); 14. scanf("%f",&x); 15. printf("Nhap y:"); 16. scanf("%f",&x); 17. } 18. void CDiem::Xuat() 19. { 20. printf("(%f,%f)",x,y); 21. } GV. Nguyễn Sơn Hoàng Quốc Chương 03 - 36 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 37 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 38 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 39 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 40 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 41 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 42 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 8. Ứ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 - 43 ThS. Nguyễn Tấn Trần Minh Khang
- Khoa CNTT LTHĐT 9. 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 - 44 ThS. Nguyễn Tấn Trần Minh Khang
- 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_Tuan04. 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 - 45 ThS. Nguyễn Tấn Trần Minh Khang