Bài giảng Lập trình hướng đối tượng - Chương 4: Sơ lược thư viện iostream.h

pdf 28 trang phuongnguyen 2840
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 4: Sơ lược thư viện iostream.h", để 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_4_so_luoc_thu_vie.pdf

Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 4: Sơ lược thư viện iostream.h

  1. Khoa CNTT LTHĐT Chƣơng 4 SƠ LƢỢC THƢ VIỆN IOSTREAM.H GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 1 ThS. Nguyễn Tấn Trần Minh Khang
  2. Khoa CNTT LTHĐT 1. VÍ DỤ DẪN NHẬP 1 Bài toán: Viết lệnh nhập giá trị cho một số nguyên a và xuất số nguyên ra màn hình bằng cách sử dụng thư viện iostream.h Phong cách cũ 1. int a; 2. printf(“Nhap mot so nguyen:”); 3. scanf(“%d”,&a); 4. printf(“So nguyen vua nhap:%d”,a); Đoạn chương trình với thư viện iostream.h 1. int a; 2. cout >a; 4. cout<<“So nguyen vua nhap:”<<a; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 2 ThS. Nguyễn Tấn Trần Minh Khang
  3. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 Bài toán: Viết hàm nhập thông tin của một phân số bằng cách sử dụng thư viện iostream.h Cấu trúc dữ liệu 1. struct phanso 2. { 3. int tu; 4. int mau; 5. }; 6. typedef struct phanso PHANSO; Định nghĩa hàm GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 3 ThS. Nguyễn Tấn Trần Minh Khang
  4. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 (tiếp) Định nghĩa hàm 11. void Nhap(PHANSO &x) 12. { 13. cout >x.tu; 15. cout >x.mau; 17. } 18. void Xuat(PHANSO x) 19. { 20. cout<<x.tu<<“/”<<x.mau; 21. } GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 4 ThS. Nguyễn Tấn Trần Minh Khang
  5. Khoa CNTT LTHĐT 3. ĐẶT VẤN ĐỀ Nhập xuất một đối tượng phân số 1. CPhanSo a; 2. a.Nhap(); 3. a.Xuat(); Nhập, xuất một đối tượng phân số với thư viện iostream.h 1. CPhanSo a; 2. cin>>a; Làm sao? 3. cout > được gọi là toán tử vào. Ký hiệu << được gọi là toán tử ra. GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 5 ThS. Nguyễn Tấn Trần Minh Khang
  6. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ Để giải quyết vấn đề trên ta phải định nghĩa  Toán tử vào (operator>>)  Toán tử ra (operator <<) cho lớp đối tượng CPhanSo. Ngoài ra, trong khi giải quyết vấn đề này ta còn sử dụng kỹ thuật hàm bạn (friend function) của phương pháp lập trình hướng đối tượng. Một “hàm bạn” của lớp đối tượng được phép truy xuất đến tất cả các thành phần của đối tượng thuộc về lớp đó bất chấp thành phần được khai báo trong phạm vi nào. GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 6 ThS. Nguyễn Tấn Trần Minh Khang
  7. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 7 ThS. Nguyễn Tấn Trần Minh Khang
  8. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 8 ThS. Nguyễn Tấn Trần Minh Khang
  9. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 9 ThS. Nguyễn Tấn Trần Minh Khang
  10. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 10 ThS. Nguyễn Tấn Trần Minh Khang
  11. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 11 ThS. Nguyễn Tấn Trần Minh Khang
  12. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 12 ThS. Nguyễn Tấn Trần Minh Khang
  13. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 13 ThS. Nguyễn Tấn Trần Minh Khang
  14. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 14 ThS. Nguyễn Tấn Trần Minh Khang
  15. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 15 ThS. Nguyễn Tấn Trần Minh Khang
  16. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 16 ThS. Nguyễn Tấn Trần Minh Khang
  17. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 17 ThS. Nguyễn Tấn Trần Minh Khang
  18. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Định nghĩa toán tử vào 1. istream& operator >>(istream &is, CPhanSo &x) 2. { 3. cout > x.tu; 5. cout > x.mau; 7. return is; 8. } GV. Nguyễn SơnTại Hoàng sao Quốcphải trả về một đối Chương 04 - 18 ThS. Nguyễn Tấtượngn Trần Mthuộcinh K lớphang istream?
  19. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 19 ThS. Nguyễn Tấn Trần Minh Khang
  20. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Định nghĩa toán tử ra 1. ostream& operator <<(ostream &os, CPhanSo &x) 2. { 3. os<< x.tu<<“/”<<x.mau; 4. return os; 5. } Tại sao phải trả về một đối tượng thuộc lớp ostream? GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 20 ThS. Nguyễn Tấn Trần Minh Khang
  21. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ (tiếp) Khai báo lớp 11. class CPhanSo 12. { 13. private: 14. int tu; 15. int mau; 16. public: 17. friend istream& operator >> 18. (istream &is,CPhanSo &x); 19. friend ostream& operator << 20. (ostream &os,CPhanSo &x); 21. }; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 21 ThS. Nguyễn Tấn Trần Minh Khang
  22. Khoa CNTT LTHĐT 5. HƢỚNG DẪN SỬ DỤNG 1 Hãy xem xét đoạn chương trình sau: 1. CPhanSo a; 2. cin >> a; 3. cout > được gọi thực hiện với 2 đối số là cin và đối tượng a. Trong câu lệnh thứ ba của đoạn chương trình trên ta nói: hàm operator << được gọi thực hiện với 2 đối số là cout và đối tượng a. GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 22 ThS. Nguyễn Tấn Trần Minh Khang
  23. Khoa CNTT LTHĐT 6. HƢỚNG DẪN SỬ DỤNG 2 Hãy xem xét đoạn chương trình sau: 1. CPhanSo a,b,c; 2. cin >>a >>b >>c; 3. cout > được gọi thực hiện 3 lần. Trong câu lệnh thứ ba của đoạn chương trình trên ta nói: hàm operator << được gọi thực hiện 3 lần. GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 23 ThS. Nguyễn Tấn Trần Minh Khang
  24. Khoa CNTT LTHĐT 7. ỨNG DỤNG Yêu cầu: Hãy định nghĩa toán tử vào và toán tử ra cho lớp đối tượng CNgay. GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 24 ThS. Nguyễn Tấn Trần Minh Khang
  25. Khoa CNTT LTHĐT 7. ỨNG DỤNG (tiếp) Khai báo lớp 11. class CNgay 12.{ 13. private: 14. int ng; 15. int th; 16. int nm; 17. public: 18. friend istream& operator >> 19. (istream &is,CNgay &x); 20. friend ostream& operator << 21. (ostream &os,CNgay &x); 22.}; GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 25 ThS. Nguyễn Tấn Trần Minh Khang
  26. Khoa CNTT LTHĐT 7. ỨNG DỤNG (tiếp) Định nghĩa toán tử vào 11. istream& operator >> (istream &is,CNgay &x) 12.{ 13. cout > x.ng; 15. cout > x.th; 17. cout > x.nm; 19. return is; 20.} GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 26 ThS. Nguyễn Tấn Trần Minh Khang
  27. Khoa CNTT LTHĐT 7. ỨNG DỤNG (tiếp) Định nghĩa toán tử ra 1. ostream& operator << (ostream &os,CNgay&x) 2. { 3. os<<x.ng<<“/”<< 4. x.th<<“/”<< 5. x.nm; 6. return os; 7. } GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 27 ThS. Nguyễn Tấn Trần Minh Khang
  28. Khoa CNTT LTHĐT 8. BÀI TẬP VỀ NHÀ Hãy khai báo và định nghĩa hàm toán tử vào và hàm toán tử ra cho các lớp đối tượng sau: 1. Lớp phân số (CPhanSo) 2. Lớp điểm (CDiem) 3. Lớp ngày (CNgay) 4. Lớp thời gian (CThoiGian) 5. Lớp đơn thức (CDonThuc) 6. Lớp điểm không gian (CDiemKhongGian) 7. Lớp đường thẳng (CDuongThang) 8. Lớp hỗn số (CHonSo) 9. Lớp số phức (CSoPhuc) 10. Lớp đường tròn (CDuongTron) 11. Lớp lớp tam giác (CTamGiac) 12. Lớp hình cầu (CHinhCau) GV. Nguyễn Sơn Hoàng Quốc Chương 04 - 28 ThS. Nguyễn Tấn Trần Minh Khang