Giáo trình Lập trình hướng đối tượng C++ - Cao đẳng Công nghiệp Huế
GIỚI THIỆU .7
MÔI TRƯỜNG PHÁT TRIỂN TÍCH HỢP IDE.10
CHƯƠNG 1. NGÔN NGỮ LẬP TRÌNH C++.22
1.1. Cấu trúc của một chương trình C++ . 22
1.2. Biến và các kiểu dữ liệu. 25
1.2.1.Từ khóa . 25
1.2.2. Kiểu dữ liệu nguyên thủy. 26
1.2.3. Khai báo biến . 26
1.2.4. Phạm vi tác dụng của biến . 27
1.2.5. Khởi tạo giá trị cho biến . 29
1.2.6. Khởi tạo giá trị cho biến tĩnh static. 29
1.2.7. Giới thiệu về xâu kí tự . 30
1.3. Hằng . 31
1.3.1. Hằng số nguyên. 31
1.3.2. Hằng số thực có dấu chấm động. 31
1.3.3. Hằng kí tự và hằng xâu kí tự. 32
1.3.4. Hằng logic. 33
1.3.5. Định nghĩa một hằng #define. 33
1.3.6. Khai báo hằng const. 34
1.4. Toán tử . 34
1.4.1. Toán tử gán . 34
1.4.2. Toán tử thực hiện phép toán số học. 35
1.4.3. Toán tử gán hợp nhất . 36
1.4.4. Toán tử tăng và giảm . 36
1.4.5. Toán tử so sánh . 37
1.4.6. Toán tử logic . 38
1.4.7. Toán tử điều kiện . 39
1.4.8. Toán tử phân tách. 40
1.4.9. Toán tử dịch bit. 41
1.4.10. Toán tử chuyển đổi kiểu dữ liệu . 43
1.4.11. Các toán tử khác. 43
1.4.12. Thứ tự ưu tiên của các toán tử . 43
1.5. Xuất – nhập cơ bản. 45
1.5.1. Xuất dữ liệu chuẩn cout . 45
1.5.2. Nhập dữ liệu chuẩn cin . 46
1.5.3. Nhập dữ liệu nhờ lớp stringstream . 48
1.6. Các cấu trúc lệnh điều khiển . 49
1.6.1. Cấu trúc lệnh có điều kiện: if và else. 50
1.6.2. Cấu trúc lặp. 52
1.6.3. Cấu trúc lựa chọn: switch . 57
1.7. Hàm . 61
1.7.1. Khai báo và sử dụng hàm. 62
1.7.2. Phạm vi tác dụng của biến . 65
1.7.3. Hàm không trả về giá trị - Hàm void. 66
1.7.4. Tham biến và tham trị. 67
1.7.5. Giá trị mặc định của tham số hình thức. 70
1.7.6. Chồng chất hàm . 71
1.7.6. Hàm nội tuyến. 72
1.7.7. Hàm đệ quy. 72
1.8. Các kiểu dữ liệu có cấu trúc. 74
1.8.1. Mảng . 74
1.8.2. Xâu kí tự. 78
1.9. Con trỏ. 78
1.9.1. Toán tử tham chiếu & . 79
1.9.2. Toán tử tham chiếu ngược * . 80
1.9.3. Khai báo biến con trỏ. 81
1.9.4. Con trỏ, mảng và xâu kí tự . 83
1.9.5. Các phép toán số học trên con trỏ. 85
1.9.6. Con trỏ trỏ vào con trỏ. 87
1.9.7. Con trỏ void . 88
1.9.8. Con trỏ null . 89
1.9.9. Con trỏ hàm. 89
1.10. Bộ nhớ động . 91
1.10.1. Toán tử new và new[] . 91
1.10.2. Toán tử delete và delete[] . 92
1.11. Kiểu dữ liệu struct và Con trỏ struct . 93
1.11.1. Struct . 93
1.11.2. Con trỏ struct. 97
1.11.3. Struct lồng nhau . 98
1.11.4. Kích thước bộ nhớ của struct. 98
1.12. Các kiểu dữ liệu khác. 99
1.12.1. Kiểu dữ liệu tự định nghĩa . 99
1.12.2. Kiểu dữ liệu union thường. 100
1.12.3. Kiểu dữ liệu union ẩn danh. 100
1.12.4. Kiểu dữ liệu enum. 101
CHƯƠNG 2. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG .102
2.1. Lịch sử hình thành. 102
2.2. Lớp và đối tượng. 107
2.3. Hàm tạo và hàm hủy . 110
2.4. Chồng chất hàm tạo. 112
2.5. Hàm tạo sao chép . 114
2.6. Tính đóng gói – Encapsulation . 119
2.7. Con trỏ đối tượng . 120
2.8. Lớp được khai báo nhờ từ khóa struct và union . 121
2.9. Con trỏ this. 121
2.10. Thành viên tĩnh – Từ khóa static. 123
2.11. Hàm bạn và lớp bạn . 124
2.12. Chồng chất toán tử . 126
2.13. Tính kế thừa - Inheritance. 132
2.14. Các mức truy cập. 135
2.15. Tính đa kế thừa – Multiple Inheritance. 137
2.16. Tính đa hình – Polymorphism. 138
2.17. Tính trừu tượng hóa - Abstraction . 149
2.18. Hàm mẫu – Template Function. 149
2.19. Lớp mẫu – Template class . 150
CHƯƠNG 3. NAMESPACE .154
3.1. Từ khóa namespace. 154
3.2. Từ khóa using. 154
3.3. Phạm vi của namespace . 156
3.4. Tái định danh cho namespace . 156
3.5. Namespace std. 157
CHƯƠNG 4. NGOẠI LỆ.158
4.1. Câu lệnh try catch. 158
4.2. Câu lệnh throw . 158
4.3. Thư viện chuẩn exception . 158
CHƯƠNG 5. LÀM VIỆC VỚI FILE .161
5.1. Mở file. 161
5.2. Đóng file. 163
5.3. File văn bản . 163
5.4. Kiểm tra trạng thái của các cờ hiệu. 164
5.5. Con trỏ get và put. 164
5.6. File nhị phân. 166
5.7. Bộ đệm và Đồng bộ hóa. 167
CHƯƠNG 6. CÁC LỚP THƯ VIỆN.168
6.1. Lớp số phức complex. 168
6.2. Lớp ngăn xếp stack . 169
6.3. Lớp hàng đợi queue. 170
6.3. Lớp vector . 171
6.4. Lớp string . 174
6.5. Lớp list . 176
6.6. Lớp map . 176
6.7. Lớp set. 177T r a n g | 6
C++
6.8. Các lớp thư viện nhập xuất . 177
HƯỚNG DẪN THỰC HÀNH.184
BÀI THỰC HÀNH SỐ 1 . 184
BÀI THỰC HÀNH SỐ 2 . 184
BÀI THỰC HÀNH SỐ 3 . 185
BÀI THỰC HÀNH SỐ 4 . 186
BÀI THỰC HÀNH SỐ 5 . 186
BÀI THỰC HÀNH SỐ 6 . 187
BÀI TẬP NÂNG CAO .188
BÀI TẬP LỚN .194
DANH SÁCH HÌNH .196
TRA CỨU TỪ KHÓA .197
TÀI LIỆU THAM KHẢO .198
công ty. T r a n g | 192 C + + Một công ty sẽ tuyên bố phá sản nếu vốn điều lệ của họ bị âm. Vốn điều lệ là tổng ngân sách hiện có cộng với mức đóng góp của mỗi nhân viên trừ cho nguồn chi theo tháng và trừ tiếp cho tổng lương chi trả cho toàn bộ nhân viên. Hãy xây dựng chương trình để thực thi mô tả này. Bài 7. Hãy xây dựng chương trình ứng dụng theo mô tả sau. - Lớp đối tượng người dùng gồm các thuộc tính: username, password, câu hỏi bảo mật và câu trả lời. Bổ sung các phương thức tương ứng cho phù hợp. Khi chạy chương trình, người dùng nhập vào username và password. Nếu trùng khớp với username và password đã tạo trong hệ thống thì thông báo đăng nhập thành công. - Sau khi đăng nhập thành công, người dùng có quyền triệu gọi các phương thức tính toán của lớp số phức và phân số (cần xây dựng thêm hai lớp này). - Nếu người dùng đăng nhập không thành công, yêu cầu họ xác minh rằng có phải họ đã quên mật khẩu hay không bằng một câu hỏi bảo mật. Nếu trả lời đúng, thì cho phép họ thay đổi mật khẩu. - Nếu đăng nhập không thành công và trả lời sai câu hỏi bảo mật, hãy in ra thông báo “Bạn chưa phải là thành viên”, hãy chọn “y” để đăng kí và chọn “n” để thoát. Bài 8. Mỗi đối tượng Shape trong Microsoft Word đều có có các thuộc tính: màu viền, màu nền, nội dung văn bản bên trong, thứ bậc, tình trạng đang được chọn hay không và các phương thức khởi tạo, thay đổi giá trị cho mỗi thuộc tính (phương thức setter). Hãy tạo ra một mảng 10 phần tử Shape. Các giá trị thứ bậc không được trùng nhau (và phân bố từ 0-9). Trong 10 đối tượng này, tại mỗi thời điểm, chỉ có đúng một đối tượng đang ở tình trạng chọn. Nếu đối tượng ở tình trạng chọn, thì ta mới có quyền thay đổi giá trị cho nó. Hãy bổ sung thêm các phương thức cần thiết để thực hiện các yêu cầu trên. Bài 9. Hãy phân tích mô hình quản lý sinh viên trong trường đại học. Từ mô hình phân tích được, hãy xây dựng chương trình quản lý sinh viên. Trong mô hình này, yêu cầu quản lý không dưới 10 lớp đối tượng. Gợi ý: Các lớp đối tượng trong mô hình này bao gồm – Sinh viên, Giáo viên chủ nhiệm, Phòng Công tác học sinh sinh viên, Phòng Đào tạo, Phòng Tài chính, Khoa chuyên môn, Đoàn TN, Lớp, Phòng học, Môn học T r a n g | 193 C + + Bài 10. Hãy phân tích theo hướng đối tượng mô hình quản lý Nhà nước thu nhỏ được cho bên dưới đây. Từ mô hình phân tích đó, hãy xây dựng chương trình để quản lý Nhà nước thu nhỏ. Biết rằng, tương tác giữa các đối tượng có tính bắc cầu. Hình 17 – Mô hình tương tác quản lý Nhà nước. Bộ GD Bộ Y tế Bộ Công Thương Bộ Quốc Phòng Bộ Nông Nghiệp Sở GD Sở Y tế Cơ sở Kế thừa Tương tác T r a n g | 194 C + + BÀI TẬP LỚN Dự án 1. Phân tích, thiết kế và xây dựng chương trình quản lý thư viện. Trong chương trình này, cần đảm bảo các chức năng sau đây: - Trong mô hình quản lý này cần đảm bảo các thông tin: mã sách, tên sách, tên tác giả, năm xuất bản, nhà xuất bản, số trang, giá và số lượng. - Cho phép bổ sung thêm một hoặc nhiều quyển sách. - Cập nhập lại số lượng sách khi có người mượn/trả sách. - Tìm kiếm sách theo tên tác giả hoặc tên sách. - Kiểm tra tình trạng sách còn hay không. - Chương trình thực thi trên màn hình Console. Có menu tùy chọn. Dữ liệu được lưu trữ vào tập tin data.dat dưới dạng mã hóa nhị phân. Dự án 2. Phân tích, thiết kế và xây dựng chương trình quản lý website bán máy tính. Trong chương trình trình này, cần đảm bảo các chức năng sau đây: - Trong mô hình quản lý này, cần đảm bảo các thông tin: mã hàng, màu sắc, nước sản xuất, hãng, giá tiền, số lượng, thời gian bảo hành, có cài đặt hệ điều hành hay không, địa chỉ khác hàng, số điện thoại khách hàng. - Tìm kiếm mặt hàng theo tên hãng, giá tiền và nước sản xuất. - Kiểm tra tình trạng còn hàng hay không. - Bổ sung (nhập thêm hàng) hoặc xóa bỏ (bán hàng). - Chương trình thực thi trên màn hình Console. Có menu tùy chọn. Dữ liệu được lưu trữ vào tập tin data.dat dưới dạng mã hóa nhị phân. Dự án 3. Phân tích, thiết kế và xây dựng chương trình quản lý nhân viên trong công ty. Trong chương trình trình này, cần đảm bảo các chức năng sau đây: - Trong mô hình quản lý này, cần đảm bảo các thông tin: mã nhân viên, họ tên nhân viên, ngày tháng năm sinh, hệ số lương, năm bắt đầu công tác, tình trạng hôn nhân, bộ phận làm việc. - Tìm kiếm nhân viên theo họ tên. - Thống kê số lượng nhân viên theo bộ phận làm việc T r a n g | 195 C + + - Bổ sung (tuyển dụng) hoặc xóa bỏ (kết thúc hợp đồng). - Chương trình thực thi trên màn hình Console. Có menu tùy chọn. Dữ liệu được lưu trữ vào tập tin data.dat dưới dạng mã hóa nhị phân. Dự án 4. Phân tích, thiết kế và xây dựng game FarmVille (một game nổi tiếng trên Facebook). Trong game này, cần đảm bảo các chức năng sau đây: - Trong mô hình quản lý này, cần đảm bảo các thông tin: người chơi – email, tên người chơi, tổng số tiền. Các đối tượng trong game: tên đối tượng, trị giá, thời gian khởi tạo, thời gian thu hoạch. - Tìm kiếm người chơi theo họ tên. - Thống kê số tiền thu được của một người chơi. - Bổ sung người chơi hoặc đối tượng trong game. - Khi thu hoạch một đối tượng, thì trị giá của đối tượng sẽ được cập nhập vào cho tổng tiền của người chơi, đồng thời đối tượng cũng sẽ bị hủy. Đối tượng chỉ có thể được thu hoạch nếu: thời gian hiện tại – thời gian khởi tạo >= thời gian thu hoạch. - Chương trình có menu điều khiển, không yêu cầu tạo giao diện đồ họa. Ghi chú: Các sinh viên nộp đủ bài thực hành vào trước buổi thứ 5 sẽ có cơ hội nhận được bài tập lớn. Khi nhận được bài tập lớn, ngoài yêu cầu bổ sung của giảng viên, sinh viên cần thực thi thên các yêu cầu sau: - Phân tích mô hình lên giấy (nộp bản in). - Nộp chương trình hoàn chỉnh. Trong đó, chương trình hoàn chỉnh và tập tin word (*.doc; *.docx) phải được ghi lên đĩa CD, bên ngoài đĩa có ghi: tên sinh viên, lớp và “Bài tập lớn: Lập trình hướng đối tượng C++. Giảng viên hướng dẫn: .”. T r a n g | 196 DANH SÁCH HÌNH Hình 1 – Tạo mới dự án trong CodeBlocks .................................................................... 10 Hình 2 – Khởi tạo thân phương thức ............................................................................ 11 Hình 3 – Cấu hình MinGW trong Eclipse Helios ......................................................... 12 Hình 4 – Chọn đường dẫn đến thư mục bin của MinGW .......................................... 12 Hình 5 - Tạo mới dự án ....................................................................................................... 13 Hình 6 - Cấu trúc thư mục của một dự án ................................................................... 13 Hình 7 - Biên dịch một dự án .............................................................................................. 14 Hình 8 - Hộp thoại tạo mới class........................................................................................ 14 Hình 9 - Giao diện tổng thể của Visual Studio 2010 ................................................... 16 Hình 10 - Tạo dự án Win32 Console ................................................................................ 17 Hình 11 - Win32 Application Wizard ............................................................................ 17 Hình 12 - Bổ sung thêm một tập tin .................................................................................. 18 Hình 13 - Bổ sung thêm lớp đối tượng ............................................................................ 19 Hình 14 - Tạo lớp bằng Class Wizard .............................................................................. 19 Hình 15 - Xem biểu đồ lớp .................................................................................................. 21 Hình 16.2 – Tham chiếu trong con trỏ ............................................................................. 79 Hình 17 – Mô hình tương tác quản lý Nhà nước. ...................................................... 193 T r a n g | 197 TRA CỨU TỪ KHÓA MỘT SỐ THUẬT NGỮ ANH-VIỆT ĐƯỢC SỬ DỤNG TRONG GIÁO TRÌNH Nguyên bản tiếng Anh Dịch sang tiếng Việt Abstract base class Lớp cơ sở trừu tượng Abstraction Tính trừu tượng Arithmetic operators Toán tử số học Assignment operators Toán tử gán Base class Lớp cơ sở/ Lớp cha Bitwise operators Toán tử dịch bit Child class/SubClass Lớp con Class Lớp Comma operators Toán tử phân tách Compound assignment operator Toán tử gán hợp nhất Conditional operators Toán tử điều kiện Encapsulation Tính đóng gói Exception Ngoại lệ Explicit type casting operators Toán tử chuyển đổi kiểu dữ liệu Increase and decrease operators Toán tử tăng giảm Information hiding Che dấu/ẩn dấu thông tin Inheritance Tính thừa kế/ Tính kế thừa Instance Sự thể hiện Logical operators Toán tử logic Multiple inheritance Tính đa thừa kết/Tính đa kế thừa Object Đối tượng Operator Toán tử Operator overloading Chồng chất toán tử Overload Chồng chất Override Quá tải Polymorphism Tính đa hình Prototype Nguyên mẫu Pure virtual function Hàm ảo thuần túy Reference Tham chiếu Relational and equality operators Toán tử quan hệ và so sánh T r a n g | 198 TÀI LIỆU THAM KHẢO [1]. Đoàn Xuân Ban. Phân tích, thiết kế và lập trình hướng đối tượng với C++, NXB Thống kê, 1997. [2]. Nguyễn Đình Tê. Hoàng Đức Hải, Giáo trình lý thuyết và bài tập ngôn ngữ C++, NXB Giáo dục, 2006 [3]. Phạm Văn Ất. C++ và lập trình hướng đối tượng, NXB Thống kê. [4]. Sir M. Vasanji Road. Object Oriented Programming with C++, Printed in India, 1st Edition – June 1999. [5]. [6] Sharam Hekmat. “C++ Programming”, Pragmatix Software Pt, 2004. [6]. Mục: XL C/C++ V8.0 for AIX. Language Reference. [7]. [8]. Ivor Horton. Beginning Visual C++ 2010. Wrox pub. [9]. Edward Scheinerman. C++ for Mathematicians. An introduction for Student and Professional. Chapman & Hall/CRC. [10].
File đính kèm:
- giao_trinh_lap_trinh_huong_doi_tuong_c_cao_dang_cong_nghiep.pdf