lap trinh huong doi tuong

24 3 0
lap trinh huong doi tuong

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

 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.[r]

(1)

Template,

Template,

Thư viện C++

(2)

Nội dung

Nội dung

 Function Template.Function Template.  Class Template.Class Template.

(3)

Nội dung

Nội dung

Function Template.Function Template.  Class Template.Class Template.

(4)

Function Template

Function Template

 Xét hàm tìm số:Xét hàm tìm 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 giản

hơn?

Có cách đơn giản

hơn? Dùng Function Template!!

(5)

Function Template

Function Template

 Hàm tìm dùng Function Template:Hàm tìm dùng Function Template:

template <class T>

template <class T>

T

T timMin( timMin(TT a, a, TT 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);

(6)

Function Template

Function Template

 Đặc điểm Function Template:Đặc điểm Function Template:

 Hàm tổng quát cho nhiều kiểu liệu khác nhau.Hàm tổng quát cho nhiều kiểu liệu khác nhau.  Tham số hóa kiểu liệu.Tham số hóa kiểu liệu.

 Kiểu cụ thể định gọi hàm.Kiểu cụ thể định gọi hàm.

 Ghi chú:Ghi chú:

 Từ khóa Từ khóa “class”“class” thay thay “typename”“typename”..  Phần khai báo cài đặt có khai báo template.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 cài đặt hàm phải nằm file:

(7)

Nội dung

Nội dung

 Function Template.Function Template.  Class Template.Class Template.  Thư viện C++.Thư viện C++.

(8)

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_kichThuoc;m_kichThuoc;

int

int *m_duLieu;*m_duLieu; public:

public:

Mang(int kichThuoc); Mang(int kichThuoc);

int

int layPhanTu(int viTri); layPhanTu(int viTri); }; }; class MangPhanSo class MangPhanSo { private: { private: int

int m_kichThuoc;m_kichThuoc;

PhanSo

PhanSo *m_duLieu;*m_duLieu; public:

public:

Mang(int kichThuoc); Mang(int kichThuoc);

PhanSo

PhanSo layPhanTu(int viTri); layPhanTu(int viTri); }; }; Mảng phân số? Mảng phân số?

Có cách đơn giản

hơn?

Có cách đơn giản

hơn? Dùng Class Template!!

(9)

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_kichThuoc;m_kichThuoc;

T

T *m_duLieu;*m_duLieu; public:

public:

Mang(int kichThuoc);

Mang(int kichThuoc);

T

T layPhanTu(int viTri); layPhanTu(int viTri);

}; }; 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)

Class Template

Class Template

 Đặc điểm Class Template:Đặc điểm Class Template:

 Lớp tổng quát cho nhiều kiểu liệu khác nhau.Lớp tổng quát cho nhiều kiểu liệu khác nhau.  Tham số hóa kiểu liệu.Tham số hóa kiểu liệu.

 Kiểu cụ thể truyền vào tạo đối tượng.Kiểu cụ thể truyền vào tạo đối tượng.

 Ghi chú:Ghi chú:

 Từ khóa Từ khóa “class”“class” thay thay “typename”“typename”..  Phần cài đặt lớp phải nằm file:Phần cài đặt lớp phải nằm file:

 Phần khai báo lớp.Phần khai báo lớp

 Phần tạo sử dụng đối tượng lớp.Phần tạo sử dụng đối tượng lớp

(11)

Nội dung

Nội dung

 Function Template.Function Template.  Class Template.Class Template.

(12)

Thư viện C++

Thư viện C++

 Khái niệm thư viện:Khái niệm thư viện:

 Tập hợp lớp, hàm có sẵn giúp giải công Tập hợp lớp, hàm có sẵn giúp giải cơng việc thường gặp.

việc thường gặp.

 Bộ công cụng hữu ích lập trình viên.Bộ cơng cụng hữu ích lập trình viên.  Một vài thư viện C++:Một vài thư viện C++:

 Thư viện chuẩn (C++ Standard Library).Thư viện chuẩn (C++ Standard Library)  Thư viện boost.Thư viện boost

(13)

Thư viện C++

Thư viện C++  Thư viện chuẩn:Thư viện chuẩn:

 Thư viện C++.Thư viện C++.

 Các lớp hàm nằm namespace std.Các lớp hàm nằm namespace std.  File Header không h.File Header không h.

 Phân nhóm:Phân nhóm:

 Nhóm nhập xuất: iostream, iomanip, fstream, …Nhóm nhập xuất: iostream, iomanip, fstream, …  Nhóm STL.Nhóm STL.

 ……

(14)

Thư viện C++

Thư viện C++

 Thư viện STL (Thư viện STL (SStandard tandard TTemplate emplate LLibrary):ibrary):

 Một phần thư viện chuẩn.Một phần thư viện chuẩn.

 Các lớp hàm hỗ trợ lập trình với template.Các lớp hàm hỗ trợ lập trình với template.  Phân nhóm:Phân nhóm:

 Nhóm container: vector, list, deque, set, …Nhóm container: vector, list, deque, set, …  Nhóm string: string, …Nhóm string: string, …

(15)

Thư viện C++

Thư viện C++  Lớp string:Lớp string:

 File header <string>.File header <string>.

 Lớp đại diện cho đối tượng chuỗi.Lớp đại diện cho đối tượng chuỗi.  Giải vấn đề trỏ.Giải vấn đề trỏ.

 Các phương thức chính:Các phương thức chính:

 string(char *): khởi tạo từ chuỗi ký tự.string(char *): khởi tạo từ chuỗi ký tự  length(): lấy chiều dài chuỗi.length(): lấy chiều dài chuỗi

 Toán tử [ ]: lấy ký tự vị trí đó.Tốn tử [ ]: lấy ký tự vị trí

(16)

Thư viện C++

Thư viện C++  Ví dụ lớp string:Ví dụ lớp string:

void main()

void main()

{

{

string

string s1(“software”);s1(“software”); string

string s2(“SoftWare”);s2(“SoftWare”); if (s1 == s2)

if (s1 == s2)

cout << “equal.” << endl;

cout << “equal.” << endl;

else

else

cout << “not equal.” << endl;

cout << “not equal.” << endl;

s2 = s1.substr(4, 4);

s2 = s1.substr(4, 4);

cout << s2;

cout << s2;

string

string s3 = s1 + s2;s3 = s1 + s2; cout << s3 << endl;

cout << s3 << endl;

}

(17)

Thư viện C++

Thư viện C++  Lớp vector:Lớp vector:

 File header <vector>.File header <vector>.  Lớp mảng kiểu T.Lớp mảng kiểu T.

Giải vấn đề trỏ.Giải vấn đề trỏ.  Các phương thức chính:Các phương thức chính:

 vector<T>(): khởi tạo mảng kiểu T.vector<T>(): khởi tạo mảng kiểu T  size(): lấy kích thước mảng.size(): lấy kích thước mảng

(18)

Thư viện C++

Thư viện C++  Ví dụ:Ví dụ:

void main()

void main()

{

{

vector<int>

vector<int> v1;v1; v1.push_back(1);

v1.push_back(1);

v1.push_back(2);

v1.push_back(2);

for (int i = 0; i < v1.size(); i++)

for (int i = 0; i < v1.size(); i++)

cout << v1[i] << “ “;

cout << v1[i] << “ “;

vector<PhanSo *> v2;

vector<PhanSo *> v2;

v2.push_back(new PhanSo(2, 6));

v2.push_back(new PhanSo(2, 6));

v2[0]->rutGon();

v2[0]->rutGon();

}

(19)

Tóm tắt

Tóm tắt

 Template:Template:

 Cách thức tham số hóa kiểu liệu.Cách thức tham số hóa kiểu liệu.

 Cho phép lập trình kiểu liệu tổng quát.Cho phép lập trình kiểu liệu tổng quát.  Function template:Function template:

 Hàm tổng quát cho nhiều kiểu liệu khác nhau.Hàm tổng quát cho nhiều kiểu liệu khác  Kiểu cụ thể định gọi hàm.Kiểu cụ thể định gọi hàm

 Class template:Class template:

 Lớp tổng quát cho nhiều kiểu liệu khác nhau.Lớp tổng quát cho nhiều kiểu liệu khác

(20)

Tóm tắt

Tóm tắt

 Thư viện C++:Thư viện C++:

 Bộ công cụ hỗ trợ lập trình.Bộ cơng cụ hỗ trợ lập trình.  Thư viện chuẩn:Thư viện chuẩn:

 Thư viện STL.Thư viện STL

(21)

Nội dung

Nội dung  Template.Template.

(22)

Bài tập

Bài tập

 Bài tập 6.1:Bài tập 6.1:

Liệt kê lớp cho biết tính lớp thư viện:

Liệt kê lớp cho biết tính lớp thư viện:

(23)

Bài tập

Bài tập

 Bài tập 6.2:Bài tập 6.2:

Xây dựng lớp

Xây dựng lớp mảngmảng kiểu liệu kiểu liệu

(Gợi ý) (Gợi ý)

 Dùng class template khai báo lớp mảng.Dùng class template khai báo lớp mảng  Dữ liệu mảng kiểu T.Dữ liệu mảng kiểu T

(24)

Bài tập

Bài tập

 Bài tập 6.3:Bài tập 6.3:

Xây dựng lớp

Xây dựng lớp con trỏ an toàncon trỏ an toàn cho kiểu liệu: cho kiểu liệu:

(Nhóm tạo hủy) (Nhóm tạo hủy)

 Khởi tạo mặc định trỏ NULL.Khởi tạo mặc định trỏ NULL

 Khởi tạo với kích thước nhớ cấp phát cho trước.Khởi tạo với kích thước nhớ cấp phát cho trước  Khởi tạo từ đối tượng trỏ khác.Khởi tạo từ đối tượng trỏ khác

 Hủy trỏ, thu hồi nhớ.Hủy trỏ, thu hồi nhớ

(Nhóm tốn tử) (Nhóm tốn tử)

 Tốn tử số học: +, -, =.Toán tử số học: +, -, =  Tốn tử ngơi: ++, .Tốn tử ngơi: ++,  Tốn tử trỏ: *, &, [ ].Toán tử trỏ: *, &, [ ]  Toán tử ép kiểu: (int).Toán tử ép kiểu: (int)

Ngày đăng: 17/05/2021, 18:10

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan