Bài giảng Phương pháp lập trình hướng đối tượng – Tuần 4: Toán tử, 3 vấn đề con trỏ” cung cấp cho người học các kiến thức: Toán tử, hàm toán tử, các toán tử có thể viết chồng, toán tử không thuộc lớp, toán tử gán bằng,… Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Tuần 04:
Bài tập
Trang 2Bài 4.3
Đối tượng “mảng số nguyên” có 2 thuộc tính là mảng động chứa các đối tượng Số Nguyên và số phần tử hiện có trong mảng Xây dựng lớp với các phương thức sao cho thực hiện được đoạn code ở slide kế bên
Cho khai báo lớp MangSoNguyen như sau:
Class MangSoNguyen {
private:
int *GiaTri;
int SoPhanTu;
};
Trang 3void main()
{
MangSoNguyen m1; // NULL, 0 phan tu MangSoNguyen m2(7); // 7 phan tu, gia tri 0 int a[100];
int n=2; a[0] = 2; a[1] = 5;
MangSoNguyen m3(a,n);
MangSoNguyen m4(m2);
MangSoNguyen m5;
m5=m2;
m1.Nhap();
m1.Xuat();
cin>>m2;
cout<<m2;
cout<<m2.LayPhanTuTai(7); // a[7]; m3.CapNhatPhanTuTai(7,8); // a[7]=8;
m3.ThemPhanTu(7,8); // a[7]=8;
m2.XoaPhanTu(100); // Xoa a[100]
cout<<m4.TimLonNhat();
cout<<m1.TimNguyenToLonNhat();
m2.SapTang();
m4.SapChanTang();
cout<<m3.TongLe();
}
Trang 4Bài tập 4.4
(Nhóm tạo hủy)
Khởi tạo mặc định vào thời điểm 0:0:0
Khởi tạo từ giờ, phút, giây cho trước
Khởi tạo từ giây tuyệt đối trong ngày
Khởi tạo từ một đối tượng Time khác
(Nhóm truy xuất thông tin)
Thông báo giờ, phút, giây
Thông báo giây tuyệt đối trong ngày
Trang 55
Bài 4.4 (tt)
(Nhóm xử lý nghiệp vụ)
So sánh thứ tự với một thời điểm khác
Tính khoảng cách đến thời điểm khác (đơn vị giây) Cộng giờ, phút, giây
(Nhóm toán tử)
Toán tử so sánh: >, <, ==, >=, <=, !=
Toán tử nhập xuất: >>, <<
Trang 6Bài 4.5
Hãy cho biết đoạn
chương trình trên
có những lỗi gì khi
biên dịch? Giải
thích
Đề xuất cách sửa
lỗi (không sửa hàm
main)
Giả sử đã sửa hết
lỗi, cho biết màn
hình sẽ xuất ra
những gì khi thực
thi đoạn lệnh
trong hàm main
class A
{
private:
int mI;
public:
A(int i){
mI = i;
cout<<”tao A”;
}
~A(){cout<<”huy A”;}
};
void main() {
A a;
cout<<“gia tri: ”<<a.mI<<endl;
}
Trang 7Khai báo các lớp và phương thức cần thiết để thực thi đoạn chương trình sau
void main ()
{
TamGiac a(2, 3, 4, 5, 6, 7);
a.Xuat();
float dt = a.DienTich();
cout<<“dt tam giac: ”<<dt<<endl;
Diem O = a.TrongTam();
cout<<“trong tam: ”<<O<<endl;
Diem D;
cout<<“Nhap diem D”;
D.Nhap();
float f = D.KhoangCach(O);
cout<<“Khoang cach tu diem ”<<O<<“toi diem
”<<D<<“la: ”<<f<<endl;
}
Bài 4.6
Trang 8Bài 4.7
Hãy khai báo lớp phân số và viết các hàm cần thiết sao cho có thể đếm được số lượng phân
số được tạo ra
void main ()
{
PhanSo a;
PhanSo b(2, 1);
int n = PhanSo::SoLuongPhanSoHienTai();
cout<<n;
}
Trang 9Bài 4.8
Viết lớp MangPhanSo cho phép quản lý 1 mảng các phân số, sử dụng vector và cho phép thực hiện các thao tác sau:
Thêm, xóa, cập nhật phân số tại một vị trí bất kì Nhập, xuất mảng phân số
void main ()
{
MangPhanSo a;
a.Nhap();
PhanSo b(1, 2);
a.ThemPhanSo(b);
a.XoaPSTheoViTri(2); a.Xuat();
}
Trang 10Bài 4.9
Một trang trại nọ chuyên chăn nuôi gà
Mỗi con gà có độ tuổi (tháng), cân nặng (kg) và giới tính
Cứ ăn 1kg thức ăn thì gà sẽ tăng 0.1 kg
Gà mái có độ tuổi trên 3 tháng thì sẽ có khả năng đẻ trứng và mỗi ngày
đẻ 1 trứng
Gà mới nở sẽ có cân nặng là 0.1kg, giới tính ngẫu nhiên
void main ()
{
ConGa a;
for(int i =0;i<3;i++){
a.ChoAn(10); //cho an 10 kg thuc an
}
}
Trang 11Bài 4.9 (tt)
Khai báo lớp NongTrai quản lý một đàn gà (sử dụng vector) cho phép thực hiện đoạn code
sau, biết
Mỗi ngày nông trại cho 1 con gà ăn 0.05kg thức ăn
void main ()
{
NongTrai a;
ConGa b(3, 2.5, 0); //gà mái 3 tháng tuổi nặng 2.5kg a.Them(b);
float kl = a.TongKhoiLuongGa();
trong 1 ngày
}