Hướng dẫn thực hành Phương pháp lập trình hướng đối tượng - Tuần 2

Hướng dẫn thực hành PP LT hướng đối tượng  
Nội dung tuần 02  
Luyện tập cách xây dựng các hàm toán tử cho lớp đối tượng.  
Hướng dẫn  
Hiểu về bản chất toán tử cũng là hàm với ví dụ sau:  
class SoPhuc  
{
private:  
int thuc, ao;  
public:  
SoPhuc();  
SoPhuc(int t, int a);  
SoPhuc operator+(const int&);  
friend ostream& operator<<(ostream&, const SoPhuc&);  
};  
SoPhuc::SoPhuc()  
{
thuc = ao = 0;  
}
SoPhuc::SoPhuc(int t, int a)  
{
thuc = t;  
ao = a;  
}
SoPhuc SoPhuc::operator+(const int& n)  
{
SoPhuc rt = *this;  
rt.thuc += n;  
return rt;  
}
ostream& operator<<(ostream& os, const SoPhuc& sp)  
{
os << sp.thuc << " + " << sp.ao << "*i";  
return os;  
}
void main()  
{
SoPhuc sp1(3, 5);  
SoPhuc sp2 = sp1.operator+(10);  
SoPhuc sp3 = sp1 + 10;  
SoPhuc sp4 = 10 + sp1;  
cout << sp2 << endl << sp3 << endl << sp4 << endl;  
}
Chú ý dòng được tô vàng sẽ bị báo lỗi (giải thích???).  
BM CNPM  
Page 1  
Hướng dẫn thực hành PP LT hướng đối tượng  
Hiểu về ý nghĩa cài đặt hàm toán tử trong hay ngoài lớp đối tượng với ví dụ sau:  
class SoPhuc  
{
private:  
int thuc, ao;  
public:  
SoPhuc();  
SoPhuc(int t, int a);  
SoPhuc operator+(const int&);  
friend SoPhuc operator+(const int&, const SoPhuc&);  
friend ostream& operator<<(ostream&, const SoPhuc&);  
};  
SoPhuc::SoPhuc()  
{
thuc = ao = 0;  
}
SoPhuc::SoPhuc(int t, int a)  
{
thuc = t;  
ao = a;  
}
SoPhuc SoPhuc::operator+(const int& n)  
{
SoPhuc rt = *this;  
rt.thuc += n;  
return rt;  
}
SoPhuc operator+(const int& n, const SoPhuc& sp)  
{
SoPhuc rt;  
rt.thuc = n + sp.thuc;  
rt.ao = sp.ao;  
return rt;  
}
ostream& operator<<(ostream& os, const SoPhuc& sp)  
{
os << sp.thuc << " + " << sp.ao << "*i";  
return os;  
}
void main()  
{
SoPhuc sp1(3, 5);  
SoPhuc sp2 = sp1.operator+(10);  
SoPhuc sp3 = sp1 + 10;  
SoPhuc sp4 = 10 + sp1;  
cout << sp2 << endl << sp3 << endl << sp4 << endl;  
}
BM CNPM  
Page 2  
Hướng dẫn thực hành PP LT hướng đối tượng  
Tìm hiểu sự khác biệt gì trong ví dụ sau:  
class SoPhuc  
{
private:  
int thuc, ao;  
public:  
SoPhuc();  
SoPhuc(int t, int a);  
SoPhuc(const int&);  
SoPhuc operator+(const SoPhuc&);  
friend ostream& operator<<(ostream&, const SoPhuc&);  
};  
SoPhuc::SoPhuc()  
{
thuc = ao = 0;  
}
SoPhuc::SoPhuc(int t, int a)  
{
thuc = t;  
ao = a;  
}
SoPhuc::SoPhuc(const int& n)  
{
thuc = n;  
ao = 0;  
}
SoPhuc SoPhuc::operator+(const SoPhuc& sp)  
{
SoPhuc rt = *this;  
rt.thuc += sp.thuc;  
rt.ao += sp.ao;  
return rt;  
}
ostream& operator<<(ostream& os, const SoPhuc& sp)  
{
os << sp.thuc << " + " << sp.ao << "*i";  
return os;  
}
void main()  
{
SoPhuc sp1(3, 5);  
SoPhuc sp2 = sp1.operator+(10);  
SoPhuc sp3 = sp1 + 10;  
cout << sp2 << endl << sp3 << endl;  
}
Chú ý là không có cài đặt toán tử + SoPhuc với int nhưng hàm main vẫn chạy bình thường.  
BM CNPM  
Page 3  
Hướng dẫn thực hành PP LT hướng đối tượng  
Bài tập  
Bài 1  
Khai báo và cài đặt lớp Ngày sao cho hàm main sau chạy đúng  
void main()  
{
Ngay n1;  
//1/1/1  
Ngay n2(02,10,2014);  
Ngay n3(-10,16,2000);  
Ngay n4(1000);  
//2/10/2014  
//10/04/2001  
//27/9/3  
Ngay n5 = n2 + n3;  
Ngay n6 = n1 + 5000;  
Ngay n7 = 1234 + n4;  
Ngay n8 = 190 + n6 + n7;  
Ngay n9 = n8 - n6;  
Ngay n10 = 12000 - n9;  
if (n10 > n6)  
//12/2/4016  
//10/10/15  
//14/2/7  
//2/7/23  
//1/9/7  
//9/2/26  
{
n10 = n2 - 1000 + n6;  
}
cout << n1 << endl << n2 << endl << n3 << endl << n4 << endl;  
cout << n5 << endl << n6 << endl << n7 << endl << n8 << endl;  
cout << n9 << endl << n10 << endl;  
}
Bài 2  
Khai báo và cài đặt lớp Thời Gian để chạy đúng với hàm main sau:  
void main()  
{
ThoiGian tg1;  
//00:00:00  
//00:20:12  
//02:05:45  
//16:00:18  
//02:25:57  
//01:43:32  
//14:16:46  
//00:00:00  
ThoiGian tg2(1212);  
ThoiGian tg3(125,45);  
ThoiGian tg4(12,239,-78);  
ThoiGian tg5 = tg2 + tg3;  
ThoiGian tg6 = 5000 + tg2;  
ThoiGian tg7 = tg4 - tg6;  
ThoiGian tg8 = 12300 - tg4;  
ThoiGian tg9, tg10;  
if (tg8 <= tg3)  
{
tg9 = tg1 + tg2 + 36000;  
}
if (12345 <= tg5)  
{
tg10 = tg5 + 12345;  
}
//10:20:12  
//05:51:42  
cout << tg1 << endl << tg2 << endl << tg3 << endl << tg4 << endl;  
cout << tg5 << endl << tg6 << endl << tg7 << endl << tg8 << endl;  
cout << tg9 << endl << tg10 << endl;  
}
BM CNPM  
Page 4  
pdf 4 trang myanh 21320 Free
Bạn đang xem tài liệu "Hướng dẫn thực hành Phương pháp lập trình hướng đối tượng - Tuần 2", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfhuong_dan_thuc_hanh_phuong_phap_lap_trinh_huong_doi_tuong_tu.pdf