Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
3,71 MB
Nội dung
Template, Thư viện C++ Phương pháp lập trình hướng đối tượng 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 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 Function Template ◼ Xét hàm tìm số: int timMin(int a, int b){ return (a < b) ? a : b; } float timMin(float a, float b){ return (a < b) ? a : b; } PhanSo timMin(PhanSo a, PhanSo b){ return (a < b) ? a : b; } Tìm hai số thực? Tìm hai phân số? Có cách đơn giản hơn? Dùng Function Template!! Phương pháp lập trình hướng đối tượng Function Template ◼ Hàm tìm dùng Function Template: template T timMin(T a, T b){ return (a < b) ? a : b; } void main(){ 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 Function Template ◼ Đặc điểm Function Template: Hàm tổng quát cho nhiều kiểu liệu khác ◼ Tham số hóa kiểu liệu ◼ Kiểu cụ thể định gọi hàm ◼ ◼ Ghi chú: Từ khóa “class” thay “typename” ◼ Phần khai báo cài đặt có khai báo template ◼ Phần cài đặt hàm phải nằm 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 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 Class Template ◼ Xét lớp đối tượng Mang: class MangNguyen { private: int m_kichThuoc; int *m_duLieu; public: MangNguyen(int kichThuoc); int layPhanTu(int viTri); }; class MangPhanSo { private: int m_kichThuoc; PhanSo *m_duLieu; public: MangPhanSo(int kichThuoc); PhanSo layPhanTu(int viTri); }; Phương pháp lập trình hướng đối tượng Dùng Class Template!! Mảng phân số? Có cách đơn giản hơn? Class Template ◼ Lớp Mang dùng Class Template: template class Mang { private: int m_kichThuoc; T *m_duLieu; public: Mang(int kichThuoc); T layPhanTu(int viTri); }; Phương pháp lập trình hướng đối tượng void main() { Mang m1(10); int a = m1.layPhanTu(5); Mang m2(5); PhanSo p = m2.layPhanTu(2); } Class Template ◼ Đặc điểm Class Template: Lớp tổng quát cho nhiều kiểu liệu khác ◼ Tham số hóa kiểu liệu ◼ Kiểu cụ thể truyền vào tạo đối tượng ◼ ◼ Ghi chú: Từ khóa “class” thay “typename” ◼ Phần cài đặt lớp phải nằm file: ◼ ➢ ➢ Phần khai báo lớp Phần tạo sử dụng đối tượng lớp ➔ Viết cài đặt bên lớp dùng Template Phương pháp lập trình hướng đối tượng 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 11 Thư viện C++ ◼ Khái niệm thư viện: Tập hợp lớp, hàm có sẵn giúp giải công việc thường gặp ◼ Bộ công cụng hữu ích 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 12 Thư viện C++ ◼ Thư viện chuẩn: Thư viện C++ ◼ Các lớp hàm nằm 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 13 Thư viện C++ ◼ Thư viện STL (Standard Template Library): Một phần thư viện chuẩn ◼ Các lớp 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 14 Thư viện C++ ◼ Lớp string: File header ◼ Lớp đại diện cho đối tượng chuỗi ◼ Giải vấn đề trỏ ◼ Các phương thức chính: ◼ ➢ ➢ ➢ ➢ ➢ ➢ ➢ string(char *): khởi tạo từ chuỗi ký tự length(): lấy chiều dài chuỗi Toán tử [ ]: lấy ký tự vị trí Tốn tử >, =,