[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG Output: Một đối tượng PhanSo mới.. Trả về một đối tượng PhanSo mới với tử số và mẫu số đã chia cho UCLN... Cách thức hoạt động: Sử dụng toán tử != mặc đ
Trang 1
DAI HOC QUOC GIA THANH PHO HO CHi MINH TRUONG DAI HOC CONG NGHE THONG TIN KHOA CONG NGHE PHAN MEM
MON LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI TẬP THỰC HÀNH 3
GVHD: Nguyễn Ngọc Quí
Sinh viên thực hiện:
- Nguyễn Trần Hoài Bảo - 23520130
- Trần Gia Bảo - 23520139
- Nguyễn Trọng Anh - 23520068
œ4 Tp Hồ Chi Minh, 02/2024 wag
Trang 2[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
sen „ Hgàÿ tháng năm 2024
Người nhận xét (Ký tên và ghi rõ họ tên)
2|Page
Trang 3[T002 — LẬP TRÌNH HƯỚNG ĐĨI TƯỢNG
1.1 Khai báo thuộc tính, phương thức của lớp PhanSo 6 1.2 Giải thích từng phương thức: 11
Chuong 2: Xây dựng lớp số phức 18 2.1 Khai báo thuộc tính, phương thức của lớp SoPhuc 18 2.2 Giải thích từng phương thức «sec cà cà se seseeceexeevxre 2
Chuong 3: Xây dựng lớp thời gian 23 3.1 Khai báo thuộc tính, phương thức của lớp ThoiGian 23 3.2 Giải thích các phương thức: 27
Chương4: Xây dựng lớp ngày tháng năm: 32 4.1 Khai báo thuộc tính, phương thức của lớp NgayThangNam 32 4.2 _ Phương thức của lớp ThiSinh: 33
3|Pàge
Trang 4[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
NỘI DUNG BÀI LÀM
1.1 Thực hiện xây dựng lớp, vẽ class diagram và khai báo các thuộc tính, phương thức
PhanSo
int iTuSo int iMauSo
friend istream& operator>>(istream& is, Phan So& ps);
friend ostream& operator<<(ostream& os, Phan So ps);
Diagram class cia PhanSo
4|Page
Trang 5
[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
1.2 Thực hành trong Visual Studio
Trang 6[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
patel ta a
cin ++;
H void -PhanSo: : Xuat()
4
double - PhanSo: :GiaTriCuaPhanSo()
PhanSo - PhanSo: :RutGon C3
li int -UCLN -=
int - newTu -= LẠ lo VÀ
int newMau = / UCLN;
meturn - PhanSo(£newTu, - newMau ) ;
by int - PhanS
1 Nha 0o dar toe a tên) CPhanSo - ps)|
PhanSo - PhanSo: : CPhanSo -ps}
int newTu = * ps.GetMauS:
int - newMau -= *-ps.GetMauSo();
eturn -: PhanSo(newT: newMau) RutGon();
Trang 7
[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
7ỊPage
Trang 8[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
&
Whap phan so thu “<<
Nhap thanh cong Thuc hien cac phep
Hai phan so bang Hai phan so khac nhau." <<
Hai phan so khac Hai phan so bang
Phan so thu nhat Len hon hoac bang phan se thu hai Phan so thu nhat nho hơn phan số thu hai
Phan so thu nhat nho hon hoạc bang phan so thu hai Phan so thu nhat len hon phan so thu hai
Phan so thu nhat Len hon phan Phan so thu nhat nho hon hoạc bang phan so
Phan so thu nhat nho hon phan so thu hai Phan so thu nhat Lon hon hoac bang phan so
Hai phan so thuc hien phep tỉnh La Pre peer
Or se ps1, p42);
rr
Nhap phan so thu 1:
Nhap gia tri cho phan so: 4 5 Nhap thanh cong!
Nhap phan so thu 2:
Nhap gia tri cho phan so:
Nhap thanh cong!
Hai phan so thuc hien phep tỉnh La
Thuc hien cac phep tinh:
Phep cong: 4/5 + 3/7 = 43/35 Phep tru: 4/5 - 3/7 = 13/35 Phep nhan: 4/5 * 3/7 = 12/35 Phep chia: 4/5 / 3/7 = 28/15 Hai phan so khac nhau
Phan so thu nhat lon hon hoac bang phan so thu hai
Phan so thu nhat Lon hon phan so thu hai
Phan so thu nhat lon hon hoac bang phan so thu hai
Trang 9[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Output: Một đối tượng PhanSo mới
Cách thức hoạt động: Gán giá trị 0 cho ïTuSo và 1 cho IMauSo
Output: Một đối tượng PhanSo mới
Cách thức hoạt động: Gán giá trị a cho iTuSo va b cho iMauSo
Ví dụ sử dụng:
PhanSo ps2(3, 4); // Khởi tạo ps2 với giá trị 3/4
Str dung cin để nhập giá trị cho ïTuSo và ïMauSo
Tăng biến đếm count để theo dõi số lượng đối tượng PhanSo đã được tạo
Trang 10[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Kiểm tra nếu iMauSo bằng 0 (lỗi chia cho 0)
Nếu ïTuSo bằng 0, xuất 0
Nếu phân số có thể rút gọn, rút gọn trước khi xuất
Xuất giá trị phân số theo định dạng tử số/mẫu số
Ep kiéu iTuSo va iMauSo sang kiéu double
Chia iTuSo cho iMauSo va tra vé két qua
Chia ca iTuSo va iMauSo cho UCLN
Trả về một đối tượng PhanSo mới với tử số và mẫu số đã chia cho UCLN
Trang 11[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Output: Giá trị tử số (ïTuSo)
Cách thức hoạt động: Tra vé gia tri iTuSo
Output: Giá trị mẫu số (iMauSo)
Cách thức hoạt động: Trả về giá trị iMauSo
Ví dụ sử dụng:
int mauSo = ps2.GetMauSo(); // Lay giá trị mẫu số của ps2
cout << "Mau so cua phan so 2:" << mauSo << endl;
GetCount():
Mục đích: Trả về số lượng đối tượng PhanSo đã được tạo
Input: Không có
Output: Số lượng đối tượng PhanSo
Cách thức hoạt động: Trả về giá trị của biến đếm count
Ví dụ sử dụng:
int soLuong = PhanSo::GetCount(); // Lấy số lượng đối tượng Phan§o đã tạo
cout << "So luong phan so đa tao: ” << soLuong << endl;
5 Phương thức toán tử:
5.1 Toán tử so sánh:
operator==:
Mục đích: Kiểm tra xem hai phân số có bằng nhau hay không
Input: Một đối tượng PhanSo khác
Output: Giá trị true nếu hai phân số bằng nhau, false nếu khác nhau
Cách thức hoạt động: So sánh giá trị tích chéo (tử số của phân số này nhân với mẫu số của phân số kia và ngược lại) của hai phân số
W|Page
Trang 12[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Mục đích: Kiểm tra xem hai phân số có khác nhau hay không
Input: Một đối tượng PhanSo khác
Output: Giá trị true nếu hai phân số khác nhau, false nếu bằng nhau
Cách thức hoạt động: Sử dụng toán tử != mặc định của C++ để so sánh hai đối tượng PhanSo
Output: Giá trị true nếu phân số này lớn hơn hoặc bằng phân số kia, false nếu nhỏ hơn
Cách thức hoạt động: So sánh giá trị tích chéo (tử số của phân số này nhân với mẫu số của phân số kia và ngược lại) của hai phân số Sử dụng toán tử >= mặc định của C++ để so sánh kết quả
Trang 13[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Output: Giá trị true nếu phân số này nhỏ hơn hoặc bằng phân số kia, false nếu lớn hơn
Cách thức hoạt động: Tương tự như toán tử operator>=, nhưng sử dụng toán tử <= mặc định của C++ để so sánh kết quả
Mục đích: Kiểm tra xem một phân số có lớn hơn một phân số khác hay không
Input: Một đối tượng PhanSo khác
Output: Giá trị true nếu phân số này lớn hơn phân số kia, false nếu nhỏ hơn hoặc bằng
Cách thức hoạt động: Tương tự như toán tử operator>=, nhưng sử dụng toán tử > mặc định của C++ để so sánh kết quả
Mục đích: Kiểm tra xem một phân số có nhỏ hơn một phân số khác hay không
Input: Một đối tượng PhanSo khác
Output: Giá trị true nếu phân số này nhỏ hơn phân số kia, false nếu lớn hơn hoặc bằng
Cách thức hoạt động: Tương tự như toán tử operator<=, nhưng sử dụng toán tử < mặc định của C++ để so sánh kết quả
Trang 14[T002 — LẬP TRÌNH HƯỚNG ĐĨI TƯỢNG
0perator+:
Mục đích: Cộng hai phân số
Input: Một đối tượng PhanSo khác
Output: Một đối tượng PhanSo mới biểu diễn kết quả cộng
Cách thức hoạt động:
Tính tốn tử số mới bằng iTuSo * ps.GetMauSo() + iMauSo * ps.GetTuSo() Tính tốn mẫu số mới bằng iMauSo * ps.GetMauSo()
Khởi tạo một đối tượng PhanSo mới với tử số và mẫu số mới
Rút gọn đối tượng PhanSo mới
Trả về đối tượng PhanSo mới
Ví dụ sử dụng:
Phan§o tong = ps1 + ps2; // Cộng ps1 và ps2, lưu kết quả vào tong
cout << "Tong cua phan so 1 va 2:" << tong << end];
operator-:
Mục đích: Trừ hai phân số
Input: Một đối tượng PhanSo khác
Output: Một đối tượng PhanSo mới biểu diễn kết quả trừ
Cách thức hoạt động: Tương tự như tốn tử operator+, nhưng thực hiện phép trừ thay vì phép cộng
Mục đích: Nhân hai phân số
Input: Một đối tượng PhanSo khác
Output: Một đối tượng PhanSo mới biểu diễn kết quả nhân
Cách thức hoạt động:
Tính tốn tử số mới bằng iTuSo * ps.GetTuSo()
Tính tốn mẫu số mới bằng iMauSo * ps.GetMauSo()
Khởi tạo một đối tượng PhanSo mới với tử số và mẫu số mới
Rút gọn đối tượng PhanSo mới
Trả về đối tượng PhanSo mới
14|P.àge
Trang 15[T002 — LẬP TRÌNH HƯỚNG ĐĨI TƯỢNG
Muc dich: Chia hai phan sé
Input: Một đối tượng PhanSo khác
Output: Một đối tượng PhanSo mới biểu diễn kết quả chia
Cách thức hoạt động:
Tính tốn tử số mới bằng iTuSo * ps.GetMauSo(
Tính tốn mẫu số mới bang iMauSo * ps.GetTuSo()
Kiểm tra nếu mẫu số mới bằng 0 (lỗi chia cho 0)
Khởi tạo một đối tượng PhanSo mới với tử số và mẫu số mới
Rút gọn đối tượng PhanSo mới
Trả về đối tượng PhanSo mới
Input: Dịng dữ liệu nhập từ cin
Output: Đối tượng PhanSo được cập nhật với giá trị nhập
Cách thức hoạt động: Sử dụng cin để nhập giá tri cho iTuSo va iMauSo
Mục đích: Xuất giá trị của một đối tượng PhanSo bằng cách sử dụng tốn tử <<
Input: Đối tượng PhanSo cần xuất
Output: Giá trị phân số được in ra màn hình
Cách thức hoạt động: Tương tự như phương thức Xuat(), nhưng sử dụng cout để xuất giá trị phân số
15|P.àge
Trang 16[T002 — LẬP TRÌNH HƯỚNG ĐĨI TƯỢNG
e Thuộc tính: dThuc, dAo
¢ Phuong thirc: SoPhuc(), SoPhuc (int thuc, int ao)
se Thực hiện cac phwong thirc operator: +, -, *, /, ==, !=, >>, <<
Yêu cầu: Thực hiện xây dựng lớp, vẽ class diagram va khai báo các thuộc tính,
phương thức Viết nội dung vào các phương thức đã khai báo Gọi các phương thức
friend istream& ope is, SoPhuc& sp)
m& os, SoPhuc sp)
Hình 1: class diagram cửa lớp SoPhuc Thực hiện xây dựng lớp và khai báo các thuộc tính, phương thức của lớp SoPhuc
16|P.àge
Trang 17[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Hình 2: Thực hiện xây dựng lớp, khai báo các thuộc rính, phương thúc của lớp NgayThangNam
hap so thuc thu nhat:
hap phan thuc: 4 hap phan ao: 3 hap so thuc thu hai:
hap phan thuc: 5 phan ao: 2
hai so phuc: 9+5i hai so phục: -1+1i hai so phục: 14+23i
huong hai so phuc: +01 phuc khong bang nhau
Hình 3: Kết quả chạy chương trình
17|Page
Trang 18[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
temp.dAo = dAo + return temp
oPhuc temp temp.dThuc = dThuc temp.dAo = dAo return temp
UTC u L
oPhuc temp temp.dThuc = dThuc * dThuc - dAo * dAo temp.dAo = dThuc * dAo + dAo * ett return temp
booL SoPhuc: :operat const return (dThuc tT
PTT) ey r rator TUT return
cout <<
cout « return return
Trang 19[T002 — LẬP TRÌNH HƯỚNG ĐĨI TƯỢNG
+ Một số phức mới được tạo ra là kết quả của phép trừ giữa hai số phức
+ Số phức mới này chứa hiệu của các phần thực và phần ảo tương ứng từ hai
số phức
- Toan tty nhan (operator):
Input: const SoPhuc& other: Tham chiếu đến một số phức khác được sử dụng
trong phép nhân
Output:
+ Một số phức mới được tạo ra là kết quả của phép nhân giữa hai số phức
+ Số phức mới này chứa tích của hai số phức, được tính tốn dựa trên cơng thức phức hợp
- Tốn tử chia (operator/):
.Input: const SoPhuc& other: Tham chiếu đến một số phức khác được sử dụng
trong phép chia
Output:
+ Một số phức mới được tạo ra là kết quả của phép chia giữa hai số phức
19|P.àge
Trang 20[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
+ Số phức mới này chứa thương của hai số phức, được tính toán dựa trên công thức phức hợp
+ Hàm này yêu cầu người dùng nhập vào phần thực và phần ảo của số
phức thông qua cin
+ Dữ liệu được gan cho các thành viên dThuc và dAo của đối tượng số
Trang 21[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
lab3
Chương 3: Xây dựng lớp thời gian
3.1 Thực hiện xây dựng lớp, vẽ class diagram và khai báo các thuộc tính, phương thức
ThoiGian operator+(int Giay) const;
ThoiGian operator-(int Giay) const;
ThoiGian operator+(const ThoiGian& a) const;
ThoiGian operator-(const ThoiGian& a) const;
ThoiGian& operator++();
ThoiGian& operator ();
bool operator==(const ThoiGian& a) const;
bool operator!=(const ThoiGian& a) const;
bool operator>=(const ThoiGian& a) const;
bool operator<=(const ThoiGian& a) const;
bool operator>(const ThoiGian& a) const;
friend std::istream& operator>>(std::istream& is, ThoiGian& tg);
friend std::ostream& operator<<(std::ostream& os, const ThoiGian& tg);
Diagram cia class ThoiGian
21;|Page
Trang 22
[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
3.2 Thực hành trong Visual Studio
Trang 23[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Trang 24[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Trang 25[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
OutPut
tg1: 1 gio 30 phut H5 giay tg2: 0 gio 45 phut 30 giay tg3 = tgl + tg2: 1 gio 75 phut 75 giay tg1 > tg2: 1
tg1++: 1 gio 30 phut H6 giay tg1 : 1 gio 30 phut 45 giay tg1 == tg2: 0
tg2++: 0 gio 45 phut 31 giay tg2 : 0 gio 45 phut 30 giay tg1 < tg2: 0
tg1 + 1000s: 1 gio 47 phut 25 giay tg2 - 500s: 0 gio 37 phut 10 giay
Ví dụ sử dụng:
ThoiGian thoiGian1; // Khởi tạo thoiGian1 với thời gian mặc định (0:00:00)
ThoiGian(int Gio, int Phut, int Giay):
Mục đích: Khởi tạo một đối tượng ThoiGian mới với thời gian được chỉ định
Input:
int Gio: Giá trị giờ
int Phut: Giá trị phút
int Giay: Giá trị giây
Output: Một đối tượng ThoiGian mới với thời gian đã cho
Trang 26[T002 — LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Input: int Giay: Số giây cần thêm hoặc trừ (giá trị dương để cộng, âm để trừ)
Output: Không có (thời gian của đối tượng được sửa đổi trực tiếp)
Input: int Giay: Số giây cần cộng
Output: Một đối tượng ThoiGian mới với thời gian cộng
Input: int Giay: Số giây cần trừ
Output: Một đối tượng ThoiGian mới với thời gian trừ