1. Trang chủ
  2. » Luận Văn - Báo Cáo

Môn lập trình hướng Đối tượng bài tập thực hành 1 3

25 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình Hướng Đối Tượng Bài Tập Thực Hành 1 3
Tác giả Nguyễn Hoàn Triều
Người hướng dẫn GVHD: Nguyén Ngoc Qui
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Phần Mềm
Thể loại Bài Tập Thực Hành
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 25
Dung lượng 2,81 MB

Nội dung

Hình 1.22: Kết quả của trường hợp cộng năm của lớp NgayThangNam 1.2 Bài tập 2: Xây dựng lớp phân số: « Thuộc tính: ru, iMau ° Phương thức: NhapQ, Xuat, RutGon, Tong, Hieu, Tich, Thuo

Trang 1

MON LAP TRINH HUONG DOI TUQNG

BAI TAP THUC HANH 1

GVHD: Nguyén Ngoc Qui Sinh viên thực hiện: Nguyễn Hoàn Triều - 23521657

90% Tp H6 Chi Minh, 02/2024 soca

Trang 2

IT002 — LAP TRINH HUONG BOI TUQNG

NHAN XET CUA GIAO VIEN HUONG DAN

Người nhận xét (Ký tên và ghi rõ họ tên)

21Page

Trang 3

IT002 — LAP TRINH HUONG BOI TUQNG

MUC LUC

I.1 Bài tập I: Xây dựng lớp ngày tháng năm . ¿+5 2 + £+xse£*+vxexeereses 6

1.2 Bài tập 2: Xây đựng lớp phân số 2-2-2 ++£EE+ZeEEEtetxrrrxrrrrrrrrre 10 1.3 Bài tập 3: Xây dựng lớp số phức - ¿+ ++e2E+++tEx+eEExetrrxrrrrxrrrrsree 17

1.4 Bài tập 4: Xây dựng lớp giờ phút g1âyy - - 6< se SS* St ssrxrreseree 22

3lPage

Trang 4

[T002 - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

DANH MỤC HÌNH ẢNH

Hinh 1.1: Class diagram cua lớp NgayThangNam -LcSS SH kế 6

Hình L.2: Thuộc tính và phương thức của lớp NgayThangNam -.-.- 6

Hinh 1.3: Phuong thức nhập của lớp NgayThangNam Ác knsHe 7 Hình 1.4: Phương thức xuất của lớp NgayThangNam - 2-2 =5-+= << szs=s<s2 7 Hinh 1.5: Ham kiểm tra năm nhuậ TT SE 1E E3 SE SE EEYKEkx cHnHvn krcry 7 Hình 1.6: Hàm tính số ngày trong tháng . 7-2272 5222 +2 ++s+E£+EzE+e+eesreeeezeeereersrs 8 Hình 1.7: Phương thức tính ngày tháng tiếp theo của lớp NgayThangNam 8

Hình 1.8: Kết quả của hàm kiêm tra năm nhuận của lớp NgayThangNam 9

Hình 1.9: Kết quả của hàm tính số ngày trong tháng của lớp NgayThangNam 9

Hình 1.20: Kết quả của trường hợp cộng ngày của lớp NgayThangNam 9

Hình 1.21: Kết quả của trường hợp cộng tháng của lớp NgayThangNam 10

Hình 1.22: Kết quả của trường hợp cộng năm của lớp NgayThangNam 10

Hình 2.L: Class diagram của lớp PhanSO - -cc SH HH HH kxu 11 Hình 2.2: Thuộc tính và phương thức của lớp PhanŠSo . cán 11 Hình 2.3: Hàm tìm UCLN của phân số của lớp PhanSo -5- +s<<<<<=s=s+ 11 Hình 2.4: Phương thức rút gọn phân số của lớp PhanSo -. - +s+<<+s=s<s2 12 Hình 2.5: Phương thức nhập phân số của lớp PhanSo . -s-s<sses<s<z<z+s 12 Hình 2.6: Phương thức xuất phân số của lớp PhanSo - - ¿2-7 <<c<s+s<z<zszs 12 Hình 2.7: Phương thức cộng 2 phân số của lớp PhanSo - s-s=-s-s<s- 13 Hình 2.8: Phương thức tính hiệu 2 phân số của lớp PhanSo -s-s<s 13 Hình 2.9: Phương thức tính tích 2 phân số của lớp PhanSo -s 5<+s+s 14 Hình 2.10: Phương thức tính thương 2 phân số của lớp PhanSo - 14

Hình 2.11: Phương thức so sánh 2 phân số của lớp PhanSo -s< es 15 Hình 2.12: Kết quả của phương thức cộng 2 phân số của lớp PhanSo .- 16

4lPage

Trang 5

IT002 — LAP TRINH HUONG BOI TUQNG

Hinh 2.13: Két quả của phương thức trừ 2 phân số của lớp PhanSo 16

Hình 2.14: Kết quả của phương thức tích 2 phân số của lớp PhanSo - 16

Hình 2.15: Kết quả của phương thức chia 2 phân sô của lớp PhanSo 17

Hình 2.16: Kết quả của phương thức so sánh 2 phân số của lớp PhanSo 17

Hình 3.L: Class diagram của lớp SOPhUC .- - S1 khe 18 Hình 3.2: Thuộc tính và phương thức của lớp SoPhUC . cà Si 18 Hình 3.3: Phương thức nhập số phức của lớp SoPhUC - 5-5 +s5s<+<+==s+s 18 Hình 3.4: Phương thức xuất số phức của lớp SoPhuc s-s s-s<+<zs+=<<s2 18 Hinh 3.5: Phương thức tính tổng 2 số phức của lớp SoPhuc .-. -5- 19 Hình 3.6: Phương thức tính hiệu 2 số phức của lớp SoPhuc -s-s=+<es 19 Hình 3.7: Phương thức tính tích 2 số phức của lớp SoPhUG . - 5-5 -s-s=s- 20 Hình 3.8: Phương thức tính thương 2 số phức của lớp SoPhuc - - s 21 Hình 3.9: Kết quả của phương thức cộng 2 só phức của lớp SoPhuc 21

Hình 3.10: Kết quả của phương thức trừ 2 số phức của lớp SoPhuc 21

Hình 3.11: Kết quả của phương thức nhân 2 số phức của lớp SoPhuc 21

Hình 3.12: Kết quả của phương thức chia 2 số phức của lớp SoPhuc 22

Hình 4.L: Class diagram của lớp GioPhutGiay .- - àn nHnHnHnH* nghe 22 Hình 4.2: Thuộc tính và phương thức của lớp GioPhutGiay ằ 23 Hình 4.3: Phương thức nhập giờ phút giây của lớp GioPhutGiay 23

Hình 4.4: Phương thức xuất giờ phút giây của l ớp GioPhutGiay .- - 23

Hình 4.5: Phương thức tính giờ phút giây sau khi cộng thêm I giây của lớp GioPhutGiay Hình 4.6: Kết quả của trường hợp chuyên sang ngày mới của lớp GioPhutGiay 24

Hình 4.7: Kết quả của trường hợp cộng giây của lớp GioPhutGiay 25

Hình 4.8: Kết quả của trường hợp cộng phút của lớp GioPhutGiay - 25

Hình 4.9: Kết quả của trường hợp cộng giờ của lớp GioPhutGiay 25

5lPage

Trang 6

[T002 - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

NOI DUNG BAI LAM

1.1 Bài tập 1: Xây dựng lớp ngày tháng năm bao gồm:

s Thuộc tinh: iNgay, 1Thang, iNam

° Phương thức: Nhap(Q), Xuat(), Ngay ThangNamTIep Theo()

Yêu cầu: Thực hiện xây dựng lớp, vẽ class diaeram 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 diapram của lớp Ngay ThangNam:

Hinh 1.1: Class diagram cua l60 NgayThangNam

Code của lớp NgayThangNam bao gồm các thuộc tính và phương thức:

a AVE

iThang;

iNam ; Nhap();

Te Oe NgayThangTiepTheo() ;

Tình 1.2: Thuộc tính và phương thức của lớp NgayThangNam

6lPage

Trang 7

IT002 — LAP TRINH HUONG BOI TUQNG

Nội dung các phương thức trong lớp Ngay ThangNam:

- Phương thức nhập ngày tháng năm:

h

::Nhap() { cout << " ; cin >> iNgay >> iThang >> iNam;

Hình 1.3: Phương thức nháp của lớp NgayThangNam

- Phương thức xuất ngày tháng năm đã nhập:

" << iNgay << "/" << iThang << "/" << iNam << endL;

Hình 1.4: Phương thức xuất của lớp NgayThangNam

- Phương thức ngày tháng năm tiếp theo (Ngay ThangNam()):

e Dau vào: ngày tháng năm đã nhập

e Đâura: ngày tháng năm được cộng thêm l ngày

e© Hướng xử lý của phương thức ngày tháng năm tiếp theo:

= Giải quyết trường hợp năm nhuận, năm không nhuận:

o_ Trước tiên ta phải kiểm tra năm nhập vào có phải là năm nhuận hay không Lấy số năm đem chia cho 4, nếu kết quả chia hết cho 4 và không chia hết

cho 100 thì năm đó là năm nhuận Với những năm tròn thế kỷ có 2 số 00

ở cuối thì lầy số năm chỉ cho 400, nếu kết quả chia hết cho 400 thì năm đó

Hinh 1.5: Ham kiém tra năm nhuận

= Giải quyết các trường hợp số ngày trong thang:

o Ta phải kiểm tra với tháng nhập thì có số ngày tối đa là bao nhiêu Việc kiểm tra năm nhuận sẽ giúp ta xác định được số ngày tối đa ở tháng đặc biệt là tháng 2

7IPage

Trang 8

[T002 - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

o Dau tiên ta sẽ kiểm tra nêu tháng nhập vào là tháng 2 và năm nhập vào là năm nhuận thì số ngày tối đa của tháng 2 là 29 ngược là sẽ là 2§ ngày

o Sau do ta sẽ kiểm tra với những tháng khác tháng 2 Với các tháng như tháng 4, 6, 9, 11 thi số ngày tôi đa sẽ là 30, các tháng còn lại thì số ngày

toi da la 31

SoNgayTrongThang( month

if (month Si return KtNamNhuan(year) ? 2

Hinh 1.6: Ham tinh số ngày trong tháng

= Giải quyết trường hợp cộng ngày:

o_ Ta sẽ tạo I biến ngày tương ứng là tổng số ngày của tháng vào, khi cộng thêm I ngày ta sẽ so sánh biến ïNgay với biến Ngay nếu ïNgay nhỏ hơn Ngay thì ïNgay sẽ cộng thêm 1, nếu ïNgay lớn hơn hoặc bằng Ngay thì ta

sẽ giải quyết trường hợp cộng tháng

=_ Giải quyết trường hợp cộng tháng:

o_ Khi iNgay lớn hơn Ngay thì ta sẽ kiểm tra ïThang, nêu ¡Thang nhỏ hơn 12

thì ¡Thang cộng thêm I, nếu ¡Thang lớn hơn 12 thì ta sẽ giải quyết trường

hợp cộng năm

= Giải quyết trường hợp cộng năm:

o_ KhiiThang lớn hơn 12 thì ta đổi giá trị của ïThang bằng I và Nam cộng thêm l tương ứng với là đã sang năm mới

gayThangTiepTheo() { gThang(iThang, iNam);

iNgay*+ ; iNgay = 1

if (iThang < 12) {

iThang++

eLse iThang = 1 iNam++

<< iThang << "/" <<

Hình 1.7: Phương thức tính ngày tháng tiếp theo của lớp NgayThangNam

8lPage

Trang 9

IT002 — LAP TRINH HUONG BOI TUQNG

- Kết quả của hàm kiểm tra năm nhuận:

Nam nhuan Nhap nam:

Nam nhuan

Press any

2021 nhuan

2022 nhuan

2024

2028

key to continue

Hinh 1.8: Két quả của hàm kiểm tra năm nhuận của lớp NgayThangNam

- Kết quả của hàm tính số ngày trong tháng:

Nhap thang: 2 Nhap nam: 2024

So ngay trong thang la: 29 Nhap thang: 1

Hình 1.9: Kết quả Của hàm tính số ngày trong tháng của lớp NgayThangNam

- Kết quả của trường hợp cộng ngày:

Nhap thang: 12

Nhap nam: 2024

Nhap ngay: 13 Ngay sau khi cong la:

Nhap thang: 2 Nhap nam: 2023 Nhap ngay: 26 Ngay sau khi cong La:

Nhap thang: 3 Nhap nam:

Nhap 23 Ngay sau khi cong la:

Nhap thang: 12

Nhap nam: 2322

Nhap ngay: 12 Ngay sau khi cong ta: 13 Press any key to continue

Hình 1.20: Kết quả của trường hợp công ngày của lớp NgayThangNam

9lPage

Trang 10

IT002 — LAP TRINH HUONG BOI TUQNG

- Kết quả của trường hợp cộng tháng:

ngay: 13 nam: 2023 /¡ sau khi cong La: 1d ngay: 3Ô nam; 2022

J sau khi cong La: 31 ngay: 31 thang: 1 nam: 2022 Thang sau khi cong la: 2 Nhap ngay: 30 Nhap nam: 2923 Thang sau khi cong ta: 5 Press any key to continue

Hình 1.21: Kết quả của trường hợp công tháng của lớp NgayThangNam

- Kết quả của trường hợp cộng năm:

Nhap ngay: 36 Nhap nam: 2023 Thang sau khi cong La: 5 Nhap ngay: 36 Nhap thang: 12 Ngay sau khi cong la: 31 Nhap ngay: 31 Nhap thang: 12 Nam sau khi cong ta: 2621 Nhap ngay: 31 Nhap thang: 12 Nam sau khi cong ta: 2623 Press any key to continue

Hình 1.22: Kết quả của trường hợp cộng năm của lớp NgayThangNam

1.2 Bài tập 2: Xây dựng lớp phân số:

« Thuộc tính: ru, iMau

° Phương thức: Nhap(Q), Xuat(), RutGon(), Tong(), Hieu(), Tich(),

Thuong(), SoSanh()

Yêu cầu: Thực hiện xây dựng lớp, vẽ class diaeram 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()

10lIPage

Trang 11

IT002 — LAP TRINH HUONG BOI TUQNG

RutGon();

Nhap();

ye @ me L2) 1-1€

HieuC seca ThuongC

SoSanh(

Hình 2.2: Thuộc tính và phương thức của lớp PhanSo

Nội dung các phương thức trong lớp PhanSo:

- Phương thức rút gọn phân số:

e© _ Hướng xử lí của phương thức rút gọn phân số:

= Dung ham UCLN() dé tính ước chung lớn nhất của tử và mẫu

UCLNC ca while (b != 0)

Trang 12

IT002 — LAP TRINH HUONG BOI TUQNG

= Tatao ra | bién ucln dé lwu gid tri woe chung 1én nhat cua tr va mau

=_ Để rút gọn phân số ta lấy tử và mẫu chia cho biến ucln (ước chung lớn nhất cua tu va mau)

cout << " "- cin >> iTu;

cout << " : cin >> iMau;

RutGon();

Hình 2.5: Phương thúc nhập phân số của lớp PhanSo

- Phương thức xuất phân số đã nhập:

ẨẲ

::Xuat() { cout << iTu << "/" << iMau << endl;

Hình 2.6: Phương thức xuất phân số của lớp PhanSo

- Phương thức tính tổng 2 phân số (Tong()):

e _ Đầu vào: Một phân số

e©_ Đâura: Tông của phân số ta truyền vào với phân số ta đã nhập trước đó

e©_ Hướng xử lí của phương thức cộng 2 phân số:

=_ Tạo một đối tượng kq kiểu PhanSo để lưu kết quả

=_ Để tính tông 2 phân số ta cần quy đồng 2 phân rồi mới cộng 2 phân số đó

= Tính mẫu số mới của kq bằng cách nhân mẫu số của phân số gọi phương thức với mẫu số của phân số b

= Tính tử số mới của kq bằng cách tính tử số của phân số gọi phương thức nhân với mẫu số của phân số b, sau đó cộng với tích của mẫu số của phân số gọi phương thức với tử sô của phan so b

121IPage

Trang 13

IT002 — LAP TRINH HUONG BOI TUQNG

= Gọi phương thức RutGon trên kq để rút gọn phân số mới tính được

=_ Trả vẻ kq, tức là phân số mới đã được tính toán và rút gọn

::Tong(

kq kq.iMau = iMau * b.iMau;

Hình 2.7: Phương thúc Công 2 phân số của lớp PhanSo

- Phương thức tính hiệu 2 phân số:

e _ Đầu vào: Một phân số

e_ Đâầura: Hiệu của phân số ta truyền vào với phân số ta đã nhập trước đó

e© _ Hướng xử lí của phương thức hiệu 2 phân số

=_ Tạo một đối tượng kq kiểu PhanSo để lưu kết quả

“ Đề tính hiệu 2 phân số ta cần quy đồng 2 phân rồi mới trừ 2 phân số đó

= Tính mẫu số mới của kq bằng cách nhân mẫu số của phân số gọi phương thức với mẫu số của phân số b

= Tính tử số mới của kq bằng cách tính tử số của phân số gọi phương thức nhân với mẫu số của phân số b, sau đó trừ đi tích của mẫu số của phân số gọi phương thức với tử số của phân số b

= Gọi phương thức RutGon trên kq để rút gọn phân số mới tính được

=_ Trả vẻ kq, tức là phân số mới đã được tính toán và rút gọn

4q.iMau = iMau * b.iMau;

q.iTu = (iTu * b.iMau) - (iMau * b.iTu);

RutGon();

urn kq;

Hinh 2.8: Phuong thức tính hiệu 2 phân số của lớp PhanSo

- Phương thức tính tích 2 phân sô:

e Đâu vào: Một phân so

e Đâura: Tích của phân sô ta truyền vào với phan sô ta đã nhập trước đó

13lPage

Trang 14

[T002 - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

e©_ Hướng xử lí của phương thức tích 2 phân số:

=_ Tạo một đối tượng kq kiểu PhanSo để lưu kết quả

= Tính mẫu số mới của kq bằng cách nhân mẫu số của phân số gọi phương thức với mẫu số của phân số b

= Tinh tur số mới của kq bằng cách tính tích của tử số của phân số gọi phương thức và tử số của phân số b

= Gọi phương thức RutGon trên kq để rút gọn phân số mới tính được

= Trả vẻ kq, tức là phân số mới đã được tính toán và rút gọn

AGF

kq.iMau = iMau * b.iMau iTu = iTu * b.iTu RutGon();

l

Hình 2.9: Phương thức tính tích 2 phân số của lớp PhanSo

- Phương thức tính thương 2 phân số:

e _ Đầu vào: Một phân số

e©_ Đâu ra: Thương của phân số ta truyền vào với phân số ta đã nhập trước đó e©_ Hướng xử lí của phương thức thương 2 phân số:

=_ Tạo một đối tượng kq kiểu PhanSo để lưu kết quả

= Détinh thuong cua 2 phan sé ta lấy 1 phân số nhân với ngịch đảo phân số còn lại

= Tính mẫu số mới của kq bằng cách nhân mẫu số của phân số gọi phương thức với tử số của phân số b

= Tính tử số mới của kq bằng cách nhân tử số của phân số gọi phương thức với mẫu số của phân số b

= Gọi phương thức RutGon trên kq để rút gọn phân số mới tính được

=_ Trả vẻ kq, tức là phân số mới đã được tính toán và rút gọn

: :ThuongC

kq;

kq.iMau = iMau * b.iTu;

kq.iTu = iTu * b.iMau;

kq.RutGon() ; return kq;

Hình 2.10: Phương thức tính thương 2 phân số của lớp PhanSo

14lPage

Ngày đăng: 11/02/2025, 16:19