IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bảng 16 N i dung bên trong cộủa hướng gi i quyảết phương thức Xuat void SoPhuc::Xuat { cout... IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài tập 4: Xây dựng p g
Trang 1ĐẠI H C QU C GIA THÀNH PH H CHÍ MINH Ọ Ố Ố Ồ
KHOA CÔNG NGH Ệ PHẦN MỀM
Sinh viên thực hiện: Nguyễn Công Đức - 23520307
Trang 2IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
……., ngày…… tháng……năm 2024
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 3IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
MỤC L C Ụ
Trang 4IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
DANH M C B Ụ ẢNG
B ng 1 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() 7
B ng 2 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() 7
B ng 3 N i dung bên trong cả ộ ủa hướng giải quyết phương thức NgayThangNamTiepTheo() 7
B ng 4 K t qu ả ế ả chạy th ử chương trình bài tập 1 8
B ng 5 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() 9
B ng 6 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() 9
B ng 7 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức RutGon() 10
B ng 8 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức RutGon(int iTu, int iMau) 10
B ng 9 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tong(PhanSo ps1, PhanSo ps2) 10
B ng 10 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Hieu(PhanSo ps1, PhanSo ps2) 11
B ng 11 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tich(PhanSo ps1, PhanSo ps2) 11
B ng 12 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Thuong(PhanSo ps1, PhanSo ps2) 12
B ng 13 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức SoSanh(PhanSo ps1, PhanSo ps2) 12
B ng 14 K t qu ả ế ả chạy th ử chương trình bài tập 2 12
B ng 15 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() 13
B ng 16 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() 14
B ng 17 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tong(SoPhuc sp1, SoPhuc sp2) 14
B ng 18 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Hieu(SoPhuc sp1, SoPhuc sp2) 14
B ng 19 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tich(SoPhuc sp1, SoPhuc sp2) 15
B ng 20 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Thuong(SoPhuc sp1, SoPhuc sp2) 15
B ng 21 K t qu ả ế ả chạy th ử chương trình bài tập 3 15
B ng 22 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() 16
B ng 23 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() 17
B ng 24 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức TinhCongThemMotGiay() 17
B ng 25 K t qu ả ế ả chạy th ử chương trình bài tập 4 17
Trang 5IT002 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 6 ủ ớ Hình 2 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a lủ ớp NgayThangNam 6 Hình 3 Class diagram c a l p PhanSo 8 ủ ớ Hình 4 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a l p PhanSo 9 ủ ớ Hình 5 Class diagram c a l p SoPhuc 13 ủ ớ Hình 6 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a l p SoPhuc 13 ủ ớ Hình 7 Class diagram c a l p GioPhutGiay 16 ủ ớ Hình 8 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a l p GioPhutGiayủ ớ 16
Trang 6IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
N I DUNG BÀI LÀM Ộ
• Thuộc tính: iNgay, iThang, iNam
• Phương thức: Nhap(), Xuat(), NgayThangNamTiepTheo()
Hình 1 Class diagram c a l p NgayThangNam ủ ớ
Hình 2 Thực hi n xây d ng l p, khai báo các thuệ ự ớ ộc tính, phương thức c a l p NgayThangNam ủ ớ
Phương thức của class NgayThangNam:
- Phương thức Nhap():
Trang 7IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bảng 1 N i dung bên trong c ộ ủa hướng giải quy ết phương thức Nhap()
void NgayThangNam::Nhap() {
cout << "Nhap ngay thang nam: " ;
cin >> iNgay >> iThang >> iNam;
}
- Phương thức Xuat();
Bảng 2 N i dung bên trong c ộ ủa hướng giải quy ết phương thức Xuat()
void NgayThangNam::Xuat() {
cout << "Ngay, Thang, Nam:" ;
cout << iNgay << << iThang << << iNam << "/" "/" "\n" ;
}
- Phương thức NgayThangNamTiepTheo():
• Output (đầu ra): Ngày tháng năm được cộng thêm một ngày
iNam
Bảng 3 N i dung bên trong c ộ ủa hướng giải quy ết phương thức NgayThangNamTiepTheo()
void NgayThangNam::NgayThangNamTiepTheo() {
ngay = 0; int
switch (iThang) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10 :
case 12 :
ngay = 31;
break ;
case 4:
case 6:
case 9:
case 11 :
ngay = 30;
break ;
case 2:
(iNam % 400 == || (iNam % 4 == 0 && iNam % 100 != if 0
0))
Trang 8IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ngay = 29;
else
ngay = 28;
}
(iNgay <= 0 || iNgay > ngay) { if
cout << "Ngay Thang Nam khong hop le" ;
return ;
}
iNgay++;
(iNgay > ngay) iNgay = , iThang++; if 1
(iThang > 12) iThang = , iNam++; if 1
NgayThangNam::Xuat();
}
- K t qu ế ả chạy th ử chương trình:
Bảng 4 K t qu ế ả chạy thử chương trình bài tập 1
Nhap ngay thang nam: 20 2 2000
Ngay, Thang, Nam:20/2/2000
Ngay, Thang, Nam:21/2/2000
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(), Xuat(), RutGon(), Tong(), Hieu(), Tich(), Thuong(), SoSanh()
Hình 3 Class diagram c a l p PhanSo ủ ớ
Trang 9IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Hình 4 Thực hi n xây d ng l p, khai báo các thuệ ự ớ ộc tính, phương thức c a lủ ớp PhanSo
Phương thức của class PhanSo:
- Phương thức Nhap():
Bảng 5 N i dung bên trong c ộ ủa hướng giải quy ết phương thức Nhap()
void PhanSo::Nhap() {
cout << "Nhap tu va mau: " ;
cin >> iTu >> iMau;
if (iMau == 0) {
; cout << "Phan so khong hop le \n"
PhanSo::Nhap();
}
}
- Phương thức Xuat();
Bảng 6 N i dung bên trong c ộ ủa hướng giải quy ết phương thức Xuat()
void PhanSo::Xuat() {
cout << iTu << << iMau << "/" "\n" ;
}
- Phương thức RutGon():
Trang 10IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
• Hướng giải quyết: Ta chỉ việc chia iTu và iMau cho GCD(iTu, iMau)
Bảng 7 N i dung bên trong c ộ ủa hướng giải quy ết phương thức RutGon()
void PhanSo::RutGon() {
int gcd = gcd(iTu, iMau);
iTu = iTu / gcd;
iMau = iMau / gcd;
cout << "Phan so rut gon la: " ;
PhanSo::Xuat();
}
Bảng 8 N i dung bên trong c ộ ủa hướng giải quy ết phương thức RutGon(int iTu, int iMau)
void PhanSo::RutGon( iTu, int int iMau) {
int gcd = gcd(iTu, iMau);
this ->iTu = iTu / gcd;
this ->iMau = iMau / gcd;
PhanSo::Xuat();
}
- Phương thức Tong(PhanSo ps1, PhanSo ps2):
• Output (đầu ra): Tổng của 2 phân số
Bảng 9 N i dung bên trong c ộ ủa hướng giải quy ết phương thức Tong(PhanSo ps1, PhanSo ps2)
void PhanSo::Tong(PhanSo ps1, PhanSo ps2) {
iTu = ps1.iTu * ps2.iMau + ps2.iTu * ps1.iMau;
iMau = ps1.iMau * ps2.iMau;
Trang 11IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
cout << "Tong 2 phan : " so la ;
PhanSo::RutGon(iTu, iMau);
}
- Phương thức Hieu(PhanSo ps1, PhanSo ps2):
• Output (đầu ra): Hiệu của 2 phân số
Bảng 10 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Hieu(PhanSo ps1, PhanSo ps2)
void PhanSo::Hieu(PhanSo ps1, PhanSo ps2) {
iTu = ps1.iTu * ps2.iMau ps2.iTu * ps1.iMau; -
iMau = ps1.iMau * ps2.iMau;
cout << "Hieu 2 phan so la : " ;
PhanSo::RutGon(iTu, iMau);
}
- Phương thức Tich(PhanSo ps1, PhanSo ps2):
• Output (đầu ra): Tích của 2 phân số
Bảng 11 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Tich(PhanSo ps1, PhanSo ps2)
void PhanSo::Tich(PhanSo ps1, PhanSo ps2) {
iTu = ps1.iTu * ps2.iTu;
iMau = ps1.iMau * ps2.iMau;
cout << "Tich 2 phan so la : " ;
PhanSo::RutGon(iTu, iMau);
}
- Phương thức Thuong(PhanSo ps1, PhanSo ps2):
Trang 12IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bảng 12 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Thuong(PhanSo ps1, PhanSo ps2)
void PhanSo::Thuong(PhanSo ps1, PhanSo ps2) {
iTu = ps1.iTu * ps2.iMau;
iMau = ps1.iMau * ps2.iTu;
cout << "Thuong 2 phan so la : " ;
PhanSo::RutGon(iTu, iMau);
}
- Phương thức SoSanh(PhanSo ps1, PhanSo ps2):
• Output (đầu ra): Kết quả so sánh của 2 phân số
* c và b * d
Bảng 13 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức SoSanh(PhanSo ps1, PhanSo ps2)
void PhanSo::SoSanh(PhanSo ps1, PhanSo ps2) {
if (ps1.iTu * ps2.iMau == ps1.iMau * ps2.iTu) cout << "2 phan
so bang nhau\n" ;
else (ps1.iTu * ps2.iMau < ps1.iMau * ps2.iTu) cout << if
ps1.iTu << << ps2.iMau << "/" " be hon " << ps2.iTu << << "/"
ps2.iMau << "\n" ;
else (ps1.iTu * ps2.iMau > ps1.iMau * ps2.iTu) cout << if
ps1.iTu << << ps2.iMau << "/" " lon hon " << ps2.iTu << << "/"
ps2.iMau << "\n" ;
}
Bảng 14 K t qu ế ả chạy thử chương trình bài tập 2
Nhap tu va mau: 3 4
Nhap tu va mau: 5 6
Phan so rut gon la: 3/4
Phan so rut gon la: 5/6
Tong 2 phan so la : 19/12
Hieu 2 phan so la : 1/-12
Tich 2 phan so la : 5/8
Thuong 2 phan so la : 9/10
3/6 be hon 5/6
Bài tập 3: Xây d ựng số phức bao g m ồ
• Thuộc tính: iThuc, iAo
• Phương thức: Nhap(), Xuat(), Tong(), Hieu(), Tich(), Thuong()
Trang 13IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Hình 5 Class diagram c a lủ ớp SoPhuc
Hình 6 Thực hi n xây d ng l p, khai báo các thuệ ự ớ ộc tính, phương thức c a l p SoPhucủ ớ
Phương thức của class SoPhuc:
- Phương thức Nhap():
Bảng 15 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Nhap()
void SoPhuc::Nhap() {
cout << "Nhap so phuc: " ;
cin >> iThuc >> iAo;
}
- Phương thức Xuat();
Trang 14IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bảng 16 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Xuat()
void SoPhuc::Xuat() {
cout << iThuc << " + " << iAo << "i\n" ;
}
- Phương thức Tong():
• Output (đầu ra): Tổng 2 số phức
Bảng 17 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Tong(SoPhuc sp1, SoPhuc sp2)
void SoPhuc::Tong(SoPhuc sp1, SoPhuc sp2) {
iThuc = sp1.iThuc + sp2.iThuc;
iAo = sp1.iAo + sp2.iAo;
cout << "Tong 2 so phuc la: " ;
SoPhuc::Xuat();
}
- Phương thức Hieu():
• Output (đầu ra): Hiệu 2 số phức
Bảng 18 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Hieu(SoPhuc sp1, SoPhuc sp2)
void SoPhuc::Hieu(SoPhuc sp1, SoPhuc sp2) {
iThuc = sp1.iThuc - sp2.iThuc;
iAo = sp1.iAo - sp2.iAo;
cout << "Hieu 2 so phuc la: " ;
SoPhuc::Xuat();
}
- Phương thức Tich():
• Output (đầu ra): Tích 2 số phức
Trang 15IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
•Hướng giải quyết Cho hai số phức A(a1, a2), B(b1, b2), A * B = (a: 1*b1 – a *b2 2,
a *b1 2+a2*b ) 1
Bảng 19 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Tich(SoPhuc sp1, SoPhuc sp2)
void SoPhuc::Tich(SoPhuc sp1, SoPhuc sp2) {
iThuc = sp1.iThuc * sp2.iThuc - sp1.iAo * sp2.iAo;
iAo = sp1.iThuc * sp2.iAo + sp2.iThuc * sp1.iAo;
cout << "Tich 2 so phuc la: " ;
SoPhuc::Xuat();
}
- Phương thức Thuong():
• Hướng giải quyết: Cho hai số phức A(a1, a2), B(b1, b2), A / B =
+
− +
+
2 2 2 1 2 1 2 1 2
2
2
1
2 2
1
1* * , * *
b b b a a b b
b
b a
b
a
Bảng 20 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Thuong(SoPhuc sp1, SoPhuc sp2)
void SoPhuc::Thuong(SoPhuc sp1, SoPhuc sp2) {
iThuc = (sp1.iThuc * sp2.iThuc + sp1.iAo * sp2.iAo) /
(sp2.iThuc * sp2.iThuc + sp2.iAo * sp2.iAo);
iAo = (sp1.iAo * sp2.iThuc - sp1.iThuc * sp2.iAo) / (sp2.iThuc
* sp2.iThuc + sp2.iAo * sp2.iAo);
cout << "Thuong 2 so phuc la: " ;
SoPhuc::Xuat();
}
Bảng 21 K t qu ế ả chạy thử chương trình bài tập 3
Nhap so phuc: 3 4
Nhap so phuc: 4 5
Tong 2 so phuc la: 7 + 9i
Hieu 2 so phuc la: -1 + -1i
Tich 2 so phuc la: -8 + 31i
Thuong 2 so phuc la: 0.780488 + 0.0243902i
Trang 16IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài tập 4: Xây d ựng p gi lớ ờ phút giây
• Phương thức: Nhap(), Xuat(), TinhCongThemMotGiay()
Hình 7 Class diagram c a lủ ớp GioPhutGiay
Hình 8 Thực hi n xây d ng l p, khai báo các thuệ ự ớ ộc tính, phương thức c a lủ ớp GioPhutGiay
Phương thức của class GioPhutGiay:
- Phương thức Nhap():
Bảng 22 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Nhap()
void GioPhutGiay::Nhap() {
cout << "Nhap gio phut giay: " ;
cin >> iGio >> iPhut >> iGiay;
Trang 17IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
}
- Phương thức Xuat();
Bảng 23 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức Xuat()
void GioPhutGiay::Xuat() {
cout << iGio << << iPhut << << iGiay << ":" ":" "\n" ;
}
- Phương thức TinhCongThemMotGiay():
• Output (đầu ra): Giờ phút giây tính cộng thêm một giây
Bảng 24 N i dung bên trong c ộ ủa hướng gi i quyả ết phương thức TinhCongThemMotGiay()
void GioPhutGiay::TinhCongThemMotGiay() {
iGiay++;
if (iGiay >= 60) iPhut++, iGiay = 0;
if (iPhut >= 60) iGio++, iPhut = 0;
cout << "Gio phut giay sau khi cong them 1 giay la: " ;
GioPhutGiay::Xuat();
}
Bảng 25 K t qu ế ả chạy thử chương trình bài tập 4
Nhap gio phut giay: 20 59 59
20:59:59
Gio phut giay sau khi cong them 1 giay la: 21:0:0
LINK CODE
Trang 18IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
TÀI LIỆU THAM KHẢO