Giáo trình Lập trình hướng đối tượng C++ (Phần 2)
Lập trình tuyến tính
M|y tính đầu tiên được lập trình bằng mã nhị phân, sử dụng các công
tắc cơ khí để nạp chương trình. Cùng với sự xuất hiện của các thiết bị lưu
trữ lớn và bộ nhớ m|y tính có dung lượng lớn, nên các ngôn ngữ lập trình
cấp cao bắt đầu xuất hiện. Các ngôn ngữ lập trình n{y được thiết kế làm
cho công việc lập trình trở nên đơn giản hơn. C|c chương trình ban đầu
chủ yếu liên quan đến tính toán, chúng tương đối ngắn. Chúng chủ yếu
chạy theo các dòng lệnh một cách tuần tự, dòng trước chạy trước, dòng sau
chạy sau.
Nhược điểm:
o Nếu ta cần sử dụng một đoạn lệnh n{o đó nhiều lần, thì ta phải sao chép
nó nhiều lần.
o Không có khả năng kiểm soát phạm vi nhìn thấy của biến.
o Chương trình dài dòng, khó hiểu, khó nâng cấp.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Lập trình hướng đối tượng C++ (Phần 2)
mảng là số chính phương. - Hàm tính tổng các số nguyên tố của mảng lớn hơn 10 v{ nhỏ hơn 100. - Hàm tính tổng các phần tử của mảng là số chính phương chẵn. - Hàm đếm số phần tử của mảng là số nguyên tố. - Hàm đếm số phần tử của mảng là số chính phương. - Hàm đếm số phần tử của mảng là số nguyên tố lớn hơn 10 v{ nhỏ hơn 50. - Hàm đếm số phần tử của mảng là số chính phương chẵn. - Hàm tìm kiếm chỉ số phần tử có giá trị x của mảng. - Hàm tính giá trị trung bình của mảng. - Hàm tìm chỉ số của phần tử có giá trị nhỏ nhất. - Hàm tìm chỉ số của phần tử có giá trị lớn nhất. Phần Bài tập T r a n g | 220 C + + - Hàm sắp xếp mảng theo thứ tự tăng dần (có thể sử dụng thuật toán sắp xếp bất kì). - Hàm tính giá trị trung bình của các phần tử của mảng có giá trị chẵn. - Hàm dồn tất cả các phần tử chẵn về một phía, các phần tử lẻ về một phía. Ví dụ, mảng ban đầu là: 1 4 5 6 2 3 thì kết quả sẽ là 1 5 3 4 6 2. - H{m x|c định phần tử có giá trị gần với giá trị trung bình của mảng nhất. - H{m đẩy các phần tử của mảng lên n vị trí. Ví dụ mảng ban đầu là 1 3 2 5 4 7 9. Nếu n = 2, thì mảng thu được sẽ là 7 9 1 3 2 5 4. Bổ sung hàm main v{ c|c thư viện để nhận được một chương trình hoàn chỉnh. Các hàm cần được khai báo theo prototype. Bài tập 4. Xây dựng c|c h{m để thực hiện các chức năng sau đ}y trên mảng hai chiều bằng hai cách khai báo: theo kiểu thông thường và khai báo bằng con trỏ. - Hàm nhập giá trị cho mảng hai chiều. - Hàm xuất giá trị của 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 thế tất cả các phần tử có giá trị lẻ của ma trận thành 0. - Hàm thay thế tất cả các phần tử âm của ma trận bằng phần tử dương tương ứng. - Hàm thay thế các phần tử có giá trị nhỏ hơn gi| trị trung bình của ma trận bằng phần tử 0. - H{m tính lũy thừa của ma trận vuông. Các hàm yêu cầu được xây dựng theo prototype. Các ma trận (mảng hai chiều) trong các bài tập trên là ma trận vuông. Bổ sung h{m main v{ c|c thư viện cần thiết để được một chương trình ho{n chỉnh. Bài tập 5. Phần Bài tập T r a n g | 221 C + + Hãy chọn lựa c|c phương ph|p phù hợp trong 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ố và sao chép hàm tạo. - Các phương thức Getter. - Phương thức KiemTra để cho biết nó có phải là một tam giác thực sự không. - Phương thức tính diện tích tam giác nếu nó là một tam giác thực sự. - 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ó 3 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 giữa 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 của vector. - Phương thức cộng hai vector. Xây dựng theo toán tử. - Phương thức tính tích vô hướng của hai vector. - Phương thức tính cosin góc giữa hai vector. - Phương thức tính tích hữu hướng của hai vector. Phần Bài tập T r a n g | 222 C + + 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 và 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 giữa hình cầu và một điểm. - Phương thức x|c định vị trí tương đối giữa hai hình cầu. Yêu cầu chung: hãy bổ sung các hàm toán tử nhập xuất cho mỗi lớp đối tượng trên. Bài 6. Xây dựng lớp ConNguoi gồm có hai thuộc tính thành viên là: tên và 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, bằng 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 của mình. Đối tượng CongTy có các thuộc tính: tên công ty, mức đóng góp chuẩn, ngân sách hiện có, nguồn thu theo tháng, nguồn chi theo tháng. Giả sử nguồn chi này 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 sẽ bị sa thải, nếu mức đóng góp của họ nhỏ hơn mức đóng góp chuẩn của công ty. 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. Phần Bài tập T r a n g | 223 C + + - 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 Bài 10. Phần Bài tập T r a n g | 224 C + + 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 23 – 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 Phần Bài tập T r a n g | 225 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: Phần Bài tập T r a n g | 226 C + + - 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 - 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). Phần Bài tập T r a n g | 227 C + + - 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: .”. Trang | 228 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 ...................................... 13 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 ................................................................... 14 Hình 7 - Biên dịch một dự án ........................................................................................... 14 Hình 8 - Hộp thoại tạo mới class .................................................................................... 15 Hình 9 - Giao diện tổng thể của 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 một tập tin .............................................................................. 20 Hình 13 - Bổ sung thêm lớp đối tượng ........................................................................ 20 Hình 14 - Tạo lớp bằng 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 trong con trỏ ............................................................................. 94 Hình 18 – Tham chiếu ngược trong con trỏ ............................................................... 95 Hình 19 – Tăng/Giảm địa chỉ của con 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 cơ sở ảo .................................................................................................... 164 Hình 23 – Mô hình tương t|c quản lý Nh{ nước. .................................................. 224 T r a n g | 229 C + + 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 | 230 C + + TÀI LIỆU THAM KHẢO [1]. jsp // Mục: XL C/C++ V8.0 for AIX // Language Reference [2]. us/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.
File đính kèm:
- giao_trinh_lap_trinh_huong_doi_tuong_c_phan_2.pdf