Bài giảng Lập trình hướng đối tượng - Chương 8: Toán tử so sánh - Nguyễn Sơn Hoàng Quốc

Khoa CNTT  
LTHĐT  
Chương 8  
TOÁN TỬ SO SÁNH  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 1  
Khoa CNTT  
LTHĐT  
0. MỤC TIÊU  
. Hiểu được phương thức toán tử so  
sánh là gì?  
. Cài đặt toán tử so sánh cho các lớp  
đối tượng.  
GV. Nguyễn Sơn Hoàng Quốc  
Chương 08 - 2  
ThS. Nguyễn Tấn Trần Minh Khang  
Khoa CNTT  
LTHĐT  
1. KHÁI NIỆM  
Toán tử so sánh trong ngôn ngữ lập  
trình C được sử dụng để so sánh giá  
trị của biến này với giá trị của biến  
khác.  
Mở rộng cho phương pháp lập trình  
hướng đối tượng với C++ ta thể nói  
toán tử so sánh được sử dụng để so  
sánh đối tượng này với đối tượng  
khác.  
Hiển nhiên việc so sánh hai đối tượng  
phải được thực hiện theo một tiêu chí  
nào đó.  
GV. Nguyễn Sơn Hoàng Quốc  
Chương 08 - 3  
ThS. Nguyễn Tấn Trần Minh Khang  
Khoa CNTT  
LTHĐT  
2. CÁC TOÁN TỬ  
SO SÁNH CƠ BẢN  
Toán tử so sánh lớn hơn (operator >)  
Toán tử so sánh nhỏ hơn (operator <)  
Toán tử so sánh lớn hơn bằng (operator>=)  
Toán tử so sánh nhỏ hơn bằng (operator<=)  
Toán tử so sánh bằng (operator ==)  
Toán tử so sánh khác (operator !=)  
GV. Nguyễn Sơn Hoàng Quốc  
Chương 08 - 4  
ThS. Nguyễn Tấn Trần Minh Khang  
Khoa CNTT  
LTHĐT  
3. ĐẶT VẤN ĐỀ  
Hãy định nghĩa các phương thức  
cần thiết cho lớp đối tượng  
CHocSinh để các câu lệnh sau  
có thể thực thi được.  
Đoạn chương trình  
1. CHocSinh a,b;  
2. cin>>a>>b;  
3. if (a>b)  
4.  
cout<<“DTB a lon hon DTB b”;  
5. else  
6.  
cout<<“DTB a ko lon hon b”;  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 5  
Khoa CNTT  
LTHĐT  
4. GIẢI QUYẾT VẤN ĐỀ  
Đoạn chương trình  
1. CHocSinh a,b;  
2. cin>>a>>b;  
3. if (a>b)  
4.  
cout<<“DTB a lon hon DTB b”;  
5. else  
6.  
cout<<“DTB a ko lon hon b”;  
Để giải quyết vấn đề trên ta phải khai  
báo và định nghĩa phương thức toán  
tử so sánh lớn hơn cho lớp đối tương  
CPhanSo.  
GV. Nguyễn Sơn Hoàng Quốc  
Chương 08 - 6  
ThS. Nguyễn Tấn Trần Minh Khang  
Khoa CNTT  
LTHĐT  
4. GIẢI QUYẾT VẤN ĐỀ  
Khai báo lớp  
11.class CHocSinh  
12.{  
13. private:  
14.  
15.  
16.  
17.  
char hoten[31];  
int toan;  
int van;  
float dtb;  
18. public:  
19.  
20.  
21.  
22.  
23.  
int operator>(CHocSinh);  
int operator<(CHocSinh);  
int operator>=(CHocSinh);  
int operator =(CHocSinh);  
int operator==(CHocSinh);  
int operator!=(CHocSinh);  
24.  
25.};  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 7  
Khoa CNTT  
LTHĐT  
4. GIẢI QUYẾT VẤN ĐỀ  
Định nghĩa các phương thức  
11.int CHocSinh::operator >  
(CHocSinh x)  
12.{  
13.  
if(dtb>x.dtb)  
return 1;  
14.  
15.  
return 0;  
16.}  
17.int CHocSinh::operator <  
(CHocSinh x)  
18.{  
19.  
if(dtb<x.dtb)  
return 1;  
20.  
21.  
return 0;  
22.}  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 8  
Khoa CNTT  
LTHĐT  
4. GIẢI QUYẾT VẤN ĐỀ  
Định nghĩa các phương thức  
11.int CHocSinh::operator >=  
(CHocSinh x)  
12.{  
13.  
if(dtb>=x.dtb)  
return 1;  
14.  
15.  
return 0;  
16.}  
17.int CHocSinh::operator <=  
(CHocSinh x)  
18.{  
19.  
if(dtb<=x.dtb)  
return 1;  
20.  
21.  
return 0;  
22.}  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 9  
Khoa CNTT  
LTHĐT  
4. GIẢI QUYẾT VẤN ĐỀ  
Định nghĩa các phương thức  
11.int CHocSinh::operator ==  
(CHocSinh x)  
12.{  
13.  
if(dtb==x.dtb)  
return 1;  
14.  
15.  
return 0;  
16.}  
17.int CHocSinh::operator !=  
(CHocSinh x)  
18.{  
19.  
if(dtb!=x.dtb)  
return 1;  
20.  
21.  
return 0;  
22.}  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 10  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
Bài toán: Hãy định nghĩa các toán tử so  
sánh cho lớp đối tượng CPhanSo  
11.class CPhanSo  
12.{  
13. private:  
14.  
int tu;  
15.  
int mau;  
16. public:  
17.  
CPhanSo operator-(CPhanSo);  
18.  
int operator > (CPhanSo);  
int operator < (CPhanSo);  
int operator >= (CPhanSo);  
int operator <= (CPhanSo);  
int operator == (CPhanSo);  
int operator != (CPhanSo);  
19.  
20.  
21.  
22.  
23.  
24.};  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 11  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
1. CPhanSo CPhanSo::operator-  
(CPhanSo x)  
2. {  
3.  
CPhanSo temp;  
4.  
temp.tu=tu*x.mau-mau*x.tu;  
temp.mau=mau*x.mau;  
return temp;  
5.  
6.  
7. }  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 12  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
Định nghĩa các toán tử so sánh  
1. int CPhanSo::operator>  
(CPhanSo x)  
2. {  
3.  
CPhanSo temp = *this – x;  
if(temp.tu*temp.mau>0)  
return 1;  
4.  
5.  
6.  
else  
7.  
return 0;  
8. }  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 13  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
Định nghĩa các toán tử so sánh  
1. int CPhanSo::operator<  
(CPhanSo x)  
2. {  
3.  
CPhanSo temp = *this – x;  
if(temp.tu*temp.mau<0)  
return 1;  
4.  
5.  
6.  
else  
7.  
return 0;  
8. }  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 14  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
Định nghĩa các toán tử so sánh  
1. int CPhanSo::operator<=  
(CPhanSo x)  
2. {  
3.  
CPhanSo temp = *this – x;  
if(temp.tu*temp.mau<=0)  
return 1;  
4.  
5.  
6.  
else  
7.  
return 0;  
8. }  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 15  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
Định nghĩa các toán tử so sánh  
1. int CPhanSo::operator>=  
(CPhanSo x)  
2. {  
3.  
CPhanSo temp = *this – x;  
if(temp.tu*temp.mau>=0)  
return 1;  
4.  
5.  
6.  
else  
7.  
return 0;  
8. }  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 16  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
Định nghĩa các toán tử so sánh  
1. int CPhanSo::operator==  
(CPhanSo x)  
2. {  
3.  
CPhanSo temp = *this – x;  
if(temp.tu*temp.mau==0)  
return 1;  
4.  
5.  
6.  
else  
7.  
return 0;  
8. }  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 17  
Khoa CNTT  
LTHĐT  
5. ỨNG DỤNG  
Định nghĩa các toán tử so sánh  
1. int CPhanSo::operator!=  
(CPhanSo x)  
2. {  
3.  
CPhanSo temp = *this – x;  
if(temp.tu*temp.mau!=0)  
return 1;  
4.  
5.  
6.  
else  
7.  
return 0;  
8. }  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 18  
Khoa CNTT  
LTHĐT  
6. BÀI TẬP  
Bài 01: Hãy định nghĩa tất cả các  
phương thức toán tử so sánh  
cho lớp đối tượng CPhanSo.  
Bài 02: Hãy định nghĩa tất cả các  
phương thức toán tử so sánh  
cho lớp đối tượng CHonSo.  
Bài 03: Hãy định nghĩa tất cả các  
phương thức toán tử so sánh  
cho lớp đối tượng CDiem trong  
mặt phẳng Oxy. Biết rằng tiêu  
chuẩn so sánh 2 điểm là so  
sánh theo khoảng cách tới gốc  
toạ độ. Điểm nào ở xa gốc hơn  
thì lớn hơn.  
GV. Nguyễn Sơn Hoàng Quốc  
Chương 08 - 19  
ThS. Nguyễn Tấn Trần Minh Khang  
Khoa CNTT  
LTHĐT  
6. BÀI TẬP  
Bài 04: Hãy định nghĩa toán tử  
so sánh bằng và toán tử so sánh  
khác cho tất cả các đối tượng  
sau:  
1. Lớp điểm (CDiem)  
2. Lớp ngày (CNgay)  
3. Lớp thời gian (CThoiGian)  
4. Lớp đơn thức (CDonThuc)  
5. Lớp điểm không gian  
(CDiemKhongGian)  
6. Lớp đường thẳng (CDuongThang)  
7. Lớp số phức (CSoPhuc)  
8. Lớp đường tròn (CDuongTron)  
9. Lớp lớp tam giác (CTamGiac)  
10. Lớp hình cầu (CHinhCau)  
GV. Nguyễn Sơn Hoàng Quốc  
ThS. Nguyễn Tấn Trần Minh Khang  
Chương 08 - 20  
pdf 20 trang myanh 27140 Free
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 8: Toán tử so sánh - Nguyễn Sơn Hoàng Quốc", để 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:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_8_toan_tu_so_sanh.pdf