Bài giảng Lập trình hướng đối tượng - Chương 3: Toán tử - Nguyễn Sơn Tùng

Đại Học Quốc Gia Tp. Hồ Chí Minh  
Trường ĐH Khoa Học Tự Nhiên  
Khoa Công Nghệ Thông Tin  
1
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG  
CHƯƠNG 3  
TOÁN TỬ  
ThS: Phạm Nguyễn Sơn Tùng  
Email: pnstung@fit.hcmus.edu.vn  
Giới thiệu về toán tử (operator)  
Các toán tử minh họa.  
1
2
3
4
Con trỏ this, từ khóa friend.  
Demo bài tập ứng dụng tại lớp.  
Bài tập về nhà.  
5
2
Định nghĩa: Cá c phé p toá n (toá n tử) mà ngô n ngữ lập trì nh cung  
cấp chỉ thực hiện trên những kiểu dữ liệu cơ bản (int, float,  
double...)  
void main()  
{
int a = 3;  
int b = 9;  
cout<<a + b;  
a++;  
cout<<a;  
}
3
Nếu a và b là đối tượng thuộc một lớp nào đó thì khô ng  
thực hiện được phé p cộng như ở trên. Vậy giải quyết ra  
sao?  
void main()  
{
CPhanSo a;  
CPhanSo b(3,4);  
cout<<a + b;  
SAI  
a++;  
cout<<a;  
}
4
Giải pháp 1: Xây dựng phương thức (method)  
CPhanSo Cong(CPhanSo);  
CPhanSo CPhanSo::Cong(CPhanSo b)  
{
CPhanSo c;  
c.TuSo = TuSo*b.MauSo + MauSo*b.TuSo;  
c.MauSo = MauSo*b.MauSo;  
return c;  
}
5
Giải pháp 1: Xây dựng phương thức (method)  
void main()  
{
CPhanSo a;  
CPhanSo b(3,4);  
CPhanSo c = a.Cong(b);  
c.Xuat();  
}
6
Giải pháp 2: Xây dựng toán tử (Operator). Hay còn gọi là nạp  
chồng toàn tử (operator overloading)  
o Loại 1: Toán tử thuộc lớp, là phương thức của lớp.  
o Loại 2: Toán tử độc lập, không thuộc về lớp nào (friend).  
7
Ví dụ: Xây dựng toán tử (Operator)  
CPhanSo operator+(CPhanSo);  
CPhanSo CPhanSo::operator+ (CPhanSo b)  
{
TuSo = TuSo*b.MauSo + MauSo*b.TuSo;  
MauSo = MauSo*b.MauSo;  
return *this;  
}
8
Giải pháp 2: Xây dựng toán tử  
void main()  
{
CPhanSo a;  
CPhanSo b(3,4);  
CPhanSo c = a + b;  
c.Xuat();  
}
9
Định nghĩa: là con trỏ đặc biệt trong C++. Có 2 cách  
làm việc với con trỏ this.  
10  
Từ khóa this: dùng để truy cập thuộc tính phương thức  
của đối tượng.  
void CPhanSo::Nhap()  
{
cout<<"Nhap tu so: ";  
cin>>this->TuSo;  
cout<<"Nhap mau so: ";  
cin>>this->MauSo;  
}
11  
Con trỏ this: giữ địa chỉ của đối tượng đang gọi  
phương thức.  
CPhanSo& CPhanSo::operator+=(const CPhanSo &b)  
{
*this = *this + b;  
return *this;  
}
12  
1. Toán tử một ngôi: sử dụng một đối tượng để thay  
đổi đối tượng đó: operator-, operator+, operator!,  
operator ++ (tăng sau), -- (giảm sau), ++ (tăng  
trước, -- (giảm trước)  
2. Toán tử hai ngôi: thao tác đến 2 đối tượng để tìm  
kết quả mong muốn:  
• operator-(class), +, *, /  
• operator+=(class), -=, *=, /=  
13  
3. Toán tử quan hệ: sử dụng để so sánh các đối tượng  
với nhau: operator>, <, ==, >=, <=, !=  
4. Toán tử gán: dùng để gán đối tượng này cho đối  
tượng kia, tương tự như một copy constructor .  
• operator=  
5. Toán tử gọi hàm: dùng để tạo ra một phương thức  
với nhiều tham số đầu vào khác nhau.  
• operator()  
14  
➢ Toán tử nhập  
friend istream& operator>>(istream& , CPhanSo &);  
➢ Toán tử xuất  
friend ostream& operator<<(ostream& , CPhanSo);  
15  
➢ Toán tử nhập  
istream& operator>>(istream& is, CPhanSo &p)  
{
cout<<"Nhap tu: ";  
is>>p.TuSo;  
cout<<"Nhap mau: ";  
is>>p.MauSo;  
return is;  
}
16  
➢ Từ khóa Friend:  
oCó thể truy xuất thành phần của lớp.  
oĐược khai báo bên trong lớp.  
oĐịnh nghĩa bên ngoài lớp.  
17  
+
|
-
*
!
/
% ^  
&
~
=
<
> +=  
-= *= /= %= ^= &= |=  
<< >> >>= <<= == != <=  
>= && || ++ -- ->* ,  
delete[]  
new[] delete  
-> []  
() new  
18  
Bài 01: Xây dựng lớp CThoiGian thực hiện các toán tử sau:  
oToán tử so sánh: >=, !=  
oToán tử cộng trừ 2 thời gian: +, -  
oToán tử tăng giảm (tăng trước): ++, -- (tăng và giảm một giây)  
19  
Bài 02: Xây dựng lớp CNgay thực hiện các toán tử sau:  
oToán tử so sánh: <, ==  
oToán tử tăng giảm (tăng sau): ++, -- (tăng và giảm một  
ngày)  
oToán tử >> và <<  
20  
Tải về để xem bản đầy đủ
pdf 22 trang myanh 29862 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 3: Toán tử - Nguyễn Sơn Tùng", để 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_3_toan_tu_nguyen.pdf