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 đủ
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:
bai_giang_lap_trinh_huong_doi_tuong_chuong_3_toan_tu_nguyen.pdf

