Bài giảng Phương pháp lập trình hướng đối tượng - Chương 4: Hàm toán tử - Nguyễn Minh Huy
Hàm toán tꢀ
GV. Nguyꢀn Minh Huy
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
1
Nꢆi dung
ꢀ Khái niꢇm cơ bꢈn.
ꢀ Các toán tꢉ đꢊc biꢇt.
ꢀ Hàm Friend.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
2
Nꢆi dung
ꢀ Khái niꢁm cơ bꢂn.
ꢀ Các toán tꢉ đꢊc biꢇt.
ꢀ Hàm Friend.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
3
Khái niꢇm cơ bꢈn
ꢀ Sꢋ khác biꢇt giꢌa int và PhanSo?
// Thao tác trên kiꢀu PhanSo
// Thao tác trên kiꢀu int
void main()
{
void main()
{
PhanSo p1, p2;
Phanso p3 = p1.cong(p2);
int a, b;
int c = a + b;
}
}
ꢀ Chương trình tìm min có gì sai?
template <class T>
void main()
{
T timMin(T a, T b)
{
int a, b;
return (a < b) ? a : b;
int c = timMin(a, b);
}
PhanSo p1, p2;
PhanSo p3 = timMin(p1, p2);
}
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
4
Khái niꢇm cơ bꢈn
ꢀ Hàm toán tꢉ:
ꢀ Khái niꢇm:
ꢁ Mꢆt hàm trong chương trình.
ꢁ Có tên là ký hiꢇu toán tꢉ.
ꢁ Khai báo: tꢍ khóa operator <toán tꢀ>.
PhanSo operator +(const PhanSo &p1, const PhanSo &p2);
ꢀ Công dꢎng:
ꢁ Sꢉ dꢎng toán tꢉ trên kiꢏu ngưꢐi dùng đꢑnh nghĩa.
PhanSo p3 = p1 + p2;
ꢁ Đꢑnh nghĩa nhiꢒu cách thꢋc hiꢇn toán tꢉ (nꢓp chꢔng hàm).
float opeartor +(const PhanSo &p, float so);
float x = p1 + 3.14;
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
5
Khái niꢇm cơ bꢈn
ꢀ Phân loꢓi hàm toán tꢉ:
ꢀ Toán tꢉ đꢆc lꢁp:
PhanSo operator +(const PhanSo &p1, const PhanSo &p2);
ꢁ Không thuꢆc lꢂp nào.
ꢁ Sꢃ lưꢄng tham sꢃ = ngôi toán tꢉ.
ꢀ Toán tꢉ thuꢆc lꢂp:
PhanSo PhanSo::operator +(const PhanSo &p);
ꢁ Là phương thꢕc cꢖa lꢂp.
ꢁ Sꢃ lưꢄng tham sꢃ = ngôi toán tꢉ ꢅ 1.
ꢀ Cách sꢀ dꢃng 2 loꢄi là như nhau!!
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
6
Khái niꢇm cơ bꢈn
ꢀ Nhꢌng toán tꢉ có thꢏ đꢑnh nghĩa lꢓi:
Ngôi
Nhóm
Tăng giꢈm
Dꢗu sꢃ hꢘc
Logic
Toán tꢀ
1 Ngôi (Unary)
++, ꢅꢅ
+, ꢅ
!, ~
Con trꢙ
*, &
Ép kiꢏu
int, float, double, ꢚ
2 Ngôi (Binary) Sꢃ hꢘc
+, ꢅ, *, /, %, +=, ꢅ=, *=, /=, %=
So sánh
Logic
>, <, ==, >=, <=, !=
&&, ||, &, |
<<, >>
=
Nhꢁp xuꢗt
Gán
Lꢗy chꢛ sꢃ mꢈng [ ]
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
7
Khái niꢇm cơ bꢈn
ꢀ Nhꢌng toán tꢉ không thꢏ đꢑnh nghĩa lꢓi:
Toán tꢀ
Ý nghĩa
Truy xuꢗt phꢜn tꢉ
.
.*
Truy xuꢗt con trꢙ phꢜn tꢉ
? :
#
Toán tꢉ điꢒu kiꢇn
Chꢛ thꢑ tiꢒn xꢉ lý
Chꢛ thꢑ tiꢒn xꢉ lý
# #
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
8
Khái niꢇm cơ bꢈn
ꢀ Nhꢌng hꢓn chꢝ (4 không):
ꢀ Không thꢏ tꢓo toán tꢉ mꢂi.
ꢀ Không thꢏ đꢑnh nghĩa lꢓi toán tꢉ trên kiꢏu cơ bꢈn.
ꢀ Không thꢏ thay đꢞi ngôi cꢖa toán tꢉ.
ꢀ Không thꢏ thay đꢞi đꢆ ưu tiên cꢖa toán tꢉ.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
9
Khái niꢇm cơ bꢈn
ꢀ Dr. Guru khuyên:
ꢀ Quy tꢟc đꢑnh nghĩa toán tꢉ:
ꢁ Tên hàm: operator <tên toán tꢀ>.
ꢁ Sꢃ lưꢄng tham sꢃ: ngôi toán tꢀ.
ꢁ Kiꢏu tham sꢃ: kiꢅu toán hꢄng.
ꢁ Kiꢏu trꢈ vꢒ: kꢆt quꢂ toán tꢀ.
ꢀ Ví dꢎ:
ꢀ Toán tꢉ > (lꢂp PhanSo).
ꢀ Toán tꢉ [ ] (lꢂp Mang).
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
10
Nꢆi dung
ꢀ Khái niꢇm cơ bꢈn.
ꢀ Các toán tꢀ đꢇc biꢁt.
ꢀ Hàm Friend.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
11
Các toán tꢉ đꢊc biꢇt
ꢀ Toán tꢉ gán (=, +=, ꢅ=, *=, /=, ꢚ):
ꢀ Trang bꢑ toán tꢉ += cho lꢂp PhanSo.
ꢀ Toán tꢉ += mꢗy ngôi?
ꢀ Toán tꢉ += trꢈ vꢒ gì?
PhanSo& PhanSo::operator +=( const PhanSo &p );
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
12
Các toán tꢉ đꢊc biꢇt
ꢀ Toán tăng giꢈm (++, ꢅꢅ):
ꢀ Trang bꢑ toán tꢉ ++ cho lꢂp PhanSo.
ꢀ Toán tꢉ ++ mꢗy ngôi?
ꢀ Toán tꢉ ++ trꢈ vꢒ gì?
ꢀ Phân biꢇt tiꢒn tꢃ, hꢁu tꢃ?
PhanSo& PhanSo::operator ++( );
// Tiꢒn tꢃ.
// Hꢁu tꢃ, dùng tham sꢃ giꢈ.
PhanSo& PhanSo::operator ++( int x );
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
13
Nꢆi dung
ꢀ Khái niꢇm cơ bꢈn.
ꢀ Các toán tꢉ đꢊc biꢇt.
ꢀ Hàm Friend.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
14
Hàm Friend
ꢀ Xét toán tꢉ +:
ꢀ Trang bꢑ toán tꢉ + cho lꢂp PhanSo.
ꢀ Dùng toán tꢉ đꢆc lꢁp.
PhanSo operator + ( const PhanSo &p1, const PhanSo &p2 );
ꢀ Làm sao truy xuꢗt thành phꢜn private cꢖa lꢂp?
ꢀ Xét toán tꢉ xuꢗt <<:
ꢀ Trang bꢑ toán tꢉ << cho lꢂp PhanSo.
PhanSo p( 1, 3 );
cout << p;
ꢀ Toán tꢉ << thuꢆc vꢒ lꢂp nào?
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
15
Hàm Friend
ꢀ Hàm Friend:
ꢀ Hàm có thꢏ truy xuꢗt thành phꢜn private cꢖa lꢂp.
ꢀ Cách sꢉ dꢎng:
ꢁ Khai báo trong lꢂp: tꢍ khóa friend <chꢈ ký hàm>.
ꢁ Cài đꢊt ngoài lꢂp: không có friend.
class PhanSo
{
friend ostream& operator <<(ostream &os, const PhanSo &p);
};
ostream& operator <<(ostream &os, const PhanSo &p)
{
os << p.m_tu << “/” << p.m_mau << endl;
return os;
}
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
16
Tóm tꢟt
ꢀ Hàm toán tꢉ:
ꢀ Hàm có tên là ký hiꢇu toán tꢉ.
ꢀ Dùng đꢏ trang bꢑ toán tꢉ cho kiꢏu tꢋ đꢑnh nghĩa.
ꢀ Có 2 loꢓi hàm toán tꢉ:
ꢁ Toán tꢉ đꢆc lꢁp.
ꢁ Toán tꢉ thuꢆc lꢂp.
ꢀ Các toán tꢉ đꢊc biꢇt:
ꢀ =, +=, ꢅ=, ++, ꢅꢅ.
ꢀ Hàm Friend:
ꢀ Hàm truy xuꢗt đưꢄc thành phꢜn cꢖa lꢂp.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
17
Bài tꢁp
ꢀ Bài tꢁp 4.1:
Trang bꢑ cho lꢂp phân sꢉ nhꢌng toán tꢉ sau:
ꢀ Toán tꢉ sꢃ hꢘc: +, *.
ꢀ Toán tꢉ so sánh: >, <, ==, >=, <=, !=.
ꢀ Toán tꢉ gán: =, +=, *=.
ꢀ Toán tꢉ ép kiꢏu: (float), (int).
ꢀ Toán tꢉ nhꢁp, xuꢗt: >>, <<.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
18
Bài tꢁp
ꢀ Bài tꢁp 4.2:
Trang bꢑ cho lꢂp đơn thꢊc nhꢌng toán tꢉ sau:
ꢀ Toán tꢉ sꢃ hꢘc: + (cùng bꢁc), *.
ꢀ Toán tꢉ so sánh: >, <, ==, >=, <=, !=.
ꢀ Toán tꢉ gán: =, += (cùng bꢁc), *=.
ꢁ ++, ꢅꢅ (tăng, giꢈm bꢁc).
ꢁ ! (đꢓo hàm).
ꢀ Toán tꢉ nhꢁp, xuꢗt: >>, <<.
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
19
Bài tꢁp
ꢀ Bài tꢁp 4.3:
Trang bꢑ cho lꢂp mꢂng (phꢜn kiꢏu bꢗt kỳ) nhꢌng toán tꢉ sau:
ꢀ Toán tꢉ gán: =.
ꢀ Toán tꢉ truy xuꢗt phꢜn tꢉ: [ ].
ꢀ Toán tꢉ ép kiꢏu: (T *) (ép vꢒ con trꢙ kiꢏu T).
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ GV. Nguyꢀn Minh Huy
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 Phương pháp lập trình hướng đối tượng - Chương 4: Hàm toán tử - Nguyễn Minh Huy", để 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_phuong_phap_lap_trinh_huong_doi_tuong_chuong_4_ham.pdf

