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 12

29 0 0
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 đề Môn Lập Trình Hướng Đối Tượng Bài Tập Thực Hành 1
Tác giả Trần Lê Uyên Thy
Người hướng dẫn GVHD: Nguyễn Ngọc Quí
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Bài Tập Thực Hành
Năm xuất bản 2024
Thành phố Hồ Chí Minh
Định dạng
Số trang 29
Dung lượng 1,73 MB

Nội dung

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGNỘI DUNG BÀI LÀM Bài tập 1: Xây dựng lớp ngày tháng năm bao gồm: • Thuộc tính: iNgay, iThang, iNam • Phương thức: Nhap, Xuat, NgayThangNamTiepTheo Yêu cầ

Trang 1

ĐẠ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 1

GVHD: Nguyễn Ngọc QuíSinh viên thực hiện: Trần Lê Uyên ThyMSSV: 23521564

 Tp Hồ Chí Minh, 02/2024 

Trang 2

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)

Trang 3

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

MỤC LỤC:

CHƯƠNG 1: XÂY DỰNG LỚP NGÀY THÁNG NĂM 8

1.1 Class Diagram 8

1.2 Khai báo các phương thức và thuộc tính 9

1.3 Nội dung các phương thức 9

1.4 Input và Output 12

1.5 Gọi các phương thức trong hàm main 12

1.6 Kết quả 13

1.7 File code 13

CHƯƠNG 2: XÂY DỰNG LỚP PHÂN SỐ 14

2.1 Class Diagram 14

2.2 Khai báo các phương thức và thuộc tính 15

2.3 Nội dung các phương thức 15

2.4 Input và Output 18

2.5 Gọi các phương thức trong hàm main 19

2.6 Kết quả 20

2.7 File code 20

CHƯƠNG 3: XÂY DỰNG LỚP SỐ PHỨC 21

3.1 Class Diagram 21

3.2 Khai báo các phương thức và thuộc tính 22

3.3 Nội dung các phương thức 22

3.4 Input và Output 24

3.5 Gọi các phương thức trong hàm main 25

Trang 4

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

3.6 Kết quả 25

3.7 File code 25

CHƯƠNG 4: XÂY DỰNG LỚP GIỜ PHÚT GIÂY 26

4.1 Class Diagram 26

4.2 Khai báo các phương thức và thuộc tính 27

4.3 Nội dung các phương thức 27

4.4 Input và Output 28

4.5 Gọi các phương thức trong hàm main 29

4.6 Kết quả 29

4.7 File code 29

Trang 5

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Trang 6

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Trang 7

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

CHƯƠNG 1: XÂY DỰNG LỚP NGÀY THÁNG NĂM 8

1.1 8

1.2 13

CHƯƠNG 2: XÂY DỰNG LỚP PHÂN SỐ 14

2.1 14

2.2 20

CHƯƠNG 3: XÂY DỰNG LỚP SỐ PHỨC 21

3.1 21

3.2 25

CHƯƠNG 4: XÂY DỰNG LỚP GIỜ PHÚT GIÂY 26

4.1 26

4.2 29

Trang 8

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

NỘI DUNG BÀI LÀM

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

• Thuộc tính: iNgay, iThang, iNam

• Phương thức: Nhap(), Xuat(), NgayThangNamTiepTheo()

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ứctrong hàm main()

1.1 Class Diagram:

- Chọn diagram của lớp Ngaythangnam

Hình 1.1: Diagram của lớp Ngaythangnam.

Trang 9

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

1.2 Khai báo các phương thức và thuộc tính:

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

Bảng 1.1: Thuộc tính và phương thức của lớp Ngaythangnam.

1.3 Nội dung các phương thức:

- Phương thức nhập của Ngaythangnam:

void Ngaythangnam::Nhap() {

cout << "Ngay: "; cin >> ingay;

cout << "Thang: "; cin >> ithang;

cout << "Nam: "; cin >> inam;

}

Bảng 1.2: Phương thức nhập của Ngaythangnam.

- Phương thức xuất của Ngaythangnam:

Trang 10

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

- Phương thức kiểm tra của Ngaythangnam:

else if (ithang == 4 || ithang == 6 || ithang == 9 || ithang == 11) {

if (ingay <= 0 || ingay > 30) return false;

}

else if (ithang == 2) {

if (inam % 4 == 0 && inam%100 != 0) {

if (ingay <= 0 || ingay > 29) return false;

Trang 11

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

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

ithang = 3;

}else ingay++;

}

else {

if (ingay == 28) {ingay = 1;

ithang = 3;

}else ingay++;

}

}

Trang 12

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

}

Bảng 1.5: Phương thức ngày tháng năm tiếp theo của Ngaythangnam.

1.4 Input và Output

- Input: Ngày tháng năm đã nhập

- Output: Ngày tháng năm được cộng thêm một ngày

- Hướng xử lý của ngày tháng năm tiếp theo:

+ Đối với các tháng 1, 3, 5, 7, 8, 10:

 Nếu ngày nhập vào là 31 thì tháng cộng thêm 1 và ngày trở thành 1

 Nếu ngày nhập vào là các ngày khác ( lớn hơn 0 và bé hơn 31 ) thì chỉmỗi ngày được cộng thêm 1

+ Đối với các tháng 4, 6, 9, 11:

 Nếu ngày nhập vào là 30 thì tháng cộng thêm 1 và ngày trở thành 1

 Nếu ngày nhâp vào là các ngày khác ( lớn hơn 0 và bé hơn 30 ) thì chỉmỗi ngày cộng thêm 1

+ Đối với tháng 2:

 Nếu là năm nhuận:

 Nếu ngày nhập vào là 29 thì tháng cộng thêm 1 và ngày trở thành1

 Nếu ngày nhâp vào là các ngày khác ( lớn hơn 0 và bé hơn 29 ) thìchỉ mỗi ngày cộng thêm 1

 Nếu là năm không nhuận:

 Nếu ngày nhập vào là 28 thì tháng cộng thêm 1 và ngày trở thành1

 Nếu ngày nhâp vào là các ngày khác ( lớn hơn 0 và bé hơn 28 ) thìchỉ mỗi ngày cộng thêm 1

1.5 Gọi các phương thức trong hàm main:

- Gọi các phương thức trong hàm main:

Trang 13

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

1.6 Kết quả:

Hình 1.2: Kết quả của chương trình

Trang 14

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

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()

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ứctrong hàm main()

2.1 Class Diagram:

- Chọn diagram của lớp PhanSo:

Hình 2.1: Diagram của lớp Ngaythangnam.

Trang 15

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

2.2 Khai báo các phương thức và thuộc tính:

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

float iTu, iMau;

PhanSo Tong(PhanSo& a);

PhanSo Hieu(PhanSo& a);

PhanSo Tich(PhanSo& a);

PhanSo Thuong(PhanSo& a);

void SoSanh(PhanSo a);

float gettu();

bool KT();

};

Bảng 2.1: Thuộc tính và phương thức của lớp PhanSo.

2.3 Nội dung các phương thức:

- Phương thức nhập của PhanSo:

void PhanSo::Nhap() {

cout << "Nhap phan so: " << endl; cin >> iTu >> iMau;

}

Bảng 2.2: Phương thức nhập của PhanSo.

- Phương thức xuất của PhanSo:

Trang 16

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

int gcd1(int a, int b)

Bảng 2.4: Phương thức rút gọn của PhanSo.

- Phương thức tổng của PhanSo:

PhanSo PhanSo::Tong(PhanSo& a) {

PhanSo sum;

sum.iTu = iTu * a.iMau + iMau * a.iTu;

sum.iMau = iMau * a.iMau;

return sum;

}

Bảng 2.5: Phương thức tổng của PhanSo.

- Phương thức hiệu của PhanSo:

PhanSo PhanSo::Hieu(PhanSo& a) {

PhanSo diff;

diff.iTu = iTu * a.iMau - iMau * a.iTu;

diff.iMau = iMau * a.iMau;

return diff;

}

Bảng 2.6: Phương thức hiệu của PhanSo.

- Phương thức tích của PhanSo:

PhanSo PhanSo::Tich(PhanSo& a) {

PhanSo pro;

pro.iTu = this->iTu * a.iTu;

pro.iMau = this->iMau * a.iMau;

return pro;

}

Bảng 2.7: Phương thức tích của PhanSo.

- Phương thức lấy tử của PhanSo:

Trang 17

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

float PhanSo::gettu() {

return this->iTu;

}

Bảng 2.8: Phương thức lấy tử của PhanSo.

- Phương thức thương của PhanSo:

PhanSo PhanSo::Thuong(PhanSo& a) {

PhanSo res;

res.iTu = this->iTu * a.iMau;

res.iMau = this->iMau * a.iTu;

return res;

}

Bảng 2.9: Phương thức thương của PhanSo.

- Phương thức so sánh của PhanSo:

Trang 18

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

2.4 Input và Output

- Input: Phân số đã nhập

- Output:

 Phân số đã rút gọn

 Tổng của hai phân số

 Hiệu của hai phân số

 Tích của hai phân số

 Thương của hai phân số

 Tổng của hai phân số:

 Tử: Lấy tử của phân số 1 nhân với mẫu của phân số 2 cộng vớimẫu của phân số 2 nhân với mẫu của phân số 1

 Mẫu: Lấy mẫu phân số 1 nhân với mẫu của phân số 2

 Hiệu của hai phân số:

 Tử: Lấy tử của phân số 1 nhân với mẫu của phân số 2 cộng vớimẫu của phân số 2 nhân với mẫu của phân số 1

 Mẫu: Lấy mẫu phân số 1 nhân với mẫu của phân số 2

 Tích của hai phân số:

 Tử: Lấy tử phân số 1 nhân với tử của phân số 2

 Mẫu: Lấy mẫu phân số 1 nhân với mẫu phân số 2

 Thương của hai phân số:

 Tử: Lấy tử của phân số 1 nhân với mẫu của phân số 2

 Mẫu: Lấy mẫu của phân số 2 nhân với tử của phân số 1

 So sánh hai phân số:

Tính ra số thập phân của cả 2 số rồi so sánh 2 đáp án

Trang 19

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

2.5 Gọi các phương thức trong hàm main:

- Gọi các phương thức trong hàm main:

cout << "Tong cua hai phan so la: ";

PhanSo tong = p1.Tong(p2);

tong.RutGon();

tong.Xuat();

cout << "Hieu cua hai phan so la: ";

PhanSo hieu = p1.Hieu(p2);

hieu.RutGon();

hieu.Xuat();

cout << "Tich cua hai phan so la: ";

PhanSo tich = p1.Tich(p2);

tich.RutGon();

tich.Xuat();

if (p2.gettu() == 0) cout << "Ket qua khong hop le" << endl;

else {

cout << "Thuong cua hai phan so la: ";

PhanSo thuong = p1.Thuong(p2);

Trang 20

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

2.6 Kết quả

Hình 2.2: Kết quả của chương trình

Trang 21

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Bài tập 3: Xây dựng lớp số phức bao gồm:

• Thuộc tính: iThuc, iAo

• Phương thức: Nhap(), Xuat(), Tong(), Hieu(), Tich(), Thuong()

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ứctrong hàm main()

3.1 Class Diagram:

- Chọn diagram của lớp SoPhuc:

Hình 3.1: Diagram của lớp SoPhuc.

Trang 22

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

3.2 Khai báo các phương thức và thuộc tính:

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

SoPhuc Tong(SoPhuc& a);

SoPhuc Hieu(SoPhuc& a);

SoPhuc Tich(SoPhuc& a);

SoPhuc Thuong(SoPhuc& a);

};

Bảng 3.1: Thuộc tính và phương thức của lớp SoPhuc.

3.3 Nội dung các phương thức:

- Phương thức nhập của SoPhuc:

void SoPhuc::Nhap() {

cout << "Nhap so phuc: ";

cin >> iThuc >> iAo;

}

Bảng 3.2: Phương thức nhập của SoPhuc.

- Phương thức xuất của SoPhuc:

Trang 23

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

- Phương thức tổng của SoPhuc:

SoPhuc SoPhuc::Tong(SoPhuc& a) {

SoPhuc b;

b.iThuc = iThuc + a.iThuc;

b.iAo = iAo + a.iAo;

return b;

}

Bảng 3.4: Phương thức tổng của SoPhuc.

- Phương thức hiệu của SoPhuc:

SoPhuc SoPhuc::Hieu(SoPhuc& a) {

SoPhuc c;

c.iThuc = iThuc - a.iThuc;

c.iAo = iAo - a.iAo;

return c;

}

Bảng 3.5: Phương thức hiệu của SoPhuc.

- Phương thức tích của SoPhuc:

SoPhuc SoPhuc::Tich(SoPhuc& a) {

SoPhuc b;

b.iThuc = iThuc * a.iThuc - iAo * a.iAo;

b.iAo = iThuc * a.iAo + iAo * a.iThuc;

return b;

}

Bảng 3.6: Phương thức tích của SoPhuc.

- Phương thức thương của SoPhuc:

SoPhuc SoPhuc::Thuong(SoPhuc& a) {

SoPhuc b;

b.iThuc = (iThuc*a.iThuc + iAo*a.iAo)/(a.iThuc*a.iThuc + a.iAo*a.iAo);b.iAo = (iAo * a.iThuc - iThuc * a.iAo) / (a.iThuc * a.iThuc + a.iAo * a.iAo);return b;

}

Bảng 3.7: Phương thức thương của SoPhuc.

3.4 Input và Output

Trang 24

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

 Phần ảo: Lấy phần thực của số phức thứ 1 nhân với phần ảo của

số phức thứ 2, cộng phần ảo của số phức thứ 1 nhân với phần thực

số phức thứ 2

 Thương hai số phức:

 Phần thực:

3.5 Gọi các phương thức trong hàm main:

- Gọi các phương thức trong hàm main:

Trang 25

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

int main() {

SoPhuc a, b;

a.Nhap();

b.Nhap();

cout << "Tong cua hai so phuc la: ";

SoPhuc tong = a.Tong(b);

tong.Xuat();

cout << "Hieu cua hai so phuc la: ";

SoPhuc hieu = a.Hieu(b);

hieu.Xuat();

cout << "Tich cua hai so phuc la: ";

SoPhuc tich = a.Tich(b);

tich.Xuat();

cout << "Thuong cua hai so phuc la: ";

SoPhuc thuong = a.Thuong(b);

thuong.Xuat();

}

Bảng 3.8: Phương thức trong hàm main.

3.6 Kết quả

Hình 1.2: Kết quả của chương trình

Bài tập 4: Xây dựng lớp giờ phút giây:

Trang 26

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

• Thuộc tính: iGio, iPhut, iGiay

• Phương thức: Nhap(), Xuat(), TinhCongThemMotGiay()

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ứctrong hàm main()

4.1 Class Diagram:

Chọn diagram của lớp GioPhutGiay:

Hình 4.1: Diagram của lớp GioPhutGiay.

4.2 Khai báo các phương thức và thuộc tính:

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

Trang 27

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Bảng 4.1: Thuộc tính và phương thức của lớp GioPhutGiay.

4.3 Nội dung các phương thức:

- Phương thức nhập của GioPhutGiay:

void GioPhutGiay::Nhap() {

cout << "Nhap thoi gian: "; cin >> iGio >> iPhut >> iGiay;

}

Bảng 4.2: Phương thức nhập của GioPhutGiay.

- Phương thức xuất của GioPhutGiay:

void GioPhutGiay::Xuat() {

cout << iGio << ":" << iPhut << ":" << iGiay << endl; }

Bảng 4.3: Phương thức xuất của GioPhutGiay.

- Phương thức kiểm tra của GioPhutGiay:

Bảng 4.4: Phương thức kiểm tra của GioPhutGiay.

- Phương thức tính cộng thêm một giây của GioPhutGiay:

void GioPhutGiay::TinhCongThemMotGiay() {

Trang 28

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

}else iGio++;

- Hướng xử lý của ngày tháng năm tiếp theo:

 Nếu giờ đã nhập là 23 và phút là 59, giây là 59 thì sẽ xuất ra giờ mớibằng 0, phút bằng 0 và giây bằng 0

 Nếu phút đã nhập là 59, và giây là 59 thì giờ sẽ cộng 1, phút bằng 0 vàgiây bằng 0

 Nếu giây bằng 59 thì phút cộng 1

4.5 Gọi các phương thức trong hàm main:

- Gọi các phương thức trong hàm main:

Trang 29

IT002 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Hình 4.2: Kết quả của chương trình

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