Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 230 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
230
Dung lượng
3,84 MB
Nội dung
ĐẶNG NGỌC HỒNG THÀNH C++ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Tài liệu học tập Trang | CuuDuongThanCong.com https://fb.com/tailieudientucntt PHỤ LỤC GIỚI THIỆU .7 MÔI TRƯỜNG PHÁT TRIỂN TÍCH HỢP IDE 10 CHƯƠNG CƠ BẢN VỀ C++ 23 CHƯƠNG BIẾN VÀ CÁC KIỂU DỮ LIỆU 26 Từ khóa 26 Kiểu liệu nguyên thủy 27 Khai báo biến 28 Phạm vi tác dụng biến 29 Khởi tạo giá trị cho biến 30 Khởi tạo giá trị cho biến tĩnh static 31 Giới thiệu xâu kí tự 32 CHƯƠNG HẰNG 34 Hằng số nguyên 34 Hằng số thực có dấu chấm động 34 Hằng kí tự xâu kí tự 35 Hằng logic 36 Định nghĩa #define 36 Khai báo const 37 CHƯƠNG TOÁN TỬ 38 Toán tử gán 38 Toán tử thực phép toán số học 39 Toán tử gán hợp 40 Toán tử tăng v{ giảm 40 Toán tử logic 42 Toán tử điều kiện 43 Toán tử phân tách 45 Trang |2 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Toán tử so sánh 41 Toán tử dịch bit 45 Toán tử chuyển đổi kiểu liệu 48 Các toán tử khác 49 Thứ tự ưu tiên toán tử 49 CHƯƠNG XUẤT NHẬP CƠ BẢN 52 Xuất liệu chuẩn cout 52 Nhập liệu chuẩn cin 53 Nhập liệu nhờ lớp stringstream 55 CHƯƠNG CÁC CẤU TRÚC LỆNH ĐIỀU KHIỂN 58 Cấu trúc lệnh có điều kiện: if else 58 Cấu trúc lặp 60 Cấu trúc lựa chọn: switch 67 CHƯƠNG HÀM 72 Khai báo sử dụng hàm 73 Phạm vi tác dụng biến 77 Hàm không trả giá trị - Hàm void 78 Tham biến tham trị 79 Giá trị mặc định tham số hình thức 82 Chồng chất hàm 83 Hàm nội tuyến 84 H{m đệ quy 85 CHƯƠNG CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC 88 Mảng 88 Xâu kí tự 91 CHƯƠNG CON TRỎ 93 Toán tử tham chiếu ngược * 94 Khai báo biến trỏ 96 Con trỏ, mảng xâu kí tự 98 Trang |3 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Toán tử tham chiếu & 93 Các phép toán số học trỏ 100 Con trỏ trỏ vào trỏ 102 Con trỏ void 104 Con trỏ null 105 Con trỏ hàm 105 CHƯƠNG 10 BỘ NHỚ ĐỘNG 107 Toán tử new new[] 107 Toán tử delete delete[] 109 CHƯƠNG 11 KIỂU DỮ LIỆU STRUCT VÀ CON TRỎ STRUCT 110 Struct 110 Con trỏ struct 114 Struct lồng 115 Kích thước nhớ struct 115 CHƯƠNG 12 CÁC KIỂU DỮ LIỆU KHÁC 117 Kiểu liệu tự định nghĩa 117 Kiểu liệu union thường 117 Kiểu liệu union ẩn danh 118 Kiểu liệu enum 118 CHƯƠNG 13 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 120 Lịch sử hình thành 120 Lớp v{ đối tượng 126 Hàm tạo hàm hủy 130 Chồng chất hàm tạo 132 Sao chép hàm tạo 133 Con trỏ đối tượng 140 Lớp khai báo nhờ từ khóa struct union 141 Con trỏ this 141 Th{nh viên tĩnh – Từ khóa static 143 Trang |4 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Tính đóng gói – Encapsulation 139 Hàm bạn lớp bạn 144 Chồng chất toán tử 147 Tính kế thừa - Inheritance 153 Các mức truy cập 156 Tính đa kế thừa – Multiple Inheritance 159 Tính đa hình – Polymorphism 160 Tính trừu tượng hóa - Abstraction 172 Hàm mẫu – Template Function 173 Lớp mẫu – Template class 173 CHƯƠNG 14 NAMESPACE 178 Từ khóa namespace 178 Từ khóa using 179 Phạm vi namespace 180 T|i định danh cho namespace 181 Namespace std 181 CHƯƠNG 15 NGOẠI LỆ 182 Mệnh đề try…catch 182 Mệnh đề throw 182 Thư viện chuẩn exception 183 CHƯƠNG 16 LÀM VIỆC VỚI FILE 186 Mở file 186 Đóng file 188 File văn 188 Kiểm tra trạng thái cờ hiệu 189 Con trỏ get put 190 Bộ đệm v{ Đồng hóa 193 CHƯƠNG 17 CÁC LỚP THƯ VIỆN 194 Lớp số phức complex 194 Trang |5 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ File nhị phân 192 Lớp ngăn xếp stack 196 Lớp h{ng đợi queue 197 Lớp vector 198 Lớp string 200 Lớp list 203 Lớp map 203 Lớp set 204 Các lớp thư viện nhập xuất 204 HƯỚNG DẪN THỰC HÀNH 212 BÀI THỰC HÀNH SỐ 212 BÀI THỰC HÀNH SỐ 213 BÀI THỰC HÀNH SỐ 214 BÀI THỰC HÀNH SỐ 215 BÀI THỰC HÀNH SỐ 215 BÀI THỰC HÀNH SỐ 216 BÀI TẬP NÂNG CAO 218 BÀI TẬP LỚN 225 DANH SÁCH HÌNH 228 TRA CỨU TỪ KHÓA 229 C++ TÀI LIỆU THAM KHẢO 230 Trang |6 CuuDuongThanCong.com https://fb.com/tailieudientucntt GIỚI THIỆU Cấu trúc giáo trình Gi|o trình chia làm 17 chương chương chia làm mục khác C|c chương xếp theo trình tự từ lập trình hướng thủ tục C++ đến lập trình hướng đối tượng lớp thư viện Độc giả truy cập vào mục từ phần phụ lục nằm đầu sách Nhiều mục bao gồm ví dụ để mơ tả cách sử dụng Tơi khun bạn nên đọc ví dụ hiểu đoạn mã chương trình trước đọc chương Một cách thức tốt để tăng lượng kiến thức nhận l{ h~y chỉnh sửa, bổ sung mã lệnh dựa ví dụ mẫu, theo hướng tư của thân, để từ hiểu c|ch đầy đủ nội dung mà ta tiếp thu Sau đọc xong giáo trình, tơi cịn cung cấp số tập thực hành đề nghị để độc giả nên thử nghiệm Hãy giải tập này, chúng hữu ích giúp bạn cố lại kiến thức môn học hiểu sâu sắc phần lý thuyết Khi viết giáo trình này, tơi khơng thể tránh khỏi sai sót Rất mong đóng góp ý kiến quý báu bạn độc c|c bạn đồng nghiệp Mọi đóng góp xin liên hệ theo địa email: dnhthanh@hueic.edu.vn Hi vọng với ý kiến đóng góp bạn, giáo trình ngày hoàn thiện Một vài ý tương thích C C++ Chuẩn ANSI-C++ tổ chức tiêu chuẩn quốc tế thống đưa Nó thức mắt v{o th|ng 11 năm 1997 v{ duyệt lại vào Trang |7 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Một điều mà độc giả cần lưu ý: h~y đọc trang cuối s|ch, để nắm số thuật ngữ anh-việt tương ứng sử dụng giáo trình Tơi có gắng sử dụng tên gọi phù hợp với đại đa số giáo trình hành Tuy nhiên, độc giả nên nắm thuật ngữ tiếng anh tương ứng, để tham khảo thêm tài liệu chuyên môn tiếng anh năm 2003 Tuy nhiên, ngôn ngữ C++ đ~ tồn trước thời gian kh| d{i (v{o năm 1980) Trước đó, có nhiều trình dịch khơng hỗ trợ c|c tính bao gồm chuẩn ANSI-C++ Giáo trình xây dựng c|c chương trình dịch đại hỗ trợ đầy đủ chuẩn ANSI-C++ Tơi đảm bảo ví dụ hoạt động tốt độc giả sử dụng trình dịch hỗ trợ ANSI-C++ Có nhiều chọn lựa, miễn phí phần mềm thương mại Trong giáo trình này, tơi giới thiệu đến các bạn hai công cụ biên dịch C++ GCC MinGW – miễn phí Visual C++ - thương mại Các ví dụ gi|o trình n{y xây dựng chủ yếu chế độ console (m{n hình DOS) Điều có nghĩa l{ sử dụng chế độ văn để hiển thị kết Mọi trình dịch C++ hỗ trợ chế độ dịch console Với mơi trường phát triển tích hợp IDE cho C++ miễn phí, sử dụng chương trình Codeblocks Eclipse Chúng môi trường phát triển tích hợp hỗ trợ soạn thảo biên dịch C++ Chúng hỗ trợ môi trường GCC để biên dịch C C++ Với CodeBlocks, tải phần mềm địa http://www.codeblocks.org/downloads Đối với Eclipse, trình soạn thảo biên dịch ngơn ngữ lập trình chun nghiệp ho{n tồn miễn phí (vì ta cấu hình kết hợp với cơng cụ biên dịch kh|c để tạo môi trường phát triển tích hợp cho ngơn ngữ lập trình khác nhau) Chúng ta dùng để soạn thảo biên dịch Java, PHP, JSP, Python… v{ hiển nhiên C/C++ Đ}y l{ dự án mã nguồn mở, tiêu tốn hàng triệu đôla IBM Để tải thời điểm n{y (năm 2010) l{ Eclipse Helios, ta truy cập đến địa bên dưới1 Đối với Eclipse, nên sử dụng kết hợp với trình biên dịch C++ MinGW, l{ dự án mở Chúng ta tải địa bên dưới2 Với Eclipse, cơng việc cấu hình ban đầu tương đối phức tạp Nhưng l{ trình soạn thảo tuyệt vời Ta sử dụng để soạn thảo nhiều ngơn ngữ lập trình c|ch c{i đặt thêm plugin hỗ trợ Nhiều nhà phát triển đ~ sử dụng Eclipse làm tải http://ftp.jaist.ac.jp/pub/eclipse/technology/epp/downloads/release/helios/R/eclipse-cpp-helioswin32.zip http://nchc.dl.sourceforge.net/project/mingw/Automated%20MinGW%20Installer/mingw-getinst/mingw-get-inst-20100831/mingw-get-inst-20100831.exe Trang |8 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Trình biên dịch cho việc phát triển ứng dụng mình: Embarcadero sử dụng để phát triển JBuider, Adobe sử dụng để phát triển Flash Buider nhiều hãng phần mềm tiếng khác Nếu lập trình viên Java, Eclipse lựa chọn bỏ qua Nếu phát triển Flash theo dự án mã nguồn mở từ Adobe, Eclipse l{ lựa chọn hoàn hảo Nếu phát triển C/C++, với trình soạn thảo Eclipse l{ lựa chọn khơng tồi Việc sử dụng thành thạo Eclipse lợi cho tiến hành nghiên cứu Java, lập trình Web, Flex, Python… sau C++ Bên cạnh đó, chúng tơi giới thiệu mơi trường phát triển tích hợp IDE Microsoft Visual Studio Đ}y l{ trình biên dịch thương mại trình biên dịch chuyên nghiệp tiếng hệ điều hành Windows Ta sử dụng để phát triển ứng dụng NET ứng dụng Win32 Nếu muốn phát triển ứng dụng theo hướng Microsoft, ta nên sử dụng Visual Studio Phiên đến thời điểm VS 2010 Nhưng cần lưu ý rằng, nghiên cứu Visual C++, chọn lựa phiên dành cho Win32 mà ứng dụng CLI (common language infrastructure) phát triển NET Và Visual C++ for NET có số khác biệt so với Visual C++ for Win32 Trang |9 CuuDuongThanCong.com https://fb.com/tailieudientucntt MƠI TRƯỜNG PHÁT TRIỂN TÍCH HỢP IDE CodeBlocks Trước tiên, tìm hiểu cách tạo dự án, biên dịch tập tin C++ CodeBlocks Độc giả cần lưu ý rằng, CodeBlocks tổ chức công việc theo dự án Chúng ta biên dịch tập tin cpp c|ch đơn lẻ Tuy nhiên, làm việc theo dự án giúp ích cho nhiều làm việc với tác vụ lớn Đầu tiên khởi động codeblocks, sau v{o File > New > Project Trong hộp thoại ra, chọn console application (Hình 1) Và nhấp Go, sau nhấp Next Trong hộp thoại tiếp theo, ta chọn C++ nhấp Next Hình – Tạo dự án CodeBlocks Trong cửa sổ quản lý dự án, ta nhấp đôi chuột vào tệp main.cpp Nội dung soạn thảo nhập vào tập tin Nếu ta muốn bổ sung tập tin khác lớp đối tượng, ta bổ sung chúng từ menu File > New T r a n g | 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Hộp thoại yêu cầu điền thông tin dự án xuất H~y điền tên dự án, vị trí lưu trữ dự |n Sau nhấp Next Cuối nhấp Finish Phần Thực hành BÀI THỰC HÀNH SỐ Lớp sở trừu tượng C++ Xây dựng lớp sở trừu tượng Vector chứa ba phương thức ảo túy: TinhDoDai (tính độ dài), SinGoc (tính sin góc hai Vector), TrucGiao (tìm vector trực giao – tức vector vng góc với vector trên), hai thuộc tính thành viên tọa độ x v{ y, hai phương thức setter (không sử dụng hàm tạo trường hợp này, lớp trừu tượng khơng có khả tạo thể hiện, hàm tạo không thừa kế); sử dụng phương thức tham chiếu getter Xây dựng lớp Vector2D thừa kế từ lớp sở trừu tượng Vector để thực thi c|c phương thức ảo túy nêu Xây dựng lớp Vector3D thừa kế từ lớp sở trừu tượng Vector (bổ sung thêm tọa độ z v{ c|c phương thức getter, setter tương ứng) để thực thi phương thức ảo túy nêu Trong đó, Vector2D l{ vector chiều (chỉ có hai tọa độ x y); Vector3D vector chiều (có ba tọa độ x, y z) THANG ĐIỂM ĐÁNH GIÁ KĨ NĂNG Bài thực hành số Điểm 20 15 20 15 Ngưỡng đạt 60-70 Cộng điểm 70-80 80-90 Quy đổi +1 +1.5 20 10 90-100 +2 - Hạn nộp thực h{nh tương ứng với buổi thực hành Ví dụ: Bài thực hành số phải nộp hạn vào buổi thứ (mới đạt điểm tối đa) Nếu muộn buổi, trừ điểm Nếu nộp tất vào buổi cuối cùng, tối đa đạt Ngưỡng Đạt T r a n g | 216 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ - Mỗi thực hành thực nhà lớp, phải nộp b{i thời hạn Phần Thực hành - Điểm tổng kết mơn học gồm có cột điểm qu| trình v{ điểm thi Điểm Quá trình = Điểm chuyên cần; Điểm Quá trình 2, Điểm Quá trình tương ứng với trắc nghiệm; Điểm Quá trình = Điểm Thực hành/10 Điểm thi cuối kết thi đạt cộng thêm điểm Quy đổi Điểm tổng kết tính theo công thức: ) C++ ( T r a n g | 217 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phần Bài tập BÀI TẬP NÂNG CAO Bài tập Xây dựng c|c h{m để tính tổng sau đ}y: ( ( ) ) ( ) Trong đó: n , x k tham số nhập vào từ bàn phím Bài tập Khai báo chuỗi kí tự cách sử dụng trỏ Sau x}y dựng c|c h{m để thực câu sau: - Đếm số kí tự có giá trị a - Đảo xâu kí tự - Đảo từ - Đếm số từ - Nhóm kí tự loại Ví dụ: Xâu ban đầu: aaabbbaacbd Xâu in ra: 5a4b1c1d - Thuật toán nén liệu RLE (Run length Encoding) thuật tốn nén khơng liệu lossless Nó sử dụng để nén ảnh định dạng bmp Thuật toán RLE thực đếm số kí tự giống liên tiếp, sau Trang | 218 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phần Bài tập đó, thay tồn dãy kí tự giống số kí tự đếm sau l{ kí tự tương ứng Ví dụ: Xâu ban đầu: aaaabbbbcdddAA Xâu sau nén: 4a4b1c3d2A + Hãy xây dựng h{m RLE để nén liệu Với liệu nhập vào từ bàn phím + Hãy xây dựng h{m IRLE để giải nén liệu Với liệu nhập vào từ bàn phím Bài tập Xây dựng hàm thực chức sau đ}y mảng chiều hai cách: khai báo theo kiểu thông thường khai báo trỏ - Hàm nhập liệu cho mảng chiều - Hàm xuất liệu cho mảng chiều - Hàm tính tổng phần tử mảng - Hàm tính tổng phần tử mảng số nguyên tố - Hàm tính tổng phần tử mảng số phương - Hàm tính tổng số nguyên tố mảng lớn 10 v{ nhỏ 100 - Hàm tính tổng phần tử mảng số phương chẵn - Hàm đếm số phần tử mảng số nguyên tố - Hàm đếm số phần tử mảng số phương - Hàm đếm số phần tử mảng số nguyên tố lớn 10 v{ nhỏ 50 - Hàm đếm số phần tử mảng số phương chẵn - Hàm tìm kiếm số phần tử có giá trị x mảng - Hàm tính giá trị trung bình mảng C++ - Hàm tìm số phần tử có giá trị nhỏ - Hàm tìm số phần tử có giá trị lớn T r a n g | 219 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phần Bài tập - Hàm xếp mảng theo thứ tự tăng dần (có thể sử dụng thuật tốn xếp bất kì) - Hàm tính giá trị trung bình phần tử mảng có giá trị chẵn - Hàm dồn tất phần tử chẵn phía, phần tử lẻ phía Ví dụ, mảng ban đầu là: kết - H{m x|c định phần tử có giá trị gần với giá trị trung bình mảng - H{m đẩy phần tử mảng lên n vị trí Ví dụ mảng ban đầu Nếu n = 2, mảng thu Bổ sung hàm main v{ c|c thư viện để nhận chương trình hồn chỉnh Các hàm cần khai báo theo prototype Bài tập Xây dựng c|c h{m để thực chức sau đ}y mảng hai chiều hai cách khai báo: theo kiểu thông thường khai báo trỏ - Hàm nhập giá trị cho mảng hai chiều - Hàm xuất giá trị mảng hai chiều theo dạng ma trận - Hàm cộng hai ma trận - Hàm nhân hai ma trận - Hàm thay tất phần tử có giá trị lẻ ma trận thành - Hàm thay tất phần tử âm ma trận phần tử dương tương ứng - Hàm thay phần tử có giá trị nhỏ gi| trị trung bình ma trận phần tử Các hàm yêu cầu xây dựng theo prototype Các ma trận (mảng hai chiều) tập ma trận vuông Bổ sung h{m main v{ c|c thư viện cần thiết để chương trình ho{n chỉnh Bài tập T r a n g | 220 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ - H{m tính lũy thừa ma trận vng Phần Bài tập Hãy chọn lựa c|c phương ph|p phù hợp lập trình hướng đối tượng để lập trình giải c|c b{i to|n sau đ}y a) Xây dựng lớp TamGiac (tam giác) gồm có ba cạnh với c|c phương thức sau: - Các phương thức khởi tạo cho tam giác: khơng tham số, có tham số chép hàm tạo - Các phương thức Getter - Phương thức KiemTra biết có phải tam giác thực khơng - Phương thức tính diện tích tam giác tam giác thực - Các phương thức nhập/xuất cho tam giác Xây dựng theo toán tử b) Xây dựng lớp Diem (điểm) gồm có tọa độ x, y, z v{ c|c phương thức sau: - C|c phương thức khởi tạo - C|c phương thức Getter - Phương thức tính khoảng cách hai điểm Xây dựng lớp Vector gồm có hai thuộc tính tương ứng với hai đối tượng Diem (điểm đầu v{ điểm mút) Hãy bổ sung c|c phương thức sau cho lớp Vector: - C|c phương thức khởi tạo - C|c phương thức Getter - Phương thức tính độ dài vector - Phương thức tính tích vơ hướng hai vector - Phương thức tính cosin góc hai vector - Phương thức tính tích hữu hướng hai vector T r a n g | 221 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ - Phương thức cộng hai vector Xây dựng theo toán tử Phần Bài tập Xây dựng lớp HinhCau (hình cầu) gồm hai thuộc tính l{ đối tượng Diem tương ứng với tâm hình cầu bán kính R Hãy bổ sung c|c phương thức sau cho lớp HinhCau: - C|c phương thức khởi tạo - C|c phương thức Getter - Phương thức tính diện tích hình cầu - Phương thức x|c định vị trí tương đối hình cầu điểm - Phương thức x|c định vị trí tương đối hai hình cầu u cầu chung: bổ sung hàm toán tử nhập xuất cho lớp đối tượng Bài Xây dựng lớp ConNguoi gồm có hai thuộc tính thành viên là: tên tuổi Các phương thức khởi tạo v{ c|c phương thức Getter tương ứng Lớp NhanVien thừa kế từ lớp ConNguoi, cách bổ sung thêm hai thuộc tính l{: m~ nh}n viên, lương v{ mức đóng góp (tính theo lương) Bổ sung phương thức khởi tạo v{ c|c phương thức Getter Các công ty quản lý nhân viên Đối tượng CongTy có thuộc tính: tên cơng ty, mức đóng góp chuẩn, ngân sách có, nguồn thu theo tháng, nguồn chi theo tháng Giả sử nguồn chi khơng bao gồm chi phí trả lương cho nh}n viên Đối tượng CongTy có phương thức tuyển dụng để tuyển thêm nh}n viên, v{ phương thức sa thải để sa thải nhân viên Một công ty tuyên bố phá sản vốn điều lệ họ bị âm Vốn điều lệ tổng ngân sách có cộng với mức đóng góp nhân viên trừ cho nguồn chi theo tháng trừ tiếp cho tổng lương chi trả cho toàn nhân viên Hãy xây dựng chương trình để thực thi mơ tả Bài Hãy xây dựng chương trình ứng dụng theo mơ tả sau T r a n g | 222 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Một nhân viên bị sa thải, mức đóng góp họ nhỏ mức đóng góp chuẩn công ty Phần Bài tập - Lớp đối tượng người dùng gồm thuộc tính: username, password, câu hỏi bảo mật 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 password Nếu trùng khớp với username password đ~ tạo hệ thống thơng b|o đăng nhập thành cơng - Sau đă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 tốn lớp số phức 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 có phải họ đ~ quên mật hay không câu hỏi bảo mật Nếu trả lời đúng, cho phép họ thay đổi mật - Nếu đăng nhập không thành công trả lời sai câu hỏi bảo mật, in thông b|o “Bạn chưa phải thành viên”, h~y chọn “y” để đăng kí v{ chọn “n” để Bài Mỗi đối tượng Shape Microsoft Word có có thuộc tính: màu viền, màu nền, nội dung văn bên trong, thứ bậc, tình trạng chọn hay không v{ c|c phương thức khởi tạo, thay đổi giá trị cho thuộc tính (phương thức setter) Hãy tạo mảng 10 phần tử Shape Các giá trị thứ bậc không trùng (và phân bố từ 0-9) Trong 10 đối tượng này, thời điểm, có đối tượng tình trạng chọn Nếu đối tượng tình trạng chọn, ta có quyền thay đổi giá trị cho Hãy bổ sung thêm c|c phương thức cần thiết để thực yêu cầu Bài Gợi ý: Các lớp đối tượng mơ hình 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 chun mơn, Đồn TN, Lớp, Phịng học, Mơn học… Bài 10 T r a n g | 223 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Hãy phân tích mơ hình quản lý sinh viên trường đại học Từ mơ hình ph}n tích được, xây dựng chương trình quản lý sinh viên Trong mơ hình này, u cầu quản lý khơng 10 lớp đối tượng Phần Bài tập H~y ph}n tích theo hướng đối tượng mơ hình quản lý Nh{ nước thu nhỏ cho bên đ}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 c|c đối tượng có tính bắc cầu Bộ GD Sở GD Bộ Y tế Sở Y tế Bộ Cơng Thương Bộ Quốc Phịng Bộ Nơng Nghiệp Kế thừa Cơ sở Tương t|c C++ Hình 23 – Mơ hình tương t|c quản lý Nh{ nước T r a n g | 224 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phần Bài tập BÀI TẬP LỚN Dự án Phân tích, thiết kế 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 chức sau đ}y: - Trong mơ hình quản lý cần đảm bảo 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á số lượng - Cho phép bổ sung thêm nhiều sách - Cập nhập lại số lượng s|ch có người mượn/trả sách - Tìm kiếm sách theo tên tác giả 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 hình Console Có menu tùy chọn Dữ liệu lưu trữ vào tập tin data.dat dạng mã hóa nhị phân Dự án Phân tích, thiết kế 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 chức sau đ}y: - Trong mơ hình quản lý này, cần đảm bảo 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 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) xóa bỏ (bán hàng) Dự án Phân tích, thiết kế xây dựng chương trình quản lý nhân viên cơng ty Trong chương trình trình n{y, cần đảm bảo chức sau đ}y: T r a n g | 225 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ - Chương trình thực thi hình Console Có menu tùy chọn Dữ liệu lưu trữ vào tập tin data.dat dạng mã hóa nhị phân Phần Bài tập - Trong mơ hình quản lý này, cần đảm bảo 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 nhân, 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 phận làm việc - Bổ sung (tuyển dụng) xóa bỏ (kết thúc hợp đồng) - Chương trình thực thi hình Console Có menu tùy chọn Dữ liệu lưu trữ vào tập tin data.dat dạng mã hóa nhị phân Dự án Phân tích, thiết kế xây dựng game FarmVille (một game tiếng Facebook) Trong game này, cần đảm bảo chức sau đ}y: - Trong mơ hình quản lý này, cần đảm bảo thông tin: người chơi – email, tên người chơi, tổng số tiền C|c đối tượng 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 người chơi - Bổ sung người chơi đối tượng game - Khi thu hoạch đối tượng, trị giá đối tượng cập nhập vào cho tổng tiền người chơi, đồng thời đối tượng bị hủy Đối tượng thu hoạch nếu: thời gian – thời gian khởi tạo >= thời gian thu hoạch Ghi chú: Các sinh viên nộp đủ thực h{nh v{o trước buổi thứ có hội nhận tập lớn Khi nhận tập lớn, yêu cầu bổ sung giảng viên, sinh viên cần thực thi thên yêu cầu sau: - Phân tích mơ hình lên giấy (nộp in) T r a n g | 226 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ - Chương trình có menu điều khiển, khơng u cầu tạo giao diện đồ họa Phần Bài tập C++ - Nộp chương trình ho{n chỉnh Trong đó, chương trình hồn chỉnh tập tin word (*.doc; *.docx) phải 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 | 227 CuuDuongThanCong.com https://fb.com/tailieudientucntt DANH SÁCH HÌNH Hình – Tạo dự án CodeBlocks 10 Hình – Khởi tạo th}n phương thức 11 Hình – Cấu hình MinGW Eclipse Helios 12 Hình – Chọn đường dẫn đến thư mục bin MinGW 13 Hình - Tạo dự án 13 Hình - Cấu trúc thư mục dự án 14 Hình - Biên dịch dự án 14 Hình - Hộp thoại tạo class 15 Hình - Giao diện tổng thể Visual Studio 2010 17 Hình 10 - Tạo dự án Win32 Console 18 Hình 11 - Win32 Application Wizard 18 Hình 12 - Bổ sung thêm tập tin 20 Hình 13 - Bổ sung thêm lớp đối tượng 20 Hình 14 - Tạo lớp Class Wizard 21 Hình 15 - Xem biểu đồ lớp 22 Hình 16 – Sơ đồ minh họa việc sử dụng hàm 72 Hình 17 – Tham chiếu trỏ 94 Hình 18 – Tham chiếu ngược trỏ 95 Hình 19 – Tăng/Giảm địa trỏ 101 Hình 20 – Minh họa sơ đồ lớp 125 Hình 21 – Tính kế thừa 153 Hình 22 – Lớp sở ảo 164 Hình 23 – Mơ hình tương t|c quản lý Nh{ nước 224 Trang | 228 CuuDuongThanCong.com https://fb.com/tailieudientucntt TRA CỨU TỪ KHÓA MỘT SỐ THUẬT NGỮ ANH-VIỆT ĐƯỢC SỬ DỤNG TRONG GIÁO TRÌNH Dịch sang tiếng Việt Lớp sở trừu tượng Tính trừu tượng Tốn tử số học Toán tử gán Lớp sở/ Lớp cha Toán tử dịch bit Lớp Lớp Toán tử phân tách Toán tử gán hợp Toán tử điều kiện Tính đóng gói Ngoại lệ Tốn tử chuyển đổi kiểu liệu Tốn tử tăng giảm Che dấu/ẩn dấu thơng tin Tính thừa kế/ Tính kế thừa Sự thể Tốn tử logic Tính đa thừa kết/Tính đa kế thừa Đối tượng Toán tử Chồng chất toán tử Chồng chất Q tải Tính đa hình Ngun mẫu Hàm ảo túy Tham chiếu Toán tử quan hệ so sánh C++ Nguyên tiếng Anh Abstract base class Abstraction Arithmetic operators Assignment operators Base class Bitwise operators Child class/SubClass Class Comma operators Compound assignment operator Conditional operators Encapsulation Exception Explicit type casting operators Increase and decrease operators Information hiding Inheritance Instance Logical operators Multiple inheritance Object Operator Operator overloading Overload Override Polymorphism Prototype Pure virtual function Reference Relational and equality operators T r a n g | 229 CuuDuongThanCong.com https://fb.com/tailieudientucntt TÀI LIỆU THAM KHẢO C++ [1] http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index jsp // Mục: XL C/C++ V8.0 for AIX // Language Reference [2] http://msdn.microsoft.com/enus/library/3bstk3k5%28v=VS.80%29.aspx [3] Ivor Horton// Beginning Visual C++ 2010// Wrox pub [4] C++ for Mathematicians// An introduction for Student and Professional//Edward Scheinerman//Chapman & Hall/CRC T r a n g | 230 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... Trong phần lập trình hướng đối tượng, làm quen thêm nhiều toán tử khác Theo trình tự trình bày giáo trình này, chưa thảo luận thêm chúng Ta tìm hiểu chi tiết phần hướng đối tượng giáo trình Thứ... BẢN VỀ C++ Cấu trúc chương trình C++ Một cách thức tốt để học lập trình l{ h~y thử viết chương trình Nếu đ~ làm quen với ngôn ngữ lập trình n{o đó, hẳn biết đến ví dụ kinh điển ngơn ngữ lập trình. .. chia làm 17 chương chương chia làm mục khác C|c chương xếp theo trình tự từ lập trình hướng thủ tục C++ đến lập trình hướng đối tượng lớp thư viện Độc giả truy cập vào mục từ phần phụ lục nằm