ccc ccc cect ecentteeeenees 20 1.4.1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thức..... IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG DANH MỤC BẢNG Bảng 1 Nội dung code của phương th
Trang 1DAI HOC QUOC GIA THÀNH PHÓ HỎ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CONG NGHE PHAN MEM
MON LAP TRINH HUONG DOI TUQNG
BAI TAP THUC HANH 1
GVHD: Nguyễn Ngọc Qui
Sinh viên thực hiện: Trần Quang Đề - 23520283
Trang 2IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Ÿ Tp Hồ Chí Minh, 03/2024 II
2|Page
Trang 3IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
gày tháng năm 2024
Người nhận xét (Kỹ tên và ghi rõ họ tên)
3|Page
Trang 4IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
1.1.1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thức 1.1.2 Viết nội dung vào các phương thức đã khai báo -Sc sec ren 1.1.3 Gọi các phương thức trong ham bằng main() - 5s s2 21x czxrret 1.1.4 Kết quả thực thi
1.2Bài tập 2 Xây dựng lớp phân số
1.2.1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thức 1.2.2 Viết nội dung vào các phương thức đã khai báo 5 cccsctersrszszea 1.2.3 Gọi các phương thức trong hàm matn() - 5-5 2-2222 222<x‡+2>ssx +2
1.3Bài tập 3: Xây dựng lớp số phức bao gồm - 22s cereErererrrre l6
1.3.1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thức 1.3.2 Viết nội dung vào các phương thức đã khai báo
1.3.3 Gọi các phương thức trong hàm matn() 5-5 22-22222222 s>sss +2
1.4Bài tập 4: Xây dựng lớp Giờ Phút Glay ow ccc ccc cect ecentteeeenees 20 1.4.1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thức 1.4.2 Viết nội dung vào các phương thức đã khai báo s- - cccctersrsrszea 1.4.3 Gọi các phương thức trong hàm matn() - 5-5 222522222 x+2sssx +2
4|Page
Trang 5IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
DANH MỤC BẢNG
Bảng 1 Nội dung code của phương thức ngày tháng năm tiếp theo
Bảng 2 Kết quả thực thi
Bảng 3 Gọi các phương thức trong hàm main
Bảng 4 Gọi các phương thức trong hàm main)
5|Page
Trang 6IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
DANH MỤC HÌNH ẢNH
Hình 1 Class diagram của lớp NgayThangNam
Hình 2 Xây dựng lớp, khai báo các thuộc tính, phương thức
Hình 3 Nội dung code của phương thức nhập
Hình 4 Nội dung của phương thức xuất
Hình 5 Gọi các phương thức trong hàm main()
Hình ó Class dìagram của lớp PhanSo
Hình 7 Xây dựng lớp, khai báo các thuộc tính
Hình 8 Nội dung code của phương thức nhập
Hình #9 Nội dung code phương thức xuất
Hình 10 Nội dung code phương thức rút gọn
Hình 11 Nội dung code phương thức tổng
Hình 12 Nội dung code phương thức hiệu
Hình 13 Nội dung code phương thức tích
Hình 14 Nội dung code phương thức thương
Hình 15 Nội dung code phương thức so sánh
Hình 1ó Class diagram của lớp SoPhuc
Hình 17 Xây dựng lớp, khai báo các thuộc tính
Hình 18 Nội dung code phương thức nhập
Hình 19 Nội dung code phương thức xuất
Hình 20 Nội dung code phương thức tổng
Hình 21 Nội dung code phương thức hiệu
Hình 22 Nội dung code phương thức tích
Hình 23 Nội dung code phương thức thương
Hình 24 Class diagram của lớp GioPhutGiay
Hình 25 Xây dựng lớp, khai báo các thuộc tính
Hình 2é Nội dung code phương thức nhập
Hình 27 Nội dung code phương thức xuất
Hình 28 Nội dung code phương thức tính thêm một giây
Hình 29 Gọi các phương thức trong hàm main()
6|Page
Trang 7IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
NỘI DUNG BÀI LÀM
1.1 Bài tập 1 Xây dựng lớp ngày thang nam
° - Thuộc tinh: iNgay, iThang, iNam
* Phương thức: NhapQ, Xuat (), Ngay ThangNamTiep Theo()
Yêu cầu: Thực hiện xây dựng lớp, vẽ class điagram và 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 trong hàm main()
Class diagram của lớp NgayThangNam
Ngay ThangNam
Hinh I Class diagram cua lop NgayThangNam
1.L1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thực
#pragma once {
iNgay, iThang, iNam;
Nhap();
Xuat();
NgayThangNamTiepTheo() ;
Hinh 2 Xdy dung lop, khai bao eae thuéc tinh, phuong thie
1.1.2 Viết nội dung vào các phương thức đã khai báo
Phương thức nhập:
7|Page
Trang 8IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
cout << iNgay << "/" << iThang << "/" << iNam << endl;
Hinh 4 Néi dung ctia phuong thức xuất
Phương thức Ngày Tháng Năm tiếp theo:
* Input: Nhập ngày tháng năm
* Output: Ngày tiếp theo của ngày được nhập
- - Phương thức giải quyết: Sử dụng câu lệnh điều kién if else de liệt kê và xử ly các trường hợp như năm nhuận, năm không nhuận, ngày cuối tháng, ngay cudi
Trang 9IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
iThang = 3;
iThang == 10) {
iNgay = iNgay + 1;
if (INgay == 32) { iNgay = 1;
else {
iNgay = iNgay + 1;
if (INgay == 31) { iNgay = 1;
Trang 10IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
24/3/2024 28/2/2000 28/2/2000
29/2/2000
1.2 Bài tập 2 Xây dựng lớp phân số
» Thuộc tính: iTu, iMau
* Phương thức: Nhap(Q), Xuat(), RutGon(), Tong(), HieuQ), TichQ, Thuong(), SoSanh()
Yêu cầu: Thực hiện xây dựng lớp, vẽ diagram và 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 trong hàm main() Class diagram của lớp PhanSo
10|Page
Trang 11IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
NA Si:
+ Nhap(): void + Xuat(): void + RutGon(): void + Tong(): void + Hieu(): void Sam onl @ Maree + Thuong(): void + SoSanh(Q):: void
Hinh 6 Class diagram cua lop PhanSo
1.2.1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thực
Thuong(
SoSanh(
Hinh 7 Xây dựng lớp, khai báo các thuộc tính
1.2.2 Viết nội dung vào các phương thức đã khai báo
Phương thức nhập:
11|Page
Trang 12IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
::Nhap(C)
cout << "N
cin >> iTu;
cout << "Nhe cin >> iMau;
* _ Input: tử và mẫu được nhập vào bàn phím người dùng
* Output: phân số đã được rút gọn
* Phương thức: tìm ước chung lớn nhất của tử và mẫu, rồi lân lượt chia tử và mẫu cho ước chung lớn nhât Nêu mâu sô là sô âm, phương thức sẽ đảo dâu sô
đó đề đảm bảo phân sô được biêu điện đúng
12|Page
Trang 13IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
» _ Input: Nhận một tham số đối tượng “PhanSo” (ps) đề thực hiện phép cộng
* Output: Trả về kết quả của phép cộng
* Phuong thức: Khởi tạo đối tượng ketqua dé lưu kết quả Tính tử số mới của ketQua bang cách nhân tử sô của phân sô hiện tại (7u) với mâu sô của phân sô
“ps”, sau đó cộng với tích của mâu sô của phân sô hiện tại (Mau) với tử sô của phan so “ps” Tính mâu sô mới của “ketQua” băng tích của mâu so của phân sô hiện tại (Mau) với mâu sô của phân so “ps” Dùng phương thức “RutGon()”
đê rút gọn “ketQua” Trả về đôi tượng “ketQua” đã được rút gọn
13|Page
Trang 14IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
::Tong(
ketqua;
ketqua.iTu = iTu * ps.iMau + iMau * ps.iTu;
ketqua.iMau = iMau * ps.iMau;
» _ Input: Nhận một tham số đối tượng “PhanSo” (ps) đê thực hiện phép trừ
* Output: Trả vẻ kết quả của phép trừ
* _ Phương thức: Tương tự với phương thức cộng
ketqua;
ketqua.iTu = iTu * ps.iMau - iMau * ps.iTu;
ketqua.iMau = iMau * ps.iMau;
° _ Input: Nhận một tham số là một đối tượng phân số ("ps"), đại diện cho phân số cần
được nhân với phân số hiện tại
- _ Output: Trả về một đối tượng là kết quả của phép nhân
- _ Phương thức: Khởi tạo một đối tượng phân số mới ("ketQua") đề lưu trữ kết quả của phép nhân Tính tử số mới của "ketQua" bằng cách nhân tử số của phân số hiện tại với
tử số của "ps", và tính mẫu số mới của "ketQua" bằng cách nhân mẫu số của phân số hiện tại với mẫu số của "ps" Gọi phương thức "RutGon()" đề rút gọn phân số
"ketQua" Tra về đối tượng “ketQua" đã được rút gọn
14|Page
Trang 15IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Fe] pated 11 6 ketqua;
ketqua.iTu = iTu * ps.iTu;
ketqua.iMau = iMau * ps.iMau;
- _ Output: Trả về một đối tượng là kết quả của phép chia
- -_ Phương thức: Khởi tạo một đối tượng "PhanSo" mới là "ketQua" đề lưu trữ kết quả của phép chia Tính tử số mới của "ketQua" bằng cách nhân tử số của phân số hiện tại
với mẫu số của "ps" Tính mẫu số mới của "ketQua" bằng cách nhân mẫu số của phân
số hiện tại với tử số của "ps" Gọi phương thức "RutGon()" đề rút gọn phân số
"ketQua" Tra về đối tượng “ketQua" đã được rút gọn
: : Thuong(
ketqua;
ketqua.iTu = iTu * ps.iMau;
ketqua.iMau = iMau * ps.iTu;
- _ Input: Nhận một tham số là một đối tượng "PhanSo" ("ps"), đại điện cho phân số cần
so sánh với phân số hiện tại
Output: Tra vé mét s6 nguyén: -1 néu phan số hiện tại nhỏ hơn phân số "ps" 1 nếu phân sô hiện tại lớn hơn phân số "ps" 0 nêu hai phân số bằng nhau
Phuong thức: Chuyên đôi tử số và mẫu số của cả hai phân số thành giá trị thập phân bằng cách chia tử số cho mẫu số So sánh hai giá trị thập phân này Trả về kết quả so sánh dựa trên kết quả của phép so sánh giữa hai giá trị thập phân
15|Page
Trang 16IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
: :SoSanh(
valuel = >CiTu) / iMau;
if (valuel < value2) return -1;
else if (valuel > value2) return 1;
eLse return 0;
Hinh 15 N6i dung code phương thức so sánh
1.2.3 Goi các phuong thc trong ham main()
Bang 3 Gọi các phương thức trong hàm main
PhanSo rutgon1 = ps1.RutGonQ;
cout << "Rut gon phan so thu nhat: ";
rutgon1.Xuat();
cout << endl:
PhanSo rutgon2 = ps2.RutGon();
cout << "Rut gon phan so thu hai: ";
rutgon2.Xuat();
cout << endl:
PhanSo tong = ps1.Tong(ps2);
cout << "Tong hai phan so: ";
tong.Xuat();
cout << endl;
PhanSo hieu = ps1.Hieu(ps2);
cout << "Hieu hai phan so: ";
hieu.Xuat();
cout << endl;
PhanSo tich = ps1.Tich(ps2);
cout << "Tich hai phan so: ";
Trang 17IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
PhanSo thuong = ps1.Thuong(ps2);
cout << "Thuong hai phan so: ";
5/7
5/7 7/10 99/70 1/70
% 50/49 Phan so thu nhat lon hon phan so thu hai
3/2
5/9
3/2
5/9 3/2 5/9 37/18 17/18 5/6 27/10 Phan so thu nhat lon hon phan so thu hai
1.3 Bài tập 3: Xây dựng lớp số phức bao gồm
* Thudc tinh: iThuc, iAo
* Phương thức: NhapQ, Xuat(), Tong(), HieuQ, TichQ), Thuong()
17|Page
Trang 18IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Yêu cầu: 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 Viết nội dung vào các phương thức đã khai báo Gọi các phương thức trong hàm main()
Class diagram của lớp SoPhuc
- iThuc, iAo: double
+Nhap() : void
+Xuat(): void
+Tong(const SoPhuc& sp): SoPhuc
+Hieu(const SoPhuc& sp): SoPhuc
+Tich(const SoPhuc& sp): SoPhuc
+Thuon(const SoPhuc& sp): SoPhuc
Hinh 16 Class diagram cua lop SoPhue
13.1 Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thực
Hinh 17 Xây dựng lớp, khai báo các thuộc tính
1.3.2 Viêt nội dung vào các phương thức đã khai bảo
Phương thức nhập:
« Nhập phần thực vả phần ảo từ bàn phím/ người dùng
18|Page
Trang 19IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
+ Input (đầu vào): Giá trị của 2 số phức nhập từ ban phím
« Output (đầu ra): Tông của hai số phức
- Phương thức: Tạo số phức tổng Phần thực của số phức tông là tổng của hai phân thực, phần ảo của
số phức tông là tong hai phan ảo
tong;
tong.iThuc = iThuc + sp.iThuc;
tong.iAo = iAo + sp.iAo;
return tong;
Hình 20 Nội dưng code phương thức tông
Phương thức hiệu:
+ Input (đầu vào): Giá trị của 2 số phức nhập từ ban phím
« Output (đầu ra): Hiệu của hai số phức
- Phương thức: Tạo số phức hiệu Phần thực của số phức hiệu là hiệu của hai phân thực, phân ảo của
số phức hiệu là hiệu hai phần ảo
19|Page
Trang 20IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
: :Hieu(
hieu;
hieu 1Thuc = 1Thuc -
hieu.iAo = iAo - return hieu;
Hinh 21 Nội dung code phương thức hiệu
Phương thức tích:
+ Input (đầu vào): Giá trị của 2 số phức nhập từ ban phím
« Output (đầu ra): Tích của hai số phức
° Phương thức: Tạo số phức tích Phần thực của số phức tích là tích của hai phan thực trừ đi tích của hai phân ảo, phân ảo của sô phức hiệu là tích của phân thực I với phân ảo 2 cộng với tích phân thực 2 voi phan ao 1
a ernie tich;
tich.iThuc = iThuc * sp.iThuc - iAo * sp.iAo;
tich.iAo = iThuc * sp.iAo + iAo * sp.iThuc;
return tich;
Hinh 22 Nội dung code phương thức tích
Phương thức thương:
+ Input (đầu vào): Giá trị của 2 số phức nhập từ ban phím
« Output (đầu ra): Thương của hai số phức
- Phương thức: Tạo số phức thương Tạo một biến mẫu có giá trị bằng bình phương phân thực cộng binh phương phân ả ảo của số phức 2 Phần thực của số phức thương bằng tích 2 phân thực cộng với
tích 2 phần mẫu tat cả chia cho giá trị biến mẫu Phân ảo của số phức thương bằng tích của phân ảo số
20|Page
Trang 21IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
phức 1 với phân thực số phức 2 trừ đi tích của phân thực số phức 1 với phần ảo số phức 2 tất cả đem chia cho giá trị của biên mau
: : Thuong(
thuong;
mau = sp.iThuc * sp.iThuc + sp.iAo * sp.iAo; L
thuong iThuc = (iThuc + sp.iThuc + iAo * sp.iAo) / mau; thuong.iAo = (iAo + sp.iThuc - iThuc * sp.iAo) / mau;
return thuong;
Hinh 23 Nội dung code phương thức thương
1.3.3 Gọi các phương thức trong hàm mam()
Bang 4 Gọi các phương the trong ham main()
SoPhuc tong = sp1.Tong(sp2);
cout << "Tong hai so phuc: ";
tong.Xuat();
SoPhuc hieu = sp1.Hieu(sp2);
cout << "Hieu hai so phục: ";
hieu.Xuat();
SoPhuc tich = sp1.Tich(sp2);
cout << "Tich hai so phuc: ";
tich.Xuat();
SoPhuc thuong = sp1.Thuong(sp2);
cout << "Thuong hai so phuc: ";
21|Page