Hướng đối tượng toàn tập 6
Chia sẻ bởi Lê Văn Thanh Thúc |
Ngày 10/05/2019 |
59
Chia sẻ tài liệu: Hướng đối tượng toàn tập 6 thuộc Tin học 12
Nội dung tài liệu:
1
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Template,
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
Function Template.
Class Template.
Thư viện C++.
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
Function Template.
Class Template.
Thư viện C++.
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
Xét hàm tìm min giữa 2 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 min
hai số thực?
Tìm min
hai phân số?
Có cách nào đơn giản hơn?
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
Hàm tìm min 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);
}
6
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
7
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Nội dung
Function Template.
Class Template.
Thư viện C++.
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
Xét lớp đối tượng Mang:
class MangNguyen
{ private:
int m_iKichThuoc;
int *m_pDuLieu;
public:
Mang(int iKichThuoc);
int LayPhanTu(int iViTri);
};
class MangPhanSo
{ private:
int m_iKichThuoc;
PhanSo *m_pDuLieu;
public:
Mang(int iKichThuoc);
PhanSo LayPhanTu(int iViTri);
};
Mảng
phân số?
Có cách nào đơn giản hơn?
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
Lớp Mang dùng Class Template:
template
class Mang
{
private:
int m_iKichThuoc;
T *m_pDuLieu;
public:
Mang(int iKichThuoc);
T layPhanTu(int iViTri);
};
void main()
{
Mang m1(10);
int a = m1.layPhanTu(5);
Mang m2(5);
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
Đặ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.
11
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Nội dung
Function Template.
Class Template.
Thư viện C++.
Bài tập.
12
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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).
13
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
14
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
…
15
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
16
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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;
}
17
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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 đó.
18
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Thư viện C++
Ví dụ:
void main()
{
vector v1;
v1.push_back(1);
v1.push_back(2);
for (int i = 0; i < v1.size(); i++)
cout << v1[i] << “ “;
vector v2;
v2.push_back(new PhanSo(2, 6));
v2[0]->rutGon();
}
19
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
20
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
21
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Nội dung
Template.
Thư viện C++.
Bài tập.
22
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
23
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Bài tập
Bài tập 6.2:
Xây dựng lớp con trỏ thông minh 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.
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
Template,
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
Function Template.
Class Template.
Thư viện C++.
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
Function Template.
Class Template.
Thư viện C++.
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
Xét hàm tìm min giữa 2 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 min
hai số thực?
Tìm min
hai phân số?
Có cách nào đơn giản hơn?
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
Hàm tìm min 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);
}
6
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
7
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Nội dung
Function Template.
Class Template.
Thư viện C++.
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
Xét lớp đối tượng Mang:
class MangNguyen
{ private:
int m_iKichThuoc;
int *m_pDuLieu;
public:
Mang(int iKichThuoc);
int LayPhanTu(int iViTri);
};
class MangPhanSo
{ private:
int m_iKichThuoc;
PhanSo *m_pDuLieu;
public:
Mang(int iKichThuoc);
PhanSo LayPhanTu(int iViTri);
};
Mảng
phân số?
Có cách nào đơn giản hơn?
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
Lớp Mang dùng Class Template:
template
class Mang
{
private:
int m_iKichThuoc;
T *m_pDuLieu;
public:
Mang(int iKichThuoc);
T layPhanTu(int iViTri);
};
void main()
{
Mang
int a = m1.layPhanTu(5);
Mang
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
Đặ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.
11
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Nội dung
Function Template.
Class Template.
Thư viện C++.
Bài tập.
12
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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).
13
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
14
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
…
15
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
16
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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;
}
17
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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
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 đó.
18
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Thư viện C++
Ví dụ:
void main()
{
vector
v1.push_back(1);
v1.push_back(2);
for (int i = 0; i < v1.size(); i++)
cout << v1[i] << “ “;
vector
v2.push_back(new PhanSo(2, 6));
v2[0]->rutGon();
}
19
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
20
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
21
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Nội dung
Template.
Thư viện C++.
Bài tập.
22
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
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.
23
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
Bài tập
Bài tập 6.2:
Xây dựng lớp con trỏ thông minh 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.
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.
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Lê Văn Thanh Thúc
Dung lượng: |
Lượt tài: 2
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)