lOMoARcPSD| 58583460
CSC10003 – Phương pháp lập trình hướng ối tượng
Tuần 01: Ôn tập C++, Định nghĩa & Cài ặt
Class trong OOP
(Cảm n Thầy Trần Ngọc Đạt Thành ã cung cấp tài liệu tham khảo cho môn học)
Nội dung thực hành lần này sẽ tập trung ôn tập kiến thức về lập trình C++. Sau ó, chúng ta sẽ tìm
hiểu làm thế nào ể ịnh nghĩa và các ặt các Class trong Lập trình hướng ối tượng (OOP
– Object-Oriented Programing) với ngôn ngữ C++.
I. Ôn tập về C++ 1. Cấu trúc của
chương trình C++
Cấu trúc của một chương trình C++ cơ bn gồm các phần theo thứ tự sau:
a) Phần khai báo thư viện nm ở ầu chương trình với các câu lệnh
#include
b) Phần khai báo cho phép sử dụng các lệnh có sẵn trong thư viện chun
của C++ ể tin s dụng khi lập trình
c) Các hàm con xử lý
d) Hàm main nằm i cùng ể xử lý thực thi chương trình
#include <tên thư viện>
o Một số thư viện thường hay sử dụng:
#include<iostream> : sử dụng cho nhập xuất ra màn
hình console
#include<math> : sử dụng cho việc xử lý tính toán số
học
Khai báo thư việ
n v
i cú pháp
lOMoARcPSD| 58583460
#include<string> : sử dụng cho việc xử lý chuỗi
#include<vector>: sử dụng cho việc lưu trữ dữ liu
dạng vector
#include<ctime> : sử dụng cho việc xử lý thời gian
Một số lưu ý:
o Nên theo úng thứ tự cấu trúc xử lý chương trình, ặc biệt là các hàm con
phải nằm trước hàm main, do chương trình thực thi tuần tự từ trên xuống
ới. Nếu hàm main ược gọi trước các hàm con thì các hàm con sdụng
trong hàm main skhông ược tìm thấy và chương trình báo li. o Các
lệnh xtrong chương trình a phần nằm ở tập tin .cpp, ngoài ra còn
tập tin .h dùng khai báo trước các hàm lớp sẽ sử dụng. Do ó có th
sử dụng tập tin .h ể khai báo trước câu trúc của chương trình.
o Nhấn Ctrl + F5 thực thi chương trình xem kết quả, nhận F10 debug
chương trình theo từng dòng bắt ầu từ hàm main, nhấn F11 vào bên
trong dòng lệnh debug.
2. Nhập xuất ra màn hình Console trong C++ C++ cung cấp các lệnh sẵn
ể htrợ việc nhập xuất ra màn hình, dựa trên thư viện chuẩn của C++, ể sử dụng,
ầu chương trình cần phải khai báo ở ầu chương trình
#include<iostream>
using namespace std;
Các lệnh nhập xut sử dụng trong C++ : o cin : nhp dliu,
sử dụng toán t>> o cout : xuất dliu, sử dụng toán tử <<
Ghi nhớ tránh nhầm lẫn : Cin i vào biến, biến i ra Cout (Cin >>, Cout <<)
Cú pháp sử dụng ể nhp dliệu vào biến :
int variable; cin >> variable;
o Màn hình sẽ chờ người dùng nhp dliu vào
o Dữ liệu sau khi nhập, nhấn Enter ể hoàn tất quá trình nhập
Cú pháp sử dụng ể xut dliệu ra màn hình console :
int variable = 10;
cout << variable;
lOMoARcPSD| 58583460
Các ký tự ặc biệt :
o Ký txuống dòng : “\n” hoặc endl o Ký tự cách dòng tab : “\t”
o Ký tự kết thúc chuỗi : “\0”
cout << "Xuong dong tai day" << endl;
cout < "Xuong dong thu 2\n";
II. Lập trình hàm và lập trình hướng ối tượng
1. Lập trình hàm – lập trình hướng thtục
Một chương trình khi xử lý ược chia thành nhiều hàm, trong ó mỗi hàm xử
thể có hàm con
Mỗi hàm ều có tên hàm, tham số ầu vào hàm và kết quả trả v
Đầu vào có thể truyền theo dạng tham trhoặc tham chiếu o Truyền tham
tr: giá trbiến sau khi ra khỏi hàm sẽ không thay ổi o Truyền tham chiếu :
giá trbiến sau khi ra khỏi hàm có thể bị thay ổi
//H m cng hai snguyŒn
//Biến a truyn tham tr, biến b truyn tham chiếu int
Cong2SoNguyen(int a, int &b)
{
return a + b;
}
Đặc iểm của lập trình theo hướng thủ tục :
o Dựa theo chức năng làm trọng tâm : mỗi hàm xlý thực hiện một s
hành ộng hay thao tác nào ó.
o Chương trình gọi các hàm xlý tun tự, truyền dliệu vào và trả về kết
qu
2. Lập trình hướng ối tượng Thay vì tập trung vào xử lý dựa theo chức năng làm
trọng tâm, lập trình hướng i tưng tập trung vào ối tượng cần xử lý, trong ối tượng
ó sẽ có khả năng thực hiện chức năng gì và có những thao tác, thuộc tính nào có
liên quan
Khái nim Lp (Class) ược dùng ể mô tả một nhóm các ối tượng cùng loại có
cùng một cách ứng xử trong thế gii thực.
Các thành phần trong một Class :
lOMoARcPSD| 58583460
o Tên lớp : mỗi lp sẽ có tên duy nhất phân biệt vi lớp khác trong cùng
phm vi
o Thành phần dữ liệu hay thuộc tính (attributes): các trường ể lưu d
liu của lớp ối tượng
o Các phương thức của Class (methods): là các hàm xlý viết riêng cho
i tượng của lớp.
Cài t lp ối tượng, cần phi xác ịnh các thành phần trong lớp i tượng
Mỗi thuộc tính và phương thức sẽ có tầm vực truy cập (scope) o Public :
cho phép truy xuất thuộc tính và phương thức từ bên ngoài lp o Private :
chỉ cho phép truy xuất, thay i thuộc tính, phương thức ở bên trong ni b
của lớp ó
Nếu không khai báo tầm vực, mặc ịnh sẽ là private
ới ây là một ví dụ về một chương trình hướng i tượng và cách tổ chức mã
nguồn theo cấu trúc chuẩn
//File Fraction.h nm trong thư mc Header Files. Dùng đ
định nghĩa các thuc tính và phương thc ca lớp
//TŒn class: Fraction class
Fraction
{
//Phn khai bÆo thuc t nh
//Nếu để mặc đnh th sl private
int numerator;
int denominator;
//Phn khai báo phương thc bŒn trong lp đi tưng
public: void setValue(int numerator, int
denominator);
void printOnScreen();
};
lOMoARcPSD| 58583460
//File Fraction.cpp nm Source File. Dùng đcài đt cÆc
phương thc đã báo Fraction.h
#include<iostream>
#include "Fraction.h" using
namespace std;
void Fraction::setValue(int numerator, int denominator)
{
this->numerator = numerator; this-
>denominator = denominator;
}
void Fraction::printOnScreen()
{
cout << "Numerator is: " << numerator << endl;
cout << "Denominator is: " << denominator << endl;
}
//File Main.cpp nm Source File. Cha h m main
#include "Fraction.h"
#include<iostream>
using namespace std; void
main()
{
Fraction a;
int num1;
int num2;
cout << "Enter numerator: ";
cin >> num1;
cout << "Enter denominator: ";
cin >> num2;
a.setValue(num1, num2);
a.printOnScreen();
}
Ví dụ về khai báo lớp i tượng Phân Số gồm có tử số và mẫu s
Có 2 cách ể khai báo và xử lý phương thức của lớp ối tượng : o
Khai báo và xử lý trực tiếp bên trong ối tưng ó o Khai báo
trước bên trong ối tượng, bên ngoài xử lý riêng
lOMoARcPSD| 58583460
Sử dụng ối tượng : khai báo trước thông tin ối tượng, gọi c phương thức x
lý tương ứng (xem ví dụ trong mã nguồn phía trên)
Cấu trúc project của chương trình hướng i tượng trong Visual Studio
Ví dụ ược xây dựng trên IDE Visual Studio 2022
Chạy chương trình và thực hiện nhập tử/mẫu số ể có ược kết quả sau:
lOMoARcPSD| 58583460
III. Bài tập thực hành
Bài tập 1: Hãy tạo project mang tên FirstOOPProject, tổ chức project và copy mã nguồn
ở ví dụ Fraction bên trên ể chạy thử.
Bài tập 2: Sinh viên trường Đại học Khoa học Tự nhiên, ĐHQG-HCM tham gia cuộc thi
Sinh viên giỏi cấp trường. Khi tham gia cuộc thi, mỗi sinh viên sẽ thi 3 môn Toán, Tiếng
Anh và Lập trình. Để ược công nhận là sinh viên giỏi toàn diện, mỗi sinh viên phải ạt ược
iểm trung bình trên 8 iểm và không có môn nào dưới 6.5 iểm. Yêu cầu :
- Hãy tạo class Student với 3 thuộc tính mathGrade, englishGrade,
programmingGrade u thuộc là sthực.
- Tạo phương thức ể gán 3 loại im số cho sinh viên.
- Tạo phương thức tính iểm trung bình của một sinh viên
- Tạo phương thức kiểm tra sinh viên có phi là sinh viên giỏi toàn diện hay không
?
- Nhp iểm cho sinh viên từ bàn phím và xuất iểm trung bình của sinh viên ó lên
màn hình console. Xuất lên màn hình kết quả sinh viên ó lên có phải giỏi toàn
diện hay không ?
Yêu cầu khác:
lOMoARcPSD| 58583460
- Các Class cần ược tách ra 2 phn:
o Phn ịnh nghĩa thuộc tính phương thức file .h o
Phần cài ặt nm ở file .cpp
- Hàm main nằm file Main.cpp, chứa các luồng demo các yêu cầu của từng bài
tập như mẫu bên dưới
//File Main.cpp nm Source File. Cha h m main
void main()
{
//B i 1
cout << "Bai 1 --------------- ";
Fraction a;
int num1;
int num2;
cout << "Enter numerator: ";
cin >> num1;
cout << "Enter denominator: ";
cin >> num2;
a.setValue(num1, num2);
a.printOnScreen();
//B i 2 cout << "Bai 2 ----------
----- "; ...
}
Các trường hợp không tuân thủ sẽ bị trừ từ 5%-20% số iểm tùy theo mc .
IV. Nộp bài
Tổ chức thư mục theo cấu trúc sau:
Source code: Thư mục chứa mã nguồn. Cần xóa các tập tin trung gian của quá
trình biên dịch cho nhẹ bớt (Build > Clean solution và xóa i thư mục ẩn .vs)
Release: Thư mục chứa tập tin thực thi .exe biên dịch ra từ mã nguồn.
Other: Thư mục cha các tài liệu nộp thêm ví dụ ảnh sơ ồ lớp. Nén tất cả ở dạng
<MSSV>_Week<X>.zip/rar.
MSSV: mã số sinh viên
X: mã tun
Ví d: 21120001_Week01.zip

Preview text:

lOMoAR cPSD| 58583460
CSC10003 – Phương pháp lập trình hướng ối tượng
Tuần 01: Ôn tập C++, Định nghĩa & Cài ặt Class trong OOP
(Cảm n Thầy Trần Ngọc Đạt Thành ã cung cấp tài liệu tham khảo cho môn học)
Nội dung thực hành lần này sẽ tập trung ôn tập kiến thức về lập trình C++. Sau ó, chúng ta sẽ tìm
hiểu làm thế nào ể ịnh nghĩa và các ặt các Class trong Lập trình hướng ối tượng (OOP
– Object-Oriented Programing) với ngôn ngữ C++.
I. Ôn tập về C++ 1. Cấu trúc của chương trình C++
Cấu trúc của một chương trình C++ cơ bản gồm các phần theo thứ tự sau:
a) Phần khai báo thư viện nằm ở ầu chương trình với các câu lệnh #include
b) Phần khai báo cho phép sử dụng các lệnh có sẵn trong thư viện chuẩn
của C++ ể tiện sử dụng khi lập trình c) Các hàm con xử lý
d) Hàm main nằm ở dưới cùng ể xử lý thực thi chương trình
Khai báo thư việ n v ớ i cú pháp #include
o Một số thư viện thường hay sử dụng:
▪ #include : sử dụng cho nhập xuất ra màn hình console
▪ #include : sử dụng cho việc xử lý tính toán số học lOMoAR cPSD| 58583460
▪ #include : sử dụng cho việc xử lý chuỗi
▪ #include: sử dụng cho việc lưu trữ dữ liệu dạng vector
▪ #include : sử dụng cho việc xử lý thời gian Một số lưu ý:
o Nên theo úng thứ tự cấu trúc xử lý chương trình, ặc biệt là các hàm con
phải nằm trước hàm main, do chương trình thực thi tuần tự từ trên xuống
dưới. Nếu hàm main ược gọi trước các hàm con thì các hàm con sử dụng
trong hàm main sẽ không ược tìm thấy và chương trình báo lỗi. o Các
lệnh xử lý trong chương trình a phần nằm ở tập tin .cpp, ngoài ra còn có
tập tin .h dùng ể khai báo trước các hàm và lớp sẽ sử dụng. Do ó có thể
sử dụng tập tin .h ể khai báo trước câu trúc của chương trình.
o Nhấn Ctrl + F5 ể thực thi chương trình và xem kết quả, nhận F10 ể debug
chương trình theo từng dòng bắt ầu từ hàm main, nhấn F11 ể vào bên trong dòng lệnh ể debug.
2. Nhập và xuất ra màn hình Console trong C++ C++ cung cấp các lệnh có sẵn
ể hỗ trợ việc nhập xuất ra màn hình, dựa trên thư viện chuẩn của C++, ể sử dụng,
ầu chương trình cần phải khai báo ở ầu chương trình #include using namespace std;
Các lệnh nhập xuất sử dụng trong C++ : o cin : nhập dữ liệu,
sử dụng toán tử >> o cout : xuất dữ liệu, sử dụng toán tử <<
Ghi nhớ tránh nhầm lẫn : Cin i vào biến, biến i ra Cout (Cin >>, Cout <<)
Cú pháp sử dụng ể nhập dữ liệu vào biến :
int variable; cin >> variable;
o Màn hình sẽ chờ người dùng nhập dữ liệu vào
o Dữ liệu sau khi nhập, nhấn Enter ể hoàn tất quá trình nhập
Cú pháp sử dụng ể xuất dữ liệu ra màn hình console : int variable = 10; cout << variable; lOMoAR cPSD| 58583460 Các ký tự ặc biệt :
o Ký tự xuống dòng : “\n” hoặc endl o Ký tự cách dòng tab : “\t”
o Ký tự kết thúc chuỗi : “\0”
cout << "Xuong dong tai day" << endl;
cout < "Xuong dong thu 2\n";
II. Lập trình hàm và lập trình hướng ối tượng
1. Lập trình hàm – lập trình hướng thủ tục
Một chương trình khi xử lý ược chia thành nhiều hàm, trong ó mỗi hàm xử lý có thể có hàm con
Mỗi hàm ều có tên hàm, tham số ầu vào hàm và kết quả trả về
Đầu vào có thể truyền theo dạng tham trị hoặc tham chiếu o Truyền tham
trị : giá trị biến sau khi ra khỏi hàm sẽ không thay ổi o Truyền tham chiếu :
giá trị biến sau khi ra khỏi hàm có thể bị thay ổi //H m cộng hai số nguyŒn
//Biến a truyền tham trị, biến b truyền tham chiếu int
Cong2SoNguyen(int a, int &b) { return a + b; }
Đặc iểm của lập trình theo hướng thủ tục :
o Dựa theo chức năng làm trọng tâm : mỗi hàm xử lý thực hiện một số
hành ộng hay thao tác nào ó.
o Chương trình gọi các hàm xử lý tuần tự, truyền dữ liệu vào và trả về kết quả
2. Lập trình hướng ối tượng Thay vì tập trung vào xử lý dựa theo chức năng làm
trọng tâm, lập trình hướng ối tượng tập trung vào ối tượng cần xử lý, trong ối tượng
ó sẽ có khả năng thực hiện chức năng gì và có những thao tác, thuộc tính nào có liên quan
Khái niệm Lớp (Class) ược dùng ể mô tả một nhóm các ối tượng cùng loại có
cùng một cách ứng xử trong thế giới thực.
Các thành phần trong một Class : lOMoAR cPSD| 58583460
o Tên lớp : mỗi lớp sẽ có tên duy nhất phân biệt với lớp khác trong cùng phạm vi
o Thành phần dữ liệu hay thuộc tính (attributes): các trường ể lưu dữ
liệu của lớp ối tượng
o Các phương thức của Class (methods): là các hàm xử lý viết riêng cho ối tượng của lớp.
Cài ặt lớp ối tượng, cần phải xác ịnh các thành phần trong lớp ối tượng
Mỗi thuộc tính và phương thức sẽ có tầm vực truy cập (scope) o Public :
cho phép truy xuất thuộc tính và phương thức từ bên ngoài lớp o Private :
chỉ cho phép truy xuất, thay ổi thuộc tính, phương thức ở bên trong nội bộ của lớp ó
▪ Nếu không khai báo tầm vực, mặc ịnh sẽ là private
Dưới ây là một ví dụ về một chương trình hướng ối tượng và cách tổ chức mã
nguồn theo cấu trúc chuẩn
//File Fraction.h nằm trong thư mục Header Files. Dùng để
định nghĩa các thuộc tính và phương thức của lớp //TŒn class: Fraction class Fraction {
//Phần khai bÆo thuộc t nh
//Nếu để mặc định th sẽ l private int numerator; int denominator;
//Phần khai báo phương thức bŒn trong lớp đối tượng
public: void setValue(int numerator, int denominator); void printOnScreen(); }; lOMoAR cPSD| 58583460
//File Fraction.cpp nằm Source File. Dùng để cài đặt cÆc
phương thức đã báo ở Fraction.h #include #include "Fraction.h" using namespace std;
void Fraction::setValue(int numerator, int denominator) {
this->numerator = numerator; this-
>denominator = denominator; }
void Fraction::printOnScreen() {
cout << "Numerator is: " << numerator << endl;
cout << "Denominator is: " << denominator << endl; }
//File Main.cpp nằm Source File. Chứa h m main #include "Fraction.h" #include using namespace std; void main() { Fraction a; int num1; int num2;
cout << "Enter numerator: "; cin >> num1;
cout << "Enter denominator: "; cin >> num2; a.setValue(num1, num2); a.printOnScreen(); }
Ví dụ về khai báo lớp ối tượng Phân Số gồm có tử số và mẫu số
Có 2 cách ể khai báo và xử lý phương thức của lớp ối tượng : o
Khai báo và xử lý trực tiếp bên trong ối tượng ó o Khai báo
trước bên trong ối tượng, bên ngoài xử lý riêng lOMoAR cPSD| 58583460
Sử dụng ối tượng : khai báo trước thông tin ối tượng, gọi các phương thức xử
lý tương ứng (xem ví dụ trong mã nguồn phía trên)
Cấu trúc project của chương trình hướng ối tượng trong Visual Studio
Ví dụ ược xây dựng trên IDE Visual Studio 2022
Chạy chương trình và thực hiện nhập tử/mẫu số ể có ược kết quả sau: lOMoAR cPSD| 58583460
III. Bài tập thực hành
Bài tập 1: Hãy tạo project mang tên FirstOOPProject, tổ chức project và copy mã nguồn
ở ví dụ Fraction bên trên ể chạy thử.
Bài tập 2: Sinh viên trường Đại học Khoa học Tự nhiên, ĐHQG-HCM tham gia cuộc thi
Sinh viên giỏi cấp trường. Khi tham gia cuộc thi, mỗi sinh viên sẽ thi 3 môn Toán, Tiếng
Anh và Lập trình. Để ược công nhận là sinh viên giỏi toàn diện, mỗi sinh viên phải ạt ược
iểm trung bình trên 8 iểm và không có môn nào dưới 6.5 iểm. Yêu cầu :
- Hãy tạo class Student với 3 thuộc tính mathGrade, englishGrade,
programmingGrade ều thuộc là số thực.
- Tạo phương thức ể gán 3 loại iểm số cho sinh viên.
- Tạo phương thức tính iểm trung bình của một sinh viên
- Tạo phương thức kiểm tra sinh viên có phải là sinh viên giỏi toàn diện hay không ?
- Nhập iểm cho sinh viên từ bàn phím và xuất iểm trung bình của sinh viên ó lên
màn hình console. Xuất lên màn hình kết quả sinh viên ó lên có phải giỏi toàn diện hay không ? Yêu cầu khác: lOMoAR cPSD| 58583460
- Các Class cần ược tách ra 2 phần:
o Phần ịnh nghĩa thuộc tính và phương thức ở file .h o
Phần cài ặt nằm ở file .cpp
- Hàm main nằm ở file Main.cpp, chứa các luồng demo các yêu cầu của từng bài
tập như mẫu bên dưới
//File Main.cpp nằm Source File. Chứa h m main void main() { //B i 1
cout << "Bai 1 --------------- "; Fraction a; int num1; int num2;
cout << "Enter numerator: "; cin >> num1;
cout << "Enter denominator: "; cin >> num2; a.setValue(num1, num2); a.printOnScreen();
//B i 2 cout << "Bai 2 ---------- ----- "; ... }
Các trường hợp không tuân thủ sẽ bị trừ từ 5%-20% số iểm tùy theo mức ộ. IV. Nộp bài
Tổ chức thư mục theo cấu trúc sau: •
Source code: Thư mục chứa mã nguồn. Cần xóa các tập tin trung gian của quá
trình biên dịch cho nhẹ bớt (Build > Clean solution và xóa i thư mục ẩn .vs) •
Release: Thư mục chứa tập tin thực thi .exe biên dịch ra từ mã nguồn. •
Other: Thư mục chứa các tài liệu nộp thêm ví dụ ảnh sơ ồ lớp. Nén tất cả ở dạng _Week.zip/rar. •
MSSV: mã số sinh viên • X: mã tuần •
Ví dụ: 21120001_Week01.zip