Đang tải... (xem toàn văn)
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 2IT002 L– ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
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 != if0 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++;if1 (iThang > 12) iThang = , iNam++;if1 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()
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, intint 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 << ifps1.iTu << << ps2.iMau << "/"" be hon " << ps2.iTu << << "/"
ps2.iMau << "\n";
else (ps1.iTu * ps2.iMau > ps1.iMau * ps2.iTu) cout << ifps1.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 *b22, a *b12+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 = +
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 gilớờ 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