Lập trình hướng đối tượng tren C/C++ - OOP 06 the STL library and encapsulation
Trang 2Nội dung dung
Thư Thư viện viện C++ C++.
Thư Thư viện viện STL STL.
Tính Tính đóng đóng gói gói
Trang 3Nội dung dung
Thư Thư viện viện C++ C++.
Thư Thư viện viện STL STL.
Tính Tính đóng đóng gói gói
Trang 4Thư viện viện C++ C++
Khái Khái niệm niệm thư thư viện viện::
Thợ Thợ xây xây dựng dựng dùng dùng gì gì để để xây xây nhà nhà? ?
TayTay khôngkhông
CôngCông cụcụ hỗhỗ trợtrợ
Thư Thư viện viện lập lập trình trình::
Bộ
Bộ côngcông cụcụ hỗhỗ trợtrợ củacủa lậplập trìnhtrình viênviên
BộBộ côngcông cụcụ hỗhỗ trợtrợ củacủa lậplập trìnhtrình viênviên
TậpTập hợphợp tri tri thứcthức củacủa ngườingười điđi trướctrước
CCácác lớplớp, , hàmhàm dựngdựng sẵnsẵn (file lib).(file lib)
Các Các thư thư viện viện C++ C++ phổ phổ biến biến::
ThưThư việnviện chuẩnchuẩn C++.C++
ThưThư việnviện boost: boost: hơnhơn 80 80 thưthư việnviện hỗhỗ trợtrợ lậplập trìnhtrình C++.C++
ThưThư việnviện MFC: MFC: hỗhỗ trợtrợ lậplập trìnhtrình C++ C++ trêntrên Windows.Windows
Trang 5Thư viện viện C++ C++
Thư Thư viện viện chuẩn chuẩn (C++ Standard Library): (C++ Standard Library):
Phát Phát triển triển và và chuẩn chuẩn hóa hóa vào vào 1990s 1990s.
Bộ Bộ công công cụ cụ lập lập trình trình nền nền tảng tảng
Tập Tập hợp hợp các các lớp lớp trong trong namespace std namespace std.
Đặc Đặc điểm điểm: file header : file header không không h .h.
Cấu Cấu trúc trúc::
ThưThư việnviện nhậpnhập xuấtxuất: : iostreamiostream, , fstreamfstream, , iomanipiomanip, Z, Z
ThưThư việnviện STL.STL
ThưThư việnviện chuẩnchuẩn C: file header C: file header c cxxx.hxxx.h
Trang 6Nội dung dung
Thư Thư viện viện C++ C++.
Thư Thư viện viện STL STL.
Tính Tính đóng đóng gói gói
Trang 7Thư viện viện STL STL
Giới Giới thiệu thiệu STL STL– –S Standard tandard T Template emplate L Library: ibrary:
Alexander Alexander Stepanov Stepanov, 1994 , 1994.
Phần Phần chính chính yếu yếu của của thư thư viện viện chuẩn chuẩn
Tập Tập hợp hợp class template class template dựng dựng sẵn sẵn
Hỗ Hỗ trợ trợ cấu cấu trúc trúc dữ dữ liệu liệu tổng tổng quát quát
Cấu Cấu trúc trúc thư thư viện viện::
Trang 8Thư viện viện STL STL
Lớp Lớp string (header <string>): string (header <string>):
Lớp Lớp đại đại diện diện cho cho chuỗi chuỗi ký ký tự tự
Giải Giải quyết quyết 3 3 vấn vấn đề đề con con trỏ trỏ
Các Các phương phương thức thức chính chính::
string(char *) Khởi tạo từ một chuỗi char *.
length() Lấy chiều dài chuỗi.
Toán tử [ ] Lấy ký tự tại vị trí nào đó.
Toán tử >, <, >=, <=, ==, != So sánh chuỗi theo thứ tự từ điển.
Toán tử +, += Nối chuỗi.
find(char *) Tìm vị trí chuỗi con.
substr(int, int) Trích chuỗi con.
Trang 9if (s1 == s2)
coutcout << “equal.” << << “equal.” << endlendl;;
cout
cout << “equal.” << << “equal.” << endlendl;;
else
coutcout << “not equal.” << << “not equal.” << endlendl;;
s2 = s1.substr(4, 4);
coutcout << s2;<< s2;
string s3 = s1 + s2;
coutcout << s3 << << s3 << endlendl;;
}}
Trang 10Thư viện viện STL STL
Lớp Lớp vector (header <vector>): vector (header <vector>):
Lớp Lớp mảng mảng kiểu kiểu tổng tổng quát quát T T.
Giải Giải quyết quyết 3 3 vấn vấn đề đề con con trỏ trỏ
Các Các phương phương thức thức chính chính::
vector<T>() Khởi tạo mảng kiểu T.
size() Lấy kích thước mảng.
resize(int) Thay đổi kích thước mảng.
Toán tử [ ] Lấy phần tử tại vị trí nào đó.
push_back(T) Thêm phần tử vào cuối mảng.
insert(position, T) Chèn phần tử vào vị trí nào đó.
Trang 12Thư viện viện STL STL
Luyện Luyện tập tập::
Viêt
Viêt chươngchương trìnhtrình thựcthực hiệnhiện việcviệc sausau::
NhậpNhập vàovào danhdanh sáchsách N N chuỗichuỗi kýký tựtự
NốiNối cáccác chuỗichuỗi vừavừa nhậpnhập vàvà xuấtxuất kếtkết quảquả
Cài
Cài đặtđặt theotheo haihai cáchcách::
SửSử dụngdụng lớplớp mảngmảng độngđộng thuầnthuần túytúy
SửSử dụngdụng lớplớp mảngmảng độngđộng thuầnthuần túytúy
SửSử dụngdụng lớplớp string string vàvà vector vector củacủa thưthư việnviện STL.STL
Trang 13Nội dung dung
Thư Thư viện viện C++ C++.
Thư Thư viện viện STL STL.
Tính Tính đóng đóng gói gói
Trang 14Tính đóng đóng gói gói
Quy Quy tắc tắc hộp hộp đen đen::
Thuộc Thuộc tính tính: : private private để để hạn hạn chế chế truy truy xuất xuất
Phương Phương thức thức: : public public để để cung cung cấp cấp tính tính năng năng
class
class HocSinhHocSinh
{{{{
private:
char* m_hoTenm_hoTen;;
float m_diemVanm_diemVan;;
float m_diemToanm_diemToan;;
};
Dữ liệu (Thuộc tính)
Tính năng (Phương thức)
Trang 15Tính đóng đóng gói gói
Nhu Nhu cầu cầu xử xử lý lý vs vs quy quy tắc tắc hộp hộp đen đen::
Có Có nhu nhu cầu cầu truy truy xuất xuất thuộc thuộc tính tính đối đối tượng tượng? ?
PhươngPhương ánán 1: 1: private private public.public
PhươngPhương ánán 2: 2: phươngphương thứcthức truytruy xuấtxuất
char* m_hoTen m_hoTen;;
float m_diemVan m_diemVan;;
float m_diemToan m_diemToan;;
char* m_hoTen m_hoTen;;
float m_diemVan m_diemVan;;
float m_diemToan m_diemToan;;
public:
float& layDiemVan layDiemVan(); ();
float& layDiemToan layDiemToan(); ();
};
Trang 16Tính đóng đóng gói gói
Làm Làm sao sao vẫn vẫn tuân tuân thủ thủ quy quy tắc tắc hộp hộp đen đen? ?
Đưa Đưa xử xử lý lý cho cho đối đối tượng tượng thực thực hiện hiện
class
class HocSinh HocSinh
{{
private:
char* m_hoTen m_hoTen;;
char* m_hoTen m_hoTen;;
float m_diemVan m_diemVan;;
float m_diemToan m_diemToan;;
public:
float float tinhDTB tinhDTB(); ();
int int xepLoai xepLoai(); ();
};
Trang 17Tính đóng đóng gói gói
Dr Guru Dr Guru khuyên khuyên: : quy quy tắc tắc “Tell, Don’t Ask” “Tell, Don’t Ask”
Thông Thông tin tin đối đối tượng tượng
Không Không thể thể truy truy xuất xuất từ từ bên bên ngoài ngoài
Đối Đối tượng tượng nắm nắm giữ giữ thông thông tin tin
Chịu Chịu trách trách nhiệm nhiệm xử xử lý lý thông thông tin tin.
““Đừng Đừng hỏi hỏi tôi tôi thông thông tin tin để để thực thực hiện hiện công công việc việc””
““Hãy Hãy nhờ nhờ tôi tôi làm làm giùm giùm!!” !!”
Đã Đã giao giao thông thông tin tin
G Giao iao luôn luôn xử xử lý lý thông thông tin tin.
Trang 18float m_diemVan m_diemVan;;
float m_diemToan m_diemToan;;
Trang 19Tóm tắt tắt
Thư Thư viện viện C++: C++:
Bộ Bộ công công cụ cụ dựng dựng sẵn sẵn hỗ hỗ trợ trợ lập lập trình trình C++ C++.
Các Các thư thư viện viện phổ phổ biến biến::
ThưThư việnviện chuẩnchuẩn::
ThưThư việnviện boost.boost
ThưThư việnviện MFC.MFC
ThưThư việnviện MFC.MFC
Thư Thư viện viện STL: STL:
Phần Phần chính chính yếu yếu của của thư thư viện viện chuẩn chuẩn
Các Các lớp lớp dựng dựng sẵn sẵn: string, vector : string, vector.
Tính Tính đóng đóng gói gói::
Tell, Don’t Ask.
Trang 20nhất 3 3 lớplớp đốiđối tượngtượng trongtrong thưthư việnviện::
ThưThư việnviện chuẩnchuẩn
ThưThư việnviện boost.boost
ThưThư việnThưThư việnviện MFC.viện MFC.MFC.MFC
Trang 21thúc bằngbằng dấudấu câucâu ((dấudấu , ?, !) ., ?, !) XâyXây dựngdựng cáccác lớplớp cầncần thiếtthiết đểđể::
ĐọcĐọc mộtmột đoạnđoạn vănvăn từtừ file file vănvăn bảnbản
ĐếmĐếm sốsố lượnglượng câucâu vàvà sốsố lượnglượng từtừ cócó trongtrong đoạnđoạn vănvăn
TìmTìm từTìmTìm từtừ xuấttừ xuấtxuất hiệnxuất hiệnhiện nhiềuhiện nhiềunhiều nhấtnhiều nhấtnhất trongnhất trongtrong đoạntrong đoạnđoạn vănđoạn vănvăn văn
SắpSắp xếpxếp tăngtăng dầndần ((thứthứ tựtự từtừ điểnđiển) ) cáccác từtừ trongtrong mỗimỗi câucâu
GhiGhi đoạnđoạn vănvăn đãđã chỉnhchỉnh sửasửa vàovào file file vănvăn bảnbản
Trang 22Bài tập tập
Bài Bài tập tập 6.3: 6.3:
Xây
Xây dựngdựng lớplớp đa đa thức thức cócó nhữngnhững phươngphương thứcthức sausau::
((Nhóm Nhóm tạo tạo hủy hủy))
KhởiKhởi tạotạo mặcmặc địnhđịnh đađa thứcthức = 0.= 0
KhởiKhởi tạotạo vớivới bậcbậc vàvà mảngmảng hệhệ sốsố chocho trướctrước
KhởiKhởi tạotạo từtừ mộtmột đốiđối tượngtượng đađa thứcthức kháckhác
KhởiKhởi tạotạo từtừ mộtmột đốiđối tượngtượng đađa thứcthức kháckhác
HủyHủy đađa thứcthức, , thuthu hồihồi bộbộ nhớnhớ
((Nhóm Nhóm truy truy xuất xuất thông thông tin) tin)
LấyLấy bậcbậc đađa thứcthức
LấyLấy hệhệ sốsố tạitại bậcbậc nàonào đóđó
Trang 23TínhTính giágiá trịtrị, , đạođạo hàmhàm, , nguyênnguyên hàmhàm
TínhTính giágiá trịtrị, , đạođạo hàmhàm, , nguyênnguyên hàmhàm
((Nhóm Nhóm toán toán tử tử))
ToánToán tửtử sốsố họchọc: +, : +, , *, /, =., *, /, =
ToánToán tửtử so so sánhsánh: >, <, ==, >=, <=, !=: >, <, ==, >=, <=, !=
ToánToán tửtử đạođạo hàmhàm (!), (!), nguyênnguyên hàmhàm (~).(~)
ToánToán tửtử nhậpnhập xuấtxuất: >>, <<.: >>, <<
Trang 24Bài tập tập
Bài Bài tập tập 6.4: 6.4:
Xây
Xây dựngdựng cáccác lớplớp cầncần thiếtthiết đểđể thựcthực hiệnhiện cáccác thaothao táctác trêntrên tam tam giácgiác::
TínhTính chuchu vi vi vàvà diệndiện tíchtích
TìmTìm trọngtrọng tâmtâm ((giaogiao 3 3 đườngđường trungtrung tuyếntuyến).)
TìmTìm đườngđường trungtrung trựctrực củacủa mộtmột cạnhcạnh ((vuôngvuông gócgóc tạitại trungtrung điểmđiểm).)
TìmTìm tâmtâm đườngđường tròntròn ngoạingoại tiếptiếp ((giaogiao 3 3 đườngđường trungtrung trựctrực).)
TìmTìm tâmtâm đườngđường tròntròn ngoạingoại tiếptiếp ((giaogiao 3 3 đườngđường trungtrung trựctrực).)