Giáo trình lập trình hướng đối tượng c đặng ngọc hoàng thành

208 224 0
Giáo trình lập trình hướng đối tượng c   đặng ngọc hoàng thành

Đ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

ĐẶ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 Đặng Ngọc Hoàng Thành 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 ngun 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 31 Khởi tạo giá trị cho biến tĩnh static 32 Giới thiệu xâu kí tự 32 CHƯƠNG HẰNG 34 Hằng số ngun 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 TỐN TỬ 38 Tốn tử gán 38 Tốn tử thực phép tốn số học 39 Tốn tử gán hợp 40 Tốn tử tăng v{ giảm 40 Tốn tử logic 42 Tốn tử điều kiện 43 Tốn tử phân tách 45 Trang |2 C++ Tốn tử so sánh 41 Đặng Ngọc Hoàng Thành Tốn tử dịch bit 45 Tốn tử chuyển đổi kiểu liệu 48 Các tốn tử khác 49 Thứ tự ưu tiên tố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 54 CHƯƠNG CÁC CẤU TRÚC LỆNH ĐIỀU KHIỂN 57 Cấu trúc lệnh có điều kiện: if else 57 Cấu trúc lặp 59 Cấu trúc lựa chọn: switch 66 CHƯƠNG HÀM 70 Khai báo sử dụng hàm 71 Phạm vi tác dụng biến 75 Hàm khơng trả giá trị - Hàm void 76 Tham biến tham trị 77 Giá trị mặc định tham số hình thức 80 Chồng chất hàm 81 Hàm nội tuyến 82 H{m đệ quy 83 Hàm mẫu – Template Function 84 CHƯƠNG CÁC KIỂU DỮ LIỆU CĨ CẤU TRÚC 86 Mảng 86 Xâu kí tự 90 CHƯƠNG CON TRỎ 91 Tốn tử tham chiếu ngược * 92 Khai báo biến trỏ 94 Trang |3 C++ Tốn tử tham chiếu & 91 Đặng Ngọc Hoàng Thành Con trỏ, mảng xâu kí tự 96 Các phép tốn số học trỏ 98 Con trỏ trỏ vào trỏ 100 Con trỏ void 102 Con trỏ null 103 Con trỏ hàm 103 CHƯƠNG 10 BỘ NHỚ ĐỘNG 105 Tốn tử new new[] 105 Tốn tử delete delete[] 107 CHƯƠNG 11 KIỂU DỮ LIỆU STRUCT VÀ CON TRỎ STRUCT 108 Struct 108 Con trỏ struct 112 Struct lồng 113 Kích thước nhớ struct 113 CHƯƠNG 12 CÁC KIỂU DỮ LIỆU KHÁC 115 Kiểu liệu tự định nghĩa 115 Kiểu liệu union thường 115 Kiểu liệu union ẩn danh 116 Kiểu liệu enum 116 CHƯƠNG 13 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 118 Lịch sử hình thành 118 Lớp v{ đối tượng 124 Hàm tạo hàm hủy 128 Chồng chất hàm tạo 130 Sao chép hàm tạo 131 Tính đóng gói – Encapsulation 137 Lớp khai báo nhờ từ khóa struct union 139 Con trỏ this 139 Trang |4 C++ Con trỏ đối tượng 138 Đặng Ngọc Hoàng Thành Th{nh viên tĩnh – Từ khóa static 141 Hàm bạn lớp bạn 142 Chồng chất tốn tử 145 Tính kế thừa - Inheritance 151 Các mức truy cập 154 Tính đa kế thừa – Multiple Inheritance 157 Tính đa hình – Polymorphism 159 Tính trìu tượng hóa - Abstraction 164 Lớp Template 165 CHƯƠNG 14 NAMESPACE 167 Từ khóa namespace 167 Từ khóa using 168 Phạm vi namespace 169 Biệt danh cho namespace 170 Namespace std 170 CHƯƠNG 15 NGOẠI LỆ 171 Mệnh đề try…catch 171 Mệnh đề throw 171 Thư viện chuẩn exception 172 CHƯƠNG 16 LÀM VIỆC VỚI FILE 173 Mở file 173 Đóng file 175 File văn 175 Kiểm tra trạng thái cờ hiệu 176 Con trỏ get put 177 File nhị phân 179 CHƯƠNG 17 CÁC LỚP THƯ VIỆN 181 Lớp số phức complex 181 Trang |5 C++ Bộ đệm v{ Đồng hóa 180 Đặng Ngọc Hoàng Thành Lớp ngăn xếp stack 183 Lớp h{ng đợi queue 184 Lớp vector 185 Lớp string 187 Lớp list 190 Lớp map 190 Lớp set 191 HƯỚNG DẪN THỰC HÀNH 192 BÀI THỰC HÀNH SỐ 192 BÀI THỰC HÀNH SỐ 193 BÀI THỰC HÀNH SỐ 194 BÀI THỰC HÀNH SỐ 194 BÀI THỰC HÀNH SỐ 195 BÀI THỰC HÀNH SỐ 195 BÀI TẬP NÂNG CAO 197 BÀI TẬP LỚN 204 DANH SÁCH HÌNH 206 C++ TRA CỨU TỪ KHĨA 207 Trang |6 Đặng Ngọc Hoàng Thành 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 Bạn 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 mà bạn nhận l{ chỉnh sửa, bổ sung chức ví dụ mẫu, theo hướng tư bạn, để từ bạn hiểu c|ch đầy đủ nội dung mà bạn đ~ đọc Đừng lo sợ điều đó, tốt cho bạn mà thơi Sau đọc xong giáo trình, tơi cung cấp số tập thực hành đề nghị để bạn thử nghiệm Tơi khun bạn nên 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 Một điều mà bạn cần lưu ý, bạn 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, bạn nên nắm thuật ngữ tiếng anh tương ứng, để tham khảo thêm tài liệu chun mơn tiếng anh 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 C++ 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 q 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 hồn thiện Đặng Ngọc Hoàng Thành 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ới bạn ví dụ hoạt động tốt bạn sử dụng trình dịch hỗ trợ ANSI-C++ Có nhiều chọn lựa cho bạn, miễn phí phần mềm thương mại Trong giáo trình này, chúng tơi giới thiệu đến 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 ví dụ chạy hình 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 Bạn kiểm tra trình dịch để biết thêm thơng tin cách biên dịch chương trình C++ Với mơi trường phát triển tích hợp IDE cho C++ miễn phí, bạn sử dụng chương trình Codeblocks Eclipse Chúng chương trình dịch hỗ trợ chế độ console lẫn chế độ windows form Chúng hỗ trợ mơi trường GCC để biên dịch C C++ Với CodeBlocks, bạn download 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 hồ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 tích hợp) Bạn 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 Bạn tải thời điểm n{y (năm 2010) l{ Eclipse Helios địa chỉ: http://ftp.jaist.ac.jp/pub/eclipse/technology/epp/downloads/release/ helios/R/eclipse-cpp-helios-win32.zip Nhưng bạn cần tải thêm dự án mở GCC để biên dịch dự án bạn Tơi khun bạn nên sử dụng MinGW, l{ dự án mở Bạn tải địa chỉ: http://nchc.dl.sourceforge.net/project/mingw/Automated%20MinGW %20Installer/mingw-get-inst/mingw-get-inst-20100831/mingw-getinst-20100831.exe Với Eclipse, cơng việc cấu hình ban đầu tương đối phức tạp (nhưng bạn hồn tồn thực phút) Nếu bạn cấu hình thành cơng, bạn thấy thật khơng lãng phí thời gian bạn chút Bởi trình IDE (mơi trường phát triển tích hợp) Trang |8 C++ Trình biên dịch Đặng Ngọc Hoàng Thành q chun nghiệp với dự án mã nguồn mở Nếu bạn cần sử dụng để lập trình ngơn ngữ gì, bạn việc tải thêm plugin hỗ trợ cho Nhiều nhà phát triển đ~ sử dụng Eclipse làm tải 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 Thêm ngun nhân để tơi giới thiệu cho bạn trình IDE Eclipse tuyệt vời – l{ nhiều hãng phần mềm thị trường quan t}m đến Nếu bạn lập trình viên Java, Eclipse lựa chọn khơng thể bỏ qua Nếu bạn phát triển Flash theo dự án mã nguồn mở từ Adobe, Eclipse l{ lựa chọn hồn hảo Nếu bạn phát triển C/C++, với trình soạn thảo Eclipse l{ lựa chọn hồn Nếu bạn sử dụng Eclipse để soạn thảo biên dịch C/C++ (nhờ vào cơng cụ hỗ trợ MinGW), bạn có nhiều kinh nghiệm sử dụng Việc sử dụng thành thạo Eclipse lợi bạn 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 đến bạn mơi trường phát triển tích hợp IDE Microsoft Visual Studio 2010 Đ}y l{ trình biên dịch thương mại Bạn sử dụng để phát triển ứng dụng NET ứng dụng Win32 Nếu bạn muốn phát triển ứng dụng theo hướng Microsoft, bạn nên sử dụng Visual Studio Phiên đến thời điểm VS 2010 Nhưng bạn lưu ý rằng, nghiên cứu Visual C++, bạn cần chọn lựa phiên dành cho Win32 khơng phải ứng dụng CLR (common language runtime) phát triển NET Và Visual C++ for NET có số khác biệt so với Visual C++ for Win32 v{ khơng hồn tồn tn theo chuẩn mực ANSI C++ Trang |9 Đặng Ngọc Hoàng Thành BÀI THỰC HÀNH SỐ Xây dựng Lớp Làm việc với Đối Tượng Xây dựng lớp HangHoa gồm có c|c phương thức thuộc tính sau: Tên gọi Mức truy cập Loại Giải thích tenHang private Tên mặt hàng ngaySanXuat private Ngày sản xuất Thuộc tính donGia private Đơn gi| soLuong private Số lượng SetTenHang public Thiết lập tên hàng GetTenHang public Tiếp nhận tên hàng SetNgaySanXuat public Thiết lập ngày sản xuất GetNgaySanXuat public Tiếp nhận ngày sản xuất Phương SetDonGia public Thiết lập đơn gi| thức GetDonGia public Tiếp nhận đơn gi| SetSoLuong public Thiết lập số lượng GetSoLuong public Tiếp nhận số lượng TinhTien public Tính tiền C|c phương thức bao gồm setter v{ getter Phương thức TinhTien phương thức dùng để tính số tiền mà khách hàng mua Tính tiền donGia*soLuong Tên gọi Mức truy cập Loại Giải thích username private Thuộc Tên tài khoản người dùng tính password private Mật người dùng SetUsername public Lập tài khoản người dùng GetUsername public Tiếp nhận tài khoản người dùng Phương SetPassword public Lập mật người dùng thức GetPassword public Tiếp nhận mật người dùng MuaHang public Mua hàng C|c phương thức setter v{ getter ho{n to{n tương tự Phương thức MuaHang triệu gọi c|c phương thức thiết lập tên hàng, ngày sản xuất, tính tiền đối tượng HangHoa Phương thức mua hàng này, chấp nhận username password khách hàng nhập vào trùng với username password hệ thống T r a n g | 193 C++ Xây dựng lớp KhachHang gồm c|c phương thức thuộc tính sau: Đặng Ngọc Hoàng Thành Trong chương trình chính, h~y tạo hai đối tượng hai lớp HangHoa KhachHang Username Password khách hàng nhập vào từ bàn phím Kiểm tra username password trùng với username password thiết lập sẵn tiến hành khởi tạo đối tượng KhachHang, ngược lại, hủy bỏ giao dịch v{ in thơng b|o: “Xin loi, tai khoan cua quy khach khong ton tai he thong Xin lien he dang ki voi chi nhanh khach hang gan nhat” Trong trường hợp đăng nhập thành cơng, thực h{nh động mua hàng đối tượng khách hàng (thao t|c mua nhập vào từ bàn phím) BÀI THỰC HÀNH SỐ Hàm tạo, chép hàm tạo, hàm bạn, trỏ this Lưu ý: thực hành chương này, cho phép sử dụng trỏ đối tượng để thực Mọi phương án sử dụng khai báo đối tượng thơng thường khơng chấp nhận ! Quay trở lại với thực hành số Hãy tạo chương trình cách thay c|c phương thức setter hàm tạo tương ứng Hãy sử dụng trỏ this trường hợp Bổ sung phương thức ResetHangHoa cho lớp HangHoa để đưa tham số mặc định cho thuộc tính (xâu kí tự thiết lập “”, số ngun/thực thiết lập 0) Bổ sung phương thức HuyBo cho đối tượng KhachHang để hủy bỏ việc mua h{ng Trong chương trình chính, bạn tạo trỏ đối tượng để thực h{nh động mua h{ng v{ h{nh động hủy bỏ Xây dựng lớp điểm Point lớp hình tròn Round Sử dụng hàm random để tạo tọa độ ngẫu nhiên cho đối tượng điểm hàm tạo đối tượng điểm Cho trước tọa độ tâm đường tròn, bán kính Hãy đưa c|c kết luận điểm khởi tạo nằm hay ngo{i đường tròn Đ}y l{ phương thức thành viên lớp hình tròn BÀI THỰC HÀNH SỐ Chồng chất Tốn tử C++ T r a n g | 194 C++ Khuyến khích: Bạn nên sử dụng hàm bạn lớp bạn Đặng Ngọc Hoàng Thành Xây dựng lớp số phức lớp phân số Sử dụng chồng chất tốn tử để thực thao tác tính tốn sau: - Lớp số phức: phương thức khởi tạo (hoặc phương thức setter), phương thức chép hàm tạo, phương thức + (cộng hai số phức), - (trừ hai số phức), * (nhân hai số phức), / (chia hai số phức) v{ phương thức tính modul argument số phức Xây dựng hàm chồng chất tốn tử nhập/xuất liệu với lớp số phức - Lớp phân số: phương thức khởi tạo, phương thức chép hàm tạo, phương thức + (cộng hai phân số), phương thức – (trừ hai phân số), phương thức * (nhân hai phân số), phương thức / (chia hai phân số) Xây dựng hàm chồng chất tốn tử nhập/xuất liệu với lớp phân số BÀI THỰC HÀNH SỐ Kĩ thuật thừa kế C++ Xây dựng lớp HinhKhoi, chứa thuộc tính chiều cao (chieucao) Xây dựng hàm tạo tương ứng v{ phương thức chép hàm tạo Xây dựng lớp HinhKhoi1 thừa kế từ lớp HinhKhoi Bổ sung thêm thuộc tính chiều dài (chieudai) Bổ sung hàm tạo v{ phương thức chép hàm tạo Xây dựng tiếp hàm tính thể tích cho HinhKhoi1 (bằng chieucao*chieudai2) Xây dựng lớp lớp HinhKhoi2 thừa kế từ lớp HinhKhoi1 Bổ sung thêm thuộc tính chiều rộng (chieurong) Bổ sung hàm tạo v{ phương thức chép hàm tạo Q tải hàm tính thể tích cho HinhKhoi2 (bằng chieucao*chieudai*chieurong) BÀI THỰC HÀNH SỐ Lớp sở trìu tượng C++ T r a n g | 195 C++ Xây dựng lớp HinhKhoi3 thừa kế từ lớp HinhKhoi Bổ sung thêm thuộc tính bán kính (bankinh) Bổ sung hàm tạo v{ phương thức chép hàm tạo Xây dựng hàm tính thể tích cho HinhKhoi3 (bằng chieucao*Pi*bankinh2) Đặng Ngọc Hoàng Thành 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 getter 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ế) 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 - Mỗi thực hành thực nhà lớp, phải nộp b{i thời hạn - 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 | 196 ) C++ - Đ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 Q trình = Điểm chun cần; Điểm Q trình 2, Điểm Q trình tương ứng với trắc nghiệm; Điểm Q 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: Đặng Ngọc Hoàng Thành 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 - Thuật tố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 tốn RLE thực đếm số kí tự giống liên tiếp, sau T r a n g | 197 C++ Xâu in ra: 5a4b1c1d Đặng Ngọc Hoàng Thành đó, 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ố ngun tố - Hàm tính tổng phần tử mảng số phương - Hàm tính tổng số ngun tố mảng lớn 10 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ố ngun tố - Hàm đếm số phần tử mảng số phương - Hàm đếm số phần tử mảng số ngun 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ì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 | 198 C++ - Hàm tính giá trị trung bình mảng Đặng Ngọc Hoàng Thành - 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 u cầu xây dựng theo prototype Các ma trận (mảng hai chiều) tập ma trận vng 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 | 199 C++ - H{m tính lũy thừa ma trận vng Đặng Ngọc Hoàng Thành 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 tố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 cộng hai vector Xây dựng theo tốn tử - 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 | 200 C++ - Phương thức tính tích vơ hướng hai vector Đặng Ngọc Hoàng Thành 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 tố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 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 Bài Hãy xây dựng chương trình ứng dụng theo mơ tả sau T r a n g | 201 C++ Một cơng ty tun 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 tồn nhân viên Hãy xây dựng chương trình để thực thi mơ tả Đặng Ngọc Hoàng Thành - 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 v{ 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, u cầu họ xác minh có phải họ đ~ qn 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 l{ 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 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, Đo{n TN, Lớp, Phòng học, Mơn học… Bài 10 T r a n g | 202 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 Đặng Ngọc Hoàng Thành 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 22 – Mơ hình tương t|c quản lý Nh{ nước T r a n g | 203 Đặng Ngọc Hoàng Thành 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 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 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 | 204 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 Đặng Ngọc Hoàng Thành - 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 - Chương trình có menu điều khiển, khơng u cầu tạo giao diện đồ họa Ghi chú: tập lớn phải thực thi theo u cầu sau - Nộp chương trình ho{n chỉnh Trong đó, chương trình ho{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++” T r a n g | 205 C++ - Phân tích mơ hình lên giấy (nộp in) Đặng Ngọc Hoàng Thành DANH SÁCH HÌNH C++ 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 70 Hình 17 – Tham chiếu trỏ 92 Hình 18 – Tham chiếu ngược trỏ 93 Hình 19 – Tăng/Giảm địa trỏ 99 Hình 20 – Minh họa sơ đồ lớp 123 Hình 21 – Tính kế thừa 152 Hình 22 – Mơ hình tương t|c quản lý Nh{ nước 203 T r a n g | 206 Đặng Ngọc Hoàng Thành 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 Tốn tử gán Lớp sở/ Lớp cha Tốn tử dịch bit Lớp Lớp Tốn tử phân tách Tốn tử gán hợp Tố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 Tốn tử Chồng chất tố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 Tốn tử quan hệ so sánh C++ Ngun 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 | 207 [...]... tựy thuc vo tp tin m bn cn, hóy chn loi tng ng Thụng thng, trong d ỏn ca C+ +, chỳng ta thng s dng hai tp tin l{ tiờu h v th}n chng trỡnh cpp Sau ú, h~y nhp tờn ca tp tin v nhp Ok Tp tin tiờu h thng cha c c khai bỏo prototype ca hm hoc lp Ngoi ra, nú c th cha c c hm macro, c c khai bỏo hng v bin ton cc c s dng trong ton b chng trỡnh Tp tin cpp thng cha phn thõn ca c c hm hoc lp Khi lm vic vi c c d ỏn... phớ lp trỡnh C/ C++: CodeBlocks v Eclipse Vi CodeBlocks, bn ch cn ti v c{ i t Mụi trng h tr biờn dch GCC ~ c tớch hp sn Vi Eclipse, bn phi thc hin cu hỡnh GCC Nu bn l mt ngi c nhiu tri nghim v mỏy tớnh, bn nờn chn Eclipse bi nú l{ chng trỡnh son tho rt chuyờn nghip Nu bn l{ ngi mi tip x c mỏy tớnh, bn nờn chn CodeBlock vỡ khụng mt thi gian cu hỡnh, nhng nu bn cu hỡnh thnh c ng trờn Eclipse, thỡ bn... khụng c biờn dch m{ nú c hiu l du comment (dũng chỳ thớch) Trong C+ + cng nh C, vic chỳ thớch trờn mt dũng s c t sau du // Nu bn mun to mt chỳ thớch nhiu dũng, bn c th s dng du /* To chỳ thớch õy */ [2.] Dũng ny bt u bng kớ t #include Tip n l tờn tp tin tiờu (cha c| c th vin) Th vin iostream c t trong du Nú cha c c hm xut nhp c bn Hm ny l mt phn ca namespace std [3.] Trong C+ +, c c thnh phn ca th... c khai bỏo trong khi lnh 1 (tng ng [8.] v [9.]) v khi lnh 2 (tng ng [11.] v [12.]) gi l bin cc b (local variable), nú c t c dng trong khi lnh trc tip cha nú C ngha l bin x ch c t c dng trong khi lnh 2; bin m, n c t c dng trong khi lnh 1 C c bin ton cc c th c s dng trong ton b chng trỡnh, nú c th c gi trong c c hm, trong hm chớnh main C n bin cc b c khai bỏo trong khi lnh no, thỡ nú ch c th c. .. trờn Eclipse Cng ging nh CodeBlocks, Eclipse cng t chc chng trỡnh theo d ỏn to mi mt d ỏn trong Eclipse, chỳng ta c ba c ch: - Vo File > New > C+ + Project - Vo biu tng to mi d ỏn trờn thanh c ng c, chn C+ + Project - Kớch chut phi vo ca s Project Explorer > chn New > C+ + Project Tip n, hp thoi sau }y s xut hin Sau ú, bn nhp vo tờn d ỏn v nhp Next (nu bn cha cu hỡnh MinGW), hoc nhp Finish (nu bn ~ thc... Ngo c Hoaứng Thaứnh To mi mt file ni dung trong Eclipse Mt chng trỡnh trong C+ + thng chia lm hai loi tp: cpp v h Tp cpp thng cha ni dung chng trỡnh, tp h thng cha c c khai bỏo Li khuyờn trc khi to mi c c file: bn hóy to mt th mc chung cha ton b ni dung sau ny, tụi tm gi th mc n{y l{ th mc src Trong th mc src, bn hóy to hai th mc, mt th mc cpps v mt th mc headers Th mc cpps s cha ton b tp cpp, th mc... bn vit mt chng trỡnh C+ + hay bt kỡ mt chng trỡnh trờn mt ngụn ng lp trỡnh no kh c, bn cn tuõn th quy phm nh dng mó ngun C nhiu chun mc cho c| c nh dng mó ngun ny Dự rng, chỳng khụng nh hng n vic biờn dch chng trỡnh, nhng chỳng giỳp ngi c cú th d hiu chng trỡnh ca bn hn Nu bn khụng nm vng c c quy phm ny, bn c th s dng chc nng nh dng mó ngun t ng ca CodeBlocks thc hin iu ny, bn hóy kớch chut phi vo... headers s cha ton b tp h Tp Main.cpp cha hm main s c t trong th mc src Ngha l{ bn s c cu tr c tng t nh sau src cpps headers Main.cpp Hin nhiờn bn hon ton khụng nht thit phi thc hin theo nh cu tr c th mc n{y Tuy nhiờn iu ny s lm cho d ỏn ca bn tr nờn sỏng sa hn rt nhiu Bn c th b sung thờm c| c th mc ph kh |c, nhng bn nờn tuõn th cu tr c cõy ny (vớ d bn cn phõn bit c c tp tin cpp thnh nhiu loi kh c nhau,... cn phi c{ i t thờm plugin h tr) hoc mt n bn c hn (Galileo, Europa) - C ng c biờn dch GCC MingW - Mỏy o Java JVM C c bc cu hỡnh trờn Eclipse Helios Bc 1 C{ i t mỏy o Java Bc 2 Ci MinGW Bc 3 Gii nộn Eclipse Helios, sau ú khi ng nú (nhp vo tp tin eclipse.exe) Thụng thng, Eclipse s t ng cu hỡnh MinGW giỳp bn Nu khụng bn hóy thc hin bc 4 Bc 4 Vo menu Project > Properties Trong hp thoi xut hin, bn chn C/ C++... vin chun c khai bỏo trong namespace }y l{ namespace std c th truy xut n c c tớnh nng ca nú, chỳng ta mụ t nú bng t khúa using Trong th vin chun ca C+ +, i tng cout c t chc trong namespace std [4.] Bt kỡ mt chng trỡnh C+ + n{o cng phi c mt h{m main thc thi chng trỡnh Mt hm s c khai bỏo theo cu tr c nh bn ~ thy T khúa int mụ t kiu d liu m hm tr v l integer Bn cng lu ý rng, trong chng trỡnh C thỡ bn c ... 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 Bạn truy c p... C ng giống CodeBlocks, Eclipse tổ ch c chương trình theo dự án Để tạo dự án Eclipse, c ba c ch: - Vào File > New > C+ + Project - Vào biểu tượng tạo dự án c ng c , chọn C+ + Project - Kích chuột phải... vùng biểu đồ Đặng Ng c Hoàng Thành CHƯƠNG C 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 bạn đ~ làm quen với ngơn ngữ lập trình đó, hẳn

Ngày đăng: 04/12/2015, 02:13

Từ khóa liên quan

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

Tài liệu liên quan