Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
492,5 KB
Nội dung
1Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Template, Template, Thư viện C++ Thư viện C++ 2 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Function Template. Function Template. Class Template. Class Template. Thư viện C++. Thư viện C++. Bài tập. Bài tập. 3 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Function Template. Function Template. Class Template. Class Template. Thư viện C++. Thư viện C++. Bài tập. Bài tập. 4 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Function Template Function Template Xét hàm tìm min giữa 2 số: Xét hàm tìm min giữa 2 số: int timMin(int a, int b) int timMin(int a, int b) { { return (a < b) ? a : b; return (a < b) ? a : b; } } float timMin(float a, float b) float timMin(float a, float b) { { return (a < b) ? a : b; return (a < b) ? a : b; } } PhanSo timMin(PhanSo a, PhanSo b) PhanSo timMin(PhanSo a, PhanSo b) { { return (a < b) ? a : b; return (a < b) ? a : b; } } Tìm min hai số thực? Tìm min hai số thực? Tìm min hai phân số? Tìm min hai phân số? Có cách nào đơn giản hơn? Có cách nào đơn giản hơn? Dùng Function Template!! Dùng Function Template!! 5 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Function Template Function Template Hàm tìm min dùng Function Template: Hàm tìm min dùng Function Template: template <class T> template <class T> T T timMin( timMin( T T a, a, T T b) b) { { return (a < b) ? a : b; return (a < b) ? a : b; } } void main() void main() { { int a = 5, b = 3; int a = 5, b = 3; int c = int c = timMin(a, b); timMin(a, b); float d = float d = timMin(1.5, 2.3); timMin(1.5, 2.3); PhanSo p1(1, 2); PhanSo p1(1, 2); PhanSo p2(1, 3); PhanSo p2(1, 3); PhanSo p3 = PhanSo p3 = timMin(p1, p2); timMin(p1, p2); } } 6 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Function Template Function Template Đặc điểm của 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. 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. Tham số hóa kiểu dữ liệu. Kiểu cụ thể được quyết định khi gọi hàm. Kiểu cụ thể được quyết định khi gọi hàm. Ghi chú: Ghi chú: Từ khóa Từ khóa “class” “class” có thể thay bằng có thể thay bằng “typename” “typename” . . Phần khai báo và cài đặt đều có khai báo template. 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 cài đặt hàm phải nằm cùng file: Phần khai báo hàm. Phần khai báo hàm. Phần gọi sử dụng hàm. Phần gọi sử dụng hàm. 7 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Function Template. Function Template. Class Template. Class Template. Thư viện C++. Thư viện C++. Bài tập. Bài tập. 8 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Class Template Class Template Xét lớp đối tượng Mang: Xét lớp đối tượng Mang: class MangNguyen class MangNguyen { private: { private: int int m_iKichThuoc; m_iKichThuoc; int int *m_pDuLieu; *m_pDuLieu; public: public: Mang(int iKichThuoc); Mang(int iKichThuoc); int int LayPhanTu(int iViTri); LayPhanTu(int iViTri); }; }; class MangPhanSo class MangPhanSo { private: { private: int int m_iKichThuoc; m_iKichThuoc; PhanSo PhanSo *m_pDuLieu; *m_pDuLieu; public: public: Mang(int iKichThuoc); Mang(int iKichThuoc); PhanSo PhanSo LayPhanTu(int iViTri); LayPhanTu(int iViTri); }; }; Mảng phân số? Mảng phân số? Có cách nào đơn giản hơn? Có cách nào đơn giản hơn? Dùng Class Template!! Dùng Class Template!! 9 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Class Template Class Template Lớp Mang dùng Class Template: Lớp Mang dùng Class Template: template <class T> template <class T> class Mang class Mang { { private: private: int int m_iKichThuoc; m_iKichThuoc; T T *m_pDuLieu; *m_pDuLieu; public: public: Mang(int iKichThuoc); Mang(int iKichThuoc); T T layPhanTu(int iViTri); layPhanTu(int iViTri); }; }; void main() void main() { { Mang<int> Mang<int> m1(10); m1(10); int a = m1.layPhanTu(5); int a = m1.layPhanTu(5); Mang<PhanSo> Mang<PhanSo> m2(5); m2(5); PhanSo p = m2.layPhanTu(2); PhanSo p = m2.layPhanTu(2); } } 10 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Class Template Class Template Đặc điểm của 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. 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. Tham số hóa kiểu dữ liệu. Kiểu cụ thể được truyền vào khi tạo đối tượng. Kiểu cụ thể được truyền vào khi tạo đối tượng. Ghi chú: Ghi chú: Từ khóa Từ khóa “class” “class” có thể thay bằng có thể thay bằng “typename” “typename” . . Phần cài đặt lớp phải nằm cùng file: Phần cài đặt lớp phải nằm cùng file: Phần khai báo lớp. Phần khai báo lớp. Phần tạo và sử dụng đối tượng của 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. Viết cài đặt bên trong lớp khi dùng Template. [...]... 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 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 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... trình hướng đối tượng – GV Nguyễn 21 Bài tập Bài tập 6. 1: Sử dụng template, chỉnh sửa lại lớp mảng cho phép lưu trữ và thao tác trên 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 22 Bài tập Bài tập 6. 2: Xây dựng lớp con trỏ thông minh cho mọi... 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 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 12... trình hướng đối tượng – GV Nguyễn 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 14 Thư viện C++ Lớp string: File header Lớp đại diện cho các đối tượng. .. int): lấy chuỗi con Phương pháp lập trình hướng đối tượng – GV Nguyễn 15 Thư viện C++ Ví dụ lớp string: void main() { string string s1(“software”); s2(“SoftWare”); if (s1 == s2) cout . C++. Bài tập. Bài tập. 8 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Class Template Class Template Xét lớp đối tượng Mang: Xét lớp đối tượng Mang: class MangNguyen class MangNguyen {. 1Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Template, Template, Thư viện C++ Thư viện C++ 2 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội. dụng đối tượng của 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. Viết cài đặt bên trong lớp khi dùng Template. 11 Phương pháp lập trình hướng đối