Bài giảng Phương pháp lập trình hướng đối tượng - Template, thư viện C++ - Nguyễn Minh Huy
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp lập trình hướng đối tượng - Template, thư viện C++ - Nguyễn Minh Huy", để 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:
bai_giang_phuong_phap_lap_trinh_huong_doi_tuong_template_thu.ppt
Nội dung text: Bài giảng Phương pháp lập trình hướng đối tượng - Template, thư viện C++ - Nguyễn Minh Huy
- Template, Thư viện C++ Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 1
- Nội dung ◼ Function Template. ◼ Class Template. ◼ Thư viện C++. ◼ Bài tập. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 2
- Nội dung ◼ Function Template. ◼ Class Template. ◼ Thư viện C++. ◼ Bài tập. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 3
- Function Template ◼ Xét hàm tìm min giữa 2 số: int timMin(int a, int b) { Tìm min return (a < b) ? a : b; } hai số thực? float timMin(float a, float b) { Tìm min return (aDùng < b) ? a : Functionb; Template!! } hai phân số? PhanSo timMin(PhanSo a, PhanSo b) { Có cách nào return (a < b) ? a : b; đơn giản } hơn? Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 4
- Function Template ◼ Hàm tìm min dùng Function Template: template T timMin(T a, T b) void main() { { return (a < b) ? a : b; int a = 5, b = 3; } int c = timMin(a, b); float d = timMin(1.5, 2.3); PhanSo p1(1, 2); PhanSo p2(1, 3); PhanSo p3 = timMin(p1, p2); } Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 5
- Function Template ◼ Đặc điểm của Function Template: ◼ Hàm tổng quát cho nhiều kiểu dữ liệu khác nhau. ◼ Tham số hóa kiểu dữ liệu. ◼ Kiểu cụ thể được quyết định khi gọi hàm. ◼ Ghi chú: ◼ Từ khóa “class” có thể thay bằng “typename”. ◼ Phần khai báo và cài đặt đều có khai báo template. ◼ Phần cài đặt hàm phải nằm cùng file: ➢ Phần khai báo hàm. ➢ Phần gọi sử dụng hàm. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 6
- Nội dung ◼ Function Template. ◼ Class Template. ◼ Thư viện C++. ◼ Bài tập. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 7
- Class Template ◼ Xét lớp đối tượng Mang: class MangNguyen { private: int m_kichThuoc; int *m_duLieu; Mảng public: phân số? Mang(int kichThuoc); int layPhanTu(int viTri); }; Dùng Class Template!! class MangPhanSo { private: int m_kichThuoc; Có cách nào PhanSo *m_duLieu; đơn giản public: hơn? Mang(int kichThuoc); PhanSo layPhanTu(int viTri); }; Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 8
- Class Template ◼ Lớp Mang dùng Class Template: template class Mang void main() { { private: Mang m1(10); int m_kichThuoc; int a = m1.layPhanTu(5); T *m_duLieu; public: Mang m2(5); Mang(int kichThuoc); PhanSo p = m2.layPhanTu(2); T layPhanTu(int viTri); } }; Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 9
- Class Template ◼ Đặc điểm của Class Template: ◼ Lớp tổng quát cho nhiều kiểu dữ liệu khác nhau. ◼ Tham số hóa kiểu dữ liệu. ◼ Kiểu cụ thể được truyền vào khi tạo đối tượng. ◼ Ghi chú: ◼ Từ khóa “class” có thể thay bằng “typename”. ◼ Phần cài đặt lớp phải nằm cùng file: ➢ Phần khai báo lớp. ➢ Phần tạo và sử dụng đối tượng của lớp. ➔ Viết cài đặt bên trong lớp khi dùng Template. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 10
- Nội dung ◼ Function Template. ◼ Class Template. ◼ Thư viện C++. ◼ Bài tập. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 11
- Thư viện C++ ◼ Khái niệm thư viện: ◼ Tập hợp những lớp, hàm có sẵn giúp giải quyết công việc thường gặp. ◼ Bộ công cụng hữu ích của lập trình viên. ◼ Một vài thư viện C++: ➢ Thư viện chuẩn (C++ Standard Library). ➢ Thư viện boost. ➢ Thư viện MFC (Microsoft Foundation Classes). Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 12
- Thư viện C++ ◼ Thư viện chuẩn: ◼ Thư viện cơ bản nhất của C++. ◼ Các lớp và hàm nằm trong namespace std. ◼ File Header không .h. ◼ Phân nhóm: ➢ Nhóm nhập xuất: iostream, iomanip, fstream, ➢ Nhóm STL. ➢ ➢ Thư viện chuẩn C: file header cxxx. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 13
- Thư viện C++ ◼ Thư viện STL (Standard Template Library): ◼ Một phần của thư viện chuẩn. ◼ Các lớp và hàm hỗ trợ lập trình với template. ◼ Phân nhóm: ➢ Nhóm container: vector, list, deque, set, ➢ Nhóm string: string, ➢ Nhóm iterator. ➢ Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 14
- Thư viện C++ ◼ Lớp string: ◼ File header . ◼ Lớp đại diện cho các đối tượng chuỗi. ◼ Giải quyết 3 vấn đề con trỏ. ◼ Các phương thức chính: ➢ string(char *): khởi tạo từ một chuỗi ký tự. ➢ length(): lấy chiều dài chuỗi. ➢ Toán tử [ ]: lấy ký tự tại một vị trí nào đó. ➢ Toán tử >, =, <=, !=: so sánh theo thứ tự từ điển. ➢ Toán tử +, +=: nối chuỗi. ➢ find(char *): tìm chuỗi con. ➢ substr(int, int): lấy chuỗi con. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 15
- Thư viện C++ ◼ Ví dụ lớp string: void main() { string s1(“software”); string s2(“SoftWare”); if (s1 == s2) cout << “equal.” << endl; else cout << “not equal.” << endl; s2 = s1.substr(4, 4); cout << s2; string s3 = s1 + s2; cout << s3 << endl; } Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 16
- Thư viện C++ ◼ Lớp vector: ◼ File header . ◼ Lớp mảng kiểu T. ◼ Giải quyết 3 vấn đề con trỏ. ◼ Các phương thức chính: ➢ vector (): khởi tạo mảng kiểu T. ➢ size(): lấy kích thước mảng. ➢ push_back(T): thêm phần tử vào cuối mảng. ➢ Toán tử [ ]: lấy phần tử tại một vị trí nào đó. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 17
- Thư viện C++ ◼ Ví dụ: void main() { vector v1; v1.push_back(1); v1.push_back(2); for (int i = 0; i v2; v2.push_back(new PhanSo(2, 6)); v2[0]->rutGon(); } Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 18
- Tóm tắt ◼ Template: ◼ Cách thức tham số hóa kiểu dữ liệu. ◼ Cho phép lập trình trên kiểu dữ liệu tổng quát. ◼ Function template: ➢ Hàm tổng quát cho nhiều kiểu dữ liệu khác nhau. ➢ Kiểu cụ thể được quyết định khi gọi hàm. ◼ Class template: ➢ Lớp tổng quát cho nhiều kiểu dữ liệu khác nhau. ➢ Kiểu cụ thể được truyền vào khi tạo đối tượng từ lớp. ◼ Phần cài đặt nằm cùng file: ➢ Phần khai báo. ➢ Phần sử dụng. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 19
- Tóm tắt ◼ Thư viện C++: ◼ Bộ công cụ hỗ trợ lập trình. ◼ Thư viện chuẩn: ➢ Thư viện STL. ◼ Thư viện boost. ◼ Thư viện MFC. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 20
- Nội dung ◼ Template. ◼ Thư viện C++. ◼ Bài tập. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 21
- Bài tập ◼ Bài tập 6.1: Liệt kê 5 lớp và cho biết tính năng của từng lớp trong các thư viện: ◼ STL. ◼ MFC. ◼ boost. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 22
- Bài tập ◼ Bài tập 6.2: Xây dựng lớp mảng kiểu dữ liệu bất kỳ. (Gợi ý) ◼ Dùng class template khai báo lớp mảng. ◼ Dữ liệu mảng kiểu T. ◼ Các phương thức thao tác dữ liệu mảng dùng function template. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 23
- Bài tập ◼ Bài tập 6.3: Xây dựng lớp con trỏ an toàn cho mọi kiểu dữ liệu: (Nhóm tạo hủy) ◼ Khởi tạo mặc định con trỏ NULL. ◼ Khởi tạo với kích thước bộ nhớ được cấp phát cho trước. ◼ Khởi tạo từ một đối tượng con trỏ khác. ◼ Hủy con trỏ, thu hồi bộ nhớ. (Nhóm toán tử) ◼ Toán tử số học: +, -, =. ◼ Toán tử một ngôi: ++, . ◼ Toán tử con trỏ: *, &, [ ]. ◼ Toán tử ép kiểu: (int). ◼ Toán tử cấp phát và hủy vùng nhớ: new, delete. Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy 24