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.

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 1

Trang 1

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 2

Trang 2

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 3

Trang 3

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 4

Trang 4

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 5

Trang 5

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 6

Trang 6

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 7

Trang 7

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 8

Trang 8

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 9

Trang 9

Giáo trình Lập trình hướng đối tượng C++ (Phần 2) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 111 trang duykhanh 11321
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Lập trình hướng đối tượng C++ (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

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)

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:

  • pdfgiao_trinh_lap_trinh_huong_doi_tuong_c_phan_2.pdf