BÀI TẬP THỰC HÀNH 3 | LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Output: 1 nếu là true (nếu biến ThoiGian ta muốn so sánh nhỏ hơn hoặc bằng biến
ThoiGian t), 0 nếu là false (nếu biến ThoiGian ta muốn so sánh không nhỏ hơn hoặc bằng biến ThoiGian t). Bài tập giúp bạn tham khảo, củng cố kiến thức và ôn tập đạt kết quả cao.
Môn: Lập trình hướng đối tượng (OOP)
Trường: Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh
Thông tin:
Tác giả:
Preview text:
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
MÔN 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 Thị Như Trang-23521628
Tp. Hồ Chí Minh, 02/2024
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
……., ngày…….. tháng……năm 2024 Người nhận xét
(Ký tên và ghi rõ họ tên) 2 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG MỤC LỤC 1 BÀI 1
1.1 Xây dựng lớp PhanSo bao gồm:…………………………………………………
1.2 Diagram của lớp PhanSo:…………………………………………….. . . . . . . . .
1.3 Khai báo của lớp PhanSo, bao gồm các thuộc tính và phương thức:.. . . . . . . . .
1.4 Nội dung các phương thức trong lớp PhanSo:………………………………….
1.5 Hướng xử lý các phương thức PhanSo:…………………………………………. 2 BÀI 2:
2.1 Xây dựng lớp SoPhuc bao gồm:…………………………………………………
2.2 Diagram của lớp SoPhuc:…………………………………………….. . . . . . . . ..
2.3 Khai báo của lớp SoPhuc, bao gồm các thuộc tính và phương thức:.. . . . . . . . .
2.4 Nội dung các phương thức trong lớp SoPhuc:…………………………………..
2.5 Hướng xử lý các phương thức SoPhuc:…………………………………………. 3 BÀI 3:
3.1 Xây dựng lớp ThoiGian bao gồm:………………………………………….. ......
3.2 Diagram của lớp ThoiGian :…………………………………………….. . . ......
3.3 Khai báo của lớp ThoiGian , bao gồm các thuộc tính và phương thức:.. . . ......
3.4 Nội dung các phương thức trong lớp ThoiGian :………………………….........
3.5 Hướng xử lý các phương thức ThoiGian :………………………………………. 4 Bài 4:
4.1 Xây dựng lớp ngày tháng năm bao gồm:………………………………………..
4.2 Diagram của lớp NgayThangNam:……………………………………………..
4.3 Khai báo của lớp NgayThangNam, bao gồm các thuộc tính và phương thức:..
4.4 Nội dung các phương thức trong lớp NgayThangNam:………………………..
4.5 Hướng xử lý các phương thức ngày tháng năm tiếp theo:……………………… 3 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG DANH MỤC BẢNG
1.Danh mục bảng lớp phân số:
Bảng 1.1 Nội dung các phương thức lớp phân số
2. Danh mục bảng lớp số phức:
Bảng 2.1 Nội dung các phương thức lớp số phức
3.Danh mục bảng lớp thời gian:
Bảng 3.1. Nội dung các phương thức lớp thời gian+ Input&Output
4.Danh mục bảng của lớp NgayThang Nam....
Bảng 4.1 Phương thức khởi tạo 2 hàm NgayThangNam()
Bảng 4.2 Phương thức thực hiện hàm TinhNgay()
Bảng 4.3 Phương thức thực hiện operator cộng thêm vào một số ngày operator+(int Ngay)
Bảng 4.4 Phương thức operator thực hiện giảm đi một số ngày operator-(int Ngay)
Bảng 4.5 Phương thức operator thực hiện tăng thêm 1 ngày nhập vào operator++()
Bảng 4.6 Phương thức operator thực hiện giảm thêm 1 ngày nhập vào operato--():
Bảng 4.7 Phương thức operator thực hiện so sánh 2 ngày bằng nhau operator==()
Bảng 4.8 -Phương thức operator thực hiện so sánh 2 ngày khác nhau operator !=()
Bảng 4.9 Phương thức operator thực hiện tìm ngày nào lớn hơn hoặc bằng giữa 2
ngày nhập vào operator>=()
Bảng 4.10 Phương thức operator thực hiện tìm ngày nào bé hơn hoặc bằng giữa 2
ngày nhập vào operator<=()
Bảng 4.11 Phương thức operator thực hiện tìm ngày nào lớn hơn giữa 2 ngày nhập vào operator>()
Bảng 4.12 Phương thức operator thực hiện tìm ngày nào bé hơn giữa 2 ngày nhập vào operator<()
Bảng 4.13 Phương thức operator thực hiện hàm nhập vào operator>>( istream& is, NgayThangNam& a)
Bảng 4.14 Phương thức operator thực hiện hàm in ra operator<< ( ostream& is,
const NgayThangNam& a)
Bảng 4.15 Hướng xử lí của hàm operator-(int Ngay) 4 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bảng 4.16 Hướng xử lí của hàm operator-(int Ngay)
Bảng 4.17 Hướng xử lí cuat hàm operator++()
Bảng 4.18 Hướng xử lí của hàm operator—
Bảng 4.19 Hướng xử lí của các hàm operator ==, !=,>=, <=, >, < DANH MỤC HÌNH ẢNH
BÀI 1:Lớp phân số
Hình 1.1 Class diagram lớp Phân Số
Hình 1.2 Khai báo lớp Phân Số
Hình 1.3 Ouput ảnh 1
Hình 1.4 Output ảnh 2
Hình 1.5 Output ảnh 3
Hình 1.6 Xuất phân số
Hình 1.7 Hàm tìm UCLN
Hình 1.8 Hàm rút gọn phân số
BÀI 2:Lớp số phức
Hình 2.1 Class diagram của lớp Số Phức
Hình 2.2 Khai báo lớp Số Phức Hình 2.3 Input&Output
BÀI 3:Lớp thời gian
Hình 3.1 class thời gian
Hình 3.2 Khai báo lớp thời gian
BÀI 4: lớp NgayThangNam....
Hình 4.1 Class diagram của lớp NgayThangNam
Hình 4.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
Hình 4.3 Chương trình chứa các câu lệnh dùng để thực thi hàm của lớp NgayThangNam
Hình 4.4 Phần chứa các câu lệnh chính để nhập và xuất các giá trị
Hình 4.5 Nhập vào 2 ngày
Hình 4.6 Kết quả số ngày trong năm của hai ngày nhập vào
Hình 4.7 Ngày mới sau khi tăng, giảm và khoảng cách giữa hai ngày ban đầu
HÌnh 4.8 Ngày mới sau khi tăng giảm 1 ngày và so sánh 2 ngày 5 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG NỘI DUNG BÀI LÀM
Bài 1: Xây dựng lớp phân số: • Thuộc tính: iTu, iMau
• Phương thức: PhanSo(), PhanSo(int Tu, int Mau)
• Thực hiện các phương thức operator: +, -, *, /, ==, !=, >=, <=, >, <, >>, <<
Hình 1.1 Class diagram lớp Phân Số
Khai báo của lớp Phân số: 6 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Hình 1.2 Khai báo lớp Phân Số
Nội dung các phương thức của lớp phân số:
Nội dung phương thức nhập phân số >>:
Phương thức xuất phân số <<:
Khởi tạo hàm constructor:
Phương thức khởi tạo constructor với giá trị x,y ban đầu: 7 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Phương thức operator +:
Phương thức operator -:
Phương thức operator *:
Phương thức operator /: 8 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Phương thức operator ==:
Phương thức operator !=:
Phương thức operator >:
Phương thức operator <: 9 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Phương thức operator >=:
Phương thức operator <=:
Bảng 1.1 Nội dung các phương thức của lớp Phân số. Input & Output:
-Nhập vào hai phân số 2/3 và 4/7 =>kết quả là kết quả cho phép + - * / và so sánh 2
phân số có giống nhau không.
Hình 1.3 Ouput ảnh 1 10 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
-Hai phân số được khởi tạo sẵn trong main.cpp =>kết quả so sánh hai phân số > hay < hơn:
Hình 1.4 Output ảnh 2
-Nhập vào phân số c và sao đó tạo ta nhập vào hai phân số d,e với điểu kiện
=>chương trình thông báo “nhap
dung” nếu 2 phân số nhập vào thõa điều kiện nếu sai thì sẽ thông báo sai
Hình 1.5 Output ảnh 3
Hướng xử lý các phương thức trong lớp Phân số:
-Phương thức nhập dùng toán tử operator: istream& operator>>(istream& in, PhanSo& p)
Khai báo hàm bạn trong class PhanSo friend istream& operator>>(istream& in, PhanSo& p)
-Phương thức xuất dùng toán tử operator: ostream& operator<<(ostream& out, PhanSo& p)
Khai báo hàm bạn trong class PhanSo friend ostream& operator<<(ostream& out, PhanSo& p) 11 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Hình 1.6 Xuất phân số
+Nếu tử =0 thì xuất phân số là 0.
+Tử và mẫu cùng dấu(âm hoặc dương) thì kết quả là trị tuyệt đối của hai số tử mẫu.
+Ngược lại nếu trái dấu thì kết quả là âm.
-Một số phương thức được bổ sung như RutGon tìm UCLN:
Hình 1.7 Hàm tìm UCLN
Hình 1.8 Hàm rút gọn phân số
-Phương thức operator +,-,*,/: dùng công thức cộng, trừ, nhân, chia hai phân số để thực hiện phép toán trên
-Phương thức operator so sánh >=, <=, >, <: ban đầu thực hiện quy đồng để so sánh hai
tử số với nhau, đối với toán tử >=, <= thì thêm điều kiện hai tử bằng nhau CODE BÀI 1: 12 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 2: Xây dựng lớp số phức: • Thuộc tính: dThuc, dAo
• Phương thức: SoPhuc(), SoPhuc (int thuc, int ao)
• Thực hiện các phương thức operator: +, -, *, /, ==, !=, >>, <<
Class diagram của lớp số phức
Hình 2.1 Class diagram của lớp Số Phức
Khai báo của lớp số phức: 13 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Hình 2.2 Khai báo lớp Số Phức
Nội dung các phương thức của lớp số phức:
Nội dung phương thức nhập số phức >>:
Phương thức xuất số phức <<: 14 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Khởi tạo hàm constructor:
Phương thức khởi tạo constructor với giá trị thực,ảo ban đầu:
Phương thức operator +: 15 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Phương thức operator -:
Phương thức operator *:
Phương thức operator /:
Phương thức operator ==: 16 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Phương thức operator !=:
Bảng 2.1 Nội dung các phương thức của lớp số phức Input&Output
Hình 2.3 Input&Output
Hướng xử lý các phương thức số phức:
Gọi hai số phức A(a1, a2), B(b1, b2)
Tất cả các phương thức đều được trả về SoPhuc kq
Giải quyết trường hợp cộng 2 số phức:
Dùng công thức cộng hai số phức: A + B = (a1+b1, a2+b2) 17 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Giải quyết phương thức trừ 2 số phức:
Dùng công thức trừ hai số phức: A - B = (a1-b1, a2-b2)
Giải quyết phương thức nhân (tính tích) 2 số phức:
Dùng công thức nhân hai số phức: A * B = (a1*b1 – a2*b2, a1*b2+a2*b1)
Giải quyết phương thức chia 2 số phức:
a *b a *b b *a a *b
Dùng công thức chia hai số phức: 1 1 2 2 1 2 1 2 A/B= , 2 2 2 2 b b b b 1 2 1 2
So sánh hai số phức:
So sánh phần thực và phần ảo nếu bằng nhau thì hai số phức bằng nhau ngược lại thì khác nhau CODE BÀI 2.
Bài tập 3: Xây dựng lớp thời gian
• Thuộc tính: iGio, iPhut, iGiay
• Phương thức: ThoiGian(), ThoiGian (int Gio, int Phut, int Giay), TinhGiay(), TinhLaiGio(int Giay)
• Thực hiện các phương thức operator: +(int Giay), -(int Giay), +(ThoiGian a), -
(ThoiGian a), ++, --, ==, !=, >=, <=, >, <, >>, <<
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() Bài làm 18 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
1.1.1 Class diagram của lớp ThoiGian:
Hình 3.1 class thời gian
Code của lớp ThoiGian bao gồm các thuộc tính và phương thức:
Hình 3.2 Khai báo lớp thời gian 19 | P a g e
IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Nội dung các phương thức trong lớp ThoiGian:
Phương thức khai báo constructor không truyền tham số:
Khi ta khai báo 1 đối tượng ThoiGian không truyền tham số thì ba biến iGio, iPhut,
iGiay sẽ có giá trị mặc định là 0 (nghĩa là 0 giờ 0 phút 0 giây).
Phương thức khai báo constructor có truyền tham số:
Khi ta khai báo 1 đối tượng ThoiGian có truyền tham số thì ba biến iGio, iPhut, iGiay
sẽ có giá trị tương ứng với giá trị mà ta truyền vào.
Phương thức tính giây (TinhGiay()):
Input: Thời gian mà ta muốn đổi ra giây.
Output: Số giây tính được dựa vào thời gian đã cho.
Hướng giải quyết:
1. Tính tổng số giây tương ứng với số giờ bằng cách nhân số giờ với 3600 (số giây trong một giờ).
2. Tính tổng số giây tương ứng với số phút bằng cách nhân số phút với 60 (số giây trong một phút).
3. Cộng tổng số giây từ các bước trên với số giây.
4. Trả về kết quả là tổng số giây. 20 | P a g e