Tài liệu hướng dẫn giải bài tập siêu dễ hiểu trong lập trình hướng đối tượng OOP Đây là một trong bộ tài liệu giải bài tập của ACE Joker lập trình viên thuộc dạng newbie giải với cách dễ hiểu nhất cho người mới bắt đầu bước chân vào lĩnh vực hướng đối tượng dạng bào tập số 2 trong series giải bài tập hướng đối tượng c++
Trang 1
ỦY BAN NHÂN DÂN TỈNH BÌNH DƯƠNG
TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT KHOA KỸ THUẬT – CÔNG NGHỆ
¯
BÀI HƯỚNG DẪN MÔN HỌC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 3
CHƯƠNG 1: CÔNG CỤ VISUAL STUDIO 2017 4
I Giới thiệu công cụ hỗ trợ lập trình Visual Studio 2017 4
II Cài đặt Visual Studio Community 2017 4
1 Hệ điều hành 4
2 Về phần cứng 4
3 Về phần mềm 4
4 Cài đặt Visual Studio Community 2017 4
III Hướng dẫn tạo 1 project trong Microsoft Visual Studio (2017) 6
CHƯƠNG 2: KIẾN THỨC NỀN TẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 7
I Khái quát về các lệnh cơ bản trong C++ 7
1 Khai báo thư viện C++ 7
2 Hàm Main() là gì? 8
II Khai báo, khởi tạo và sử dụng Class trong C++ 8
1 Khai báo, khởi tạo và sử dụng Class trong C++ 8
2 Khai báo và sử dụng kế thừa 9
3 Tạo Project C++ đầu tiên với Visual Studio 10
CHƯƠNG 3: GIẢI BÀI TẬP 18
I Hướng dẫn giải bài tập trên Visual Studio 2017 18
1 Phân tích đề bài 18
2 Sơ đồ Class Diagram minh họa 19
3 Tạo file và tiến hành Code 19
CHƯƠNG 4: TỔNG KẾT 37
I Kết luận 37
1 Ưu điểm 37
2 Khuyết điểm 38
II Tài liệu bài hướng dẫn 38
2
Trang 3LỜI MỞ ĐẦULập trình hướng đối tượng là một phương pháp lập trình cho phép thao tác trực tiếp trên cácđối tượng cụ thể, một chương trình viết theo hướng đối tượng được chia thành các lớp đốitượng, từ đó cho phép các đối tượng này có thể kế thừa đặc tính của các đối tượng khác vàhoạt động thông qua sự tương tác với các đối tượng khác nhờ cơ chế truyền thông báo Từ đó,giúp việc lập trình theo hướng đối tượng có được sự linh hoạt, tiện ích cho việc xây dựng vàphát triển phần mềm.
Ngày nay, lập trình hướng đối tượng được áp dụng rộng rãi trên thế giới, nó hầu như có thểthay thế hoàn toàn các phương pháp lập trình truyền thống để mang lại sự hiệu quả và tiện íchcho người sử dụng Các ngôn ngữ được sử dụng mạnh mẽ trong lập trình hướng đối tượng:C#, C++, Visual Basic, Java, Vì vậy, việc nghiên cứu phương pháp lập trình mới này thật sựquan trọng
Cuốn bài hướng dẫn này là tổng hợp ngắn gọn và kèm theo bài tập minh họa cơ bản về lậptrình hướng đối tượng trên C++ Nhằm phục vụ cho các bạn chưa vững kiến thức cơ bản vềlập trình hướng đối tượng hoặc các bạn muốn củng cổ kiến thức nền tảng về lập trình hướngđối tượng
Trang 4CHƯƠNG 1: CÔNG CỤ VISUAL STUDIO 2017
Visual Studio 2017 Community là một IDE (Integrated Development Enviroment), là môi
trường phát triển tích hợp, một loại phần mềm giúp các nhà phát triển phần mềm phát triểnnên các loại phần mềm khác C++ là một ngôn ngữ lập trình đa mẫu hình tự do có kiểu tĩnh và
hỗ trợ lập trình thủ tục, dữ liệu trừu tượng, lập trình hướng đối tượng và lập trình đa hình
Để cài đặt Visual Studio Community 2017 (phiên bản này phù hợp cho giáo dục và miễn phí) hay những phiên bản khác như Professional và Enterprise, độc giả cần có môi trường
như sau
1 Hệ điều hành
Windows 10 bản Home, Professional, Education, Enterprise với bản build 1507 trởlên
Window 8.1 bản Core, Professional, Enterprise với bản cập nhật 2919355
Window 7 bản Home Premium, Professional, Enterprise, Ultimate với bản cập nhật mới nhất
Windows Server 2016 bản Standard và Datacenter
Windows Server 2012 R2 bản Essentials, Standard, Datacenter với bản cập nhật 2919355
2 Về phần cứng
CPU tốc độ 1.8 GHz trở lên, hai nhân trở lên được khuyến khích
RAM tối thiểu 2GB (4GB được khuyến khích)
Ổ cứng khả dụng từ 1GB - 40GB tùy vào số lượng công cụ bạn cài đặt Trong phạm vi bài viết, tôi chỉ hướng dẫn cài C++ nên ổ cứng khả dụng yêu cầu khoảng 5GB
Độ phân giải máy tối thiếu là 720p (1280 x 720), Visual Studio sẽ hoạt động tốt từ
độ phân giải WXGA (1366 x 768) trở lên
3 Về phần mềm
Nền tảng NET 4.5 trở lên được yêu cầu để cài đặt Visual Studio 2017
Về yêu cầu phần mềm, tùy vào gói công cụ mà bạn cài đặt, sẽ có những yêu cầu đặc trưng phát sinh thêm
Tuy nhiên với công cụ lập trình C++, những yêu cầu trên là đủ để cài đặt và khởi chạy ứng dụng viết bằng ngôn ngữ C++
4 Cài đặt Visual Studio Community 2017
Link tải: https://visualstudio.microsoft.com/downloads/
Sau khi tải Visual Studio Community 2017 Installer xong, tập tin sẽ có dạng như sau
Chạy tập tin trên với quyền Admin và chọn Continue khi có hộp thoại thông báo hiện ra
4
Trang 5Nếu có yêu cầu Update, chọn Update (trong trường hợp trước đó bạn đã cài đặt Visual Studio
Trang 6Lưu ý: Dù bạn chọn địa chỉ đường dẫn lưu công cụ này ở đâu, mặc định Visual Studio 2017
sẽ tải dữ liệu tạm vào partition chứa hệ thống (thông thường là C://) rồi mới tiến hành cài đặt
ở địa chỉ đường dẫn mà bạn thiết lập và sẽ tiến hành xóa dữ liệu tạm ấy khi cài đặt xong Do
đó hãy đảm bảo ổ C của bạn nên có dung lượng bộ nhớ khả dụng lớn hơn dung lượng bộ nhớ
mà công cụ yêu cầu
Sau khi thiết lập xong, chọn Install và chờ đợi việc cài đặt hoàn tất
Click double chuột trái vào Icon Visual Studio 2017 để khởi động chương trình
6
Trang 7Sau khi khởi động, cửa sổ làm việc của chương trình sẽ có dạng như sau:
Như các bạn thấy thì giao diện chương trình tương đối đơn giản và trực quan Mục Start baogồm một số thao tác với project, mục Recent hiển thị những project mà bạn đã làm việc trước
đó Cả hai mục trên đều nằm trong tab Start Page của Visual Studio Lưu ý là ở mỗi phiên bảnVisual Studio sẽ có đôi chút khác biệt ở Start Page
CHƯƠNG 2: KIẾN THỨC NỀN TẢNG LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG
1 Khai báo thư viện C++
Để khai báo sử dụng thư viện trong C++ thì ta sử dụng cú pháp sau:
Trang 8Từ khoá #include chỉ cho trình biên dịch biết rằng chúng ta cần sử dụng thư viện được khaibáo và nó sẽ tự động thêm vào cho chúng ta.
Tôi xin giới thiệu một số thư viện thường gặp trong lập trình C++:
iostream.h ( thư viện này chứa hàm xuất nhập cout và cin)
stdio.h ( nó chứa hàm scanf,printf )
conio.h ( nó chứa hàm clrscr,getch )
math.h ( nó chứa hàm toán học như sqrt, abs, pow)
string.h (nó chứa các hàm về chuỗi )
Đối với một chương trình C++ nhập xuất căn bản thì bắt buộc ta phải sử dụng thư
viện iostream.h
2 Hàm Main() là gì?
Sau khi các bạn đã hiểu thế nào là thư viện và cách khai báo sử dụng một thư viện như
thế nào thì chúng ta sẽ bắt đầu vào phần tiếp theo cần tìm hiểu đó là hàm main().
Theo tiếng Anh main dịch ra có nghĩa là chính, quan trọng, vậy trong C++ nó cũng có
ý nghĩa như tên gọi đó Trong lập trình thì trình biên dịch sẽ xử lý code từ trên xuống
dưới và từ trái qua phải Nhưng với hàm main thì hơi đặc biệt chút, hàm main là nơi
chứa những đoạn code sẽ được chạy đầu tiên, nghĩa là khi biên dịch chương trình thì nội dung trong hàm main sẽ được chạy đầu tiên mà không quan trọng vị trí của nó trong file
Ở ví dụ này mình có sử dụng hàm xuất cout, hàm này sẽ in ra màn hình một dòng chữ nào đó
Ở ví dụ này mình có sử dụng hàm xuất cin, hàm này sẽ lấy kí tự được nhập từ bàn phím
Trong một chương trình C+ thì bắt buộc phải có hàm main và bạn không thể viết nội dung trong hàm main ở bên ngoài được vì như vậy sẽ bị báo lỗi ngay
II Khai báo, khởi tạo và sử dụng Class trong C++
1 Khai báo, khởi tạo và sử dụng Class trong C++
Cú pháp:
class <tên lớp>
8
Trang 9<Phạm vi truy cập> <Các thành phần của lớp>;
}
Các loại phạm vi truy cập và ý nghĩa
Phạm vi truy cập là cách mà người lập trình quy định về quyền được truy xuất đến các thànhphần của lớp
class là từ khoá để khai báo lớp
<tên lớp con> là tên do người dùng đặt và tuân theo các quy tắc đặt tên
<tên lớp cha> là tên lớp mà ta muốn kế thừa các đặc tính của nó
Ví dụ:
void _xe::Nhapxe()
Trang 10cout << "Nhan hieu la: " << nhanhieu;
cout << "so luong banh xe la: " << slbanhxe;
}
3 Tạo Project C++ đầu tiên với Visual Studio
Để tạo một project mới, các bạn có thể làm theo một trong 4 cách sau:
Vào menu File ➙ New ➙ Project
Nhấn tổ hợp phím Ctrl + Shift + N
Nhấn vào biểu tượng New trên thanh công cụ
Nhấn vào dòng New Project ở mục Start trong Start Page
Một cửa sổ sẽ hiện ra như sau:
10
Trang 11Visual Studio cho phép chúng ta tạo project có dạng Win32 Console Application Cá nhân tôikhông khuyến khích các bạn tạo project theo kiểu này.
Trang 13Giao diện sau khi tạo 1 Project:
Trang 14Ngoài ra, Các bạn chọn mục Empty Project, đặt lại tên và đường dẫn cho project, sau đó bấm
OK Chương trình sẽ bắt đầu quá trình khởi tạo project Sau khi khởi tạo xong, cửa sổ làmviệc sẽ có dạng như sau:
Lưu ý là do chúng ta chọn Empty Project, chúng ta sẽ phải tự thực hiện các thao tác như viếthàm main, khai báo một số chỉ thị include, … Khuyến khích các bạn tạo Project kiểu này
14
Trang 15Tạo file cpp và viết chương trình
Sau khi tạo xong project, việc các bạn cần làm là tạo một file cpp mới và bắt đầu viết chươngtrình
Chúng ta có thể thực hiện theo một trong 2 cách sau:
Nhấn chuột phải vào tên Project/Filter, chọn Add ➙ New Item
Chọn tên Project/Filter thích hợp và nhấn tổ hợp phím Ctrl + Shift + A
Sau đó chọn C++ File (.cpp), đặt lại tên và nhấn nút Add
Trang 16Tới đây các bạn đã có thể bắt đầu viết chương trình đầu tiên của mình trên Visual Studio.
Sau đó các bạn code thử vài dòng như sau:
Trang 17Nếu các bạn thấy xuất hiện cửa sổ như bên dưới là đồng nghĩa với việc chương trình của bạn
đã sẵn sàng để viết Code
Và ngược lại, nếu cửa sổ hiện ra như sau thì chương trình bạn đã Code sai hoặc gặp lỗi
Trang 18CHƯƠNG 3: GIẢI BÀI TẬP
Link đề bài: https://drive.google.com/open?id=1U7KxCO-ERN7-uj01tqAqNsx2XNjz90l0
1 Phân tích đề bài
+ Hình vuông (đỏ): đại diện cho các lớp
+ Hình vuông (xanh): đại diện cho các thuộc tính
+ Hình tròn (đỏ): đại diện cho các phương thức
18
Trang 192 Sơ đồ Class Diagram minh họa
3 Tạo file và tiến hành Code
Tạo file cpp và file h
Sau khi tạo xong file Main.cpp, việc cần làm tiếp theo là tạo một file cpp mới và file.h, Chúng ta có thể thực hiện theo cách sau:
Trang 20 Nhấn chuột phải vào tên Project/Filter, chọn Add ➙ Class.
Sau đó chọn đặt tên cho Class ở mục Class Name, h file và cpp file và nhấn nút OK
20
Trang 21Giao diện sau khi tạo Class như bên dưới.
Trang 22float gia; // Biến giá có kiểu float (Số thực)
int namsx; // Biến Năm sản xuất có kiểu int (Số nguyên)
22
Trang 23float trongluong; // Biến trong lượng kiểu float
int slbanhxe; // Biến số lượng bánh xe kiểu int
public:
_xe(string _nhanhieu, float _gia, int _namsx, float _trongluong, int _slbanhxe);
// Hàm khởi tạo có tham số truyền vàovoid nhapxe(); // Hàm thực thi để Nhập dữ liệu
void xuatxe(); // Hàm thực thi để Xuất dữ liệu
};
Ở phần _xe.cpp, theo đề thì các bạn truyền giá trị vào trong các hàm đã khai báo trước đó
Trươc tiên mình sẽ làm với khởi tạo mặc định ,với các dòng Code:
Ở file Main.cpp, các bạn đưa vào các dòng Code:
using namespace std;
#include"_xe.h"
void main()
{
Trang 24_xe xe_macdinh; // Đổi tên _xe thành xe_macdinh
xe_macdinh.xuatxe(); // Sử dụng (.) để gọi lại hàm Xuất cho nó thực thisystem("pause"); // Đây là lệnh dừng màn hình
}
Sau khi chạy chương trình chúng ta sẽ thu được kết quả như bên dưới:
Nhưng nếu trình bày như trên thì Code chúng ta sẽ vừa xấu vừa khó nhìn
Vậy, chúng ta sẽ thay đổi một xíu:
Ở phần _xe.cpp bạn gõ vào các dòng Code:
Trang 25Kết quả sau khi chạy lại chương trình:
Trang 26slcua = 4; // Gán giá trị cho số lượng cửa là 4
cout << "So luong cua: " << slcua << endl;
Trang 27Giao diện sau khi chạy chương trình:
Trang 28_xemay::_xemay() // Hàm khởi tạo mặc định
{
tocdomax = 150; // Gán giá trị tốc độ tối đa là 150
loaixe = 1; // Gán loại xe là 1 (1: Xe tay ga, 2: Xe số)
Trang 29Tiếp theo đề thì: các bạn truyền giá trị vào trong các hàm đã khai báo trước đó Tiếp theo, mình sẽ làm với khởi tạo có tham số truyền vào ,với các dòng Code:
Chúng ta thêm dòng code bên dưới vào trong hàm _xe.h:
_xe(string _nhanhieu, float _gia, int _namsx, float _trongluong, int _slbanhxe);
// Hàm khởi tạo có tham số truyền vàovoid nhapxe(); // Hàm thực thi để Nhập dữ liệu
void xuatxe(); // Hàm thực thi để Xuất dữ liệu
nhanhieu = _nhanhieu; // Gán nhãn hiệu ban đầu bằng nhãn hiệu mới
Trang 30namsx = _namsx; // Gán năm sản xuất ban đầu bằng năm sx mớitrongluong = _trongluong; // Gán trọng lượng ban đầu bằng trọng lượng mớislbanhxe = _slbanhxe; // Gán sl bánh xe ban đầu bằng sl bánh xe mới
Trang 32Ở hàm _xemay.h ta làm như sau:
Trang 35Ở hàm _oto.cpp ta Code:
#include "_oto.h"
{
cout << "\nNhap sl cua: "; // Câu lệnh thông báo nhập
cin >> slcua; // Giá trị nhập từ bàn phím là slcua
}
{
cout << "So luong cua: " << slcua << endl;
Trang 36cout << "Toc do toi da: " << tocdomax << endl;
Trang 382 Khuyết điểm
Nhược điểm lớn nhất của lập trình hướng đối tượng đó là "buộc máy suy nghĩ như người" trong khi đó bản chất phần mềm là "người phải suy nghĩ như máy" (dù máy do con người tạo nên) Chính vì thế mà chẳng có ai dùng OOP để lập trình hệ điều hành