HàmHàm
toántoán
tửtử
GV. GV. NguyễnNguyễn Minh Minh HuyHuy
HàmHàm
toántoán
tửtử
1Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NộiNội dungdung
KháiKhái niệmniệm cơcơ bảnbản
Con Con trỏtrỏ this.this.
HàmHàm Friend.Friend.
2Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NộiNội dungdung
KháiKhái niệmniệm cơcơ bảnbản
Con Con trỏtrỏ this.this.
HàmHàm Friend.Friend.
3Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
KháiKhái niệmniệm cơcơ bảnbản
SựSự kháckhác biệtbiệt giữagiữa intint vàvà PhanSoPhanSo??
// // ThaoThao táctác trêntrên kiểukiểu intint
void main()void main()
{{
intint a, b;a, b;
intint c = a + b;c = a + b;
}}
// // ThaoThao táctác trêntrên kiểukiểu PhanSoPhanSo
void void mainmain()()
{{
PhanSoPhanSo p1, p2;p1, p2;
PhansoPhanso p3 = p1.cong(p2);p3 = p1.cong(p2);
operator +operator +
(const (const
PhanSoPhanSo
&p1, const &p1, const
PhanSoPhanSo
&p2);&p2);
CôngCông dụngdụng::
SửSử dụngdụng toántoán tửtử trêntrên kiểukiểu ngườingười dùngdùng địnhđịnh nghĩanghĩa
PhanSoPhanSo p3 = p1 p3 = p1 ++ p2;p2;
ĐịnhĐịnh nghĩanghĩa nhiềunhiều cáchcách thựcthực hiệnhiện toántoán tửtử ((nnạpạp chồngchồng hàmhàm).).
float float opeartoropeartor ++(const (const PhanSoPhanSo &p, float so);&p, float so);
5Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
KháiKhái niệmniệm cơcơ bảnbản
PhânPhân loạiloại hàmhàm toántoán tửtử::
ToánToán tửtử độcđộc lậplập::
KhôngKhông thuộcthuộc lớplớp nàonào
SốSố lượnglượng thamtham sốsố = = ngôingôi toántoán tửtử
PhanSoPhanSo operator +operator +(const (const PhanSoPhanSo &p1, const &p1, const PhanSoPhanSo &p2);&p2);
boolbool
operator >operator >
(const (const
PhanSoPhanSo
&p1, const &p1, const
PhanSoPhanSo
&p2);&p2);
boolbool
operator >operator >
(const (const
PhanSoPhanSo
ToánToán tửtử Ý nghĩaÝ nghĩa
Truy xuất phần tửTruy xuất phần tử
.*.* TruyTruy xuấtxuất con con trỏtrỏ phầnphần tửtử
::::
ToánToán
tửtử
::::
8Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
::::
ToánToán
tửtử
::::
? :? : ToánToán tửtử điềuđiều kiệnkiện
## ChỉChỉ thịthị tiềntiền xửxử lýlý
# ## # ChỉChỉ thịthị tiềntiền xửxử lýlý
KháiKhái niệmniệm cơcơ bảnbản
NhữngNhững hạnhạn chếchế (4 (4 khôngkhông):):
KhôngKhông thểthể tạotạo toántoán tửtử mớimới
KhôngKhông thểthể địnhđịnh nghĩanghĩa lạilại toántoán tửtử trêntrên kiểukiểu cơcơ bảnbản
KhôngKhông thểthể thaythay đổiđổi ngôingôi củacủa toántoán tửtử
KhôngKhông thểthể thaythay đổiđổi độđộ ưuưu tiêntiên củacủa toántoán tửtử
9Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
KháiKhái niệmniệm cơcơ bảnbản
Dr. Guru Dr. Guru khuyênkhuyên::
QuyQuy tắctắc địnhđịnh nghĩanghĩa toántoán tửtử::
TênTên hàmhàm: : operator <operator <têntên toántoán tửtử>>
SốSố lượnglượng thamtham sốsố: : ngôingôi toántoán tửtử
KiểuKiểu thamtham sốsố: : kiểukiểu toántoán hạnghạng
Con Con trỏtrỏ thisthis
XétXét toántoán tửtử +=:+=:
TrangTrang bịbị toántoán tửtử +=+= chocho lớplớp PhanSoPhanSo
ToánToán tửtử += += trảtrả vềvề gìgì??
LàmLàm saosao lấylấy đượcđược đốiđối tượngtượng đangđang gọigọi phươngphương thứcthức??
Con Con trỏtrỏ this.this.
12Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Con Con trỏtrỏ thisthis
Con Con trỏtrỏ this:this:
MộtMột con con trỏtrỏ đặcđặc biệtbiệt trongtrong C++.C++.
GiữGiữ địađịa chỉchỉ củacủa đốiđối tượngtượng đangđang gọigọi phươngphương thứcthức
PhanSoPhanSo& & PhanSoPhanSo::::operator +=operator +=(const (const PhanSoPhanSo &p)&p)
{{
// // CộngCộng phânphân sốsố
return *this;return *this;
}}
VíVí dụdụ::
ToánToán tửtử =.=.
13Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NộiNội dungdung
KháiKhái niệmniệm cơcơ bảnbản
Con Con trỏtrỏ this.this.
HàmHàm Friend.Friend.
14Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
HàmHàm FriendFriend
XétXét toántoán tửtử xuấtxuất <<:<<:
ostreamostream& & operator <<(operator <<(ostreamostream &&osos, const , const PhanSoPhanSo &p)&p)
{{
osos << << p.m_tup.m_tu << “/” << << “/” << p.m_maup.m_mau << << endlendl;;
}}
16Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
TómTóm tắttắt
HàmHàm toántoán tửtử::
HàmHàm cócó têntên làlà toántoán tửtử
DùngDùng địnhđịnh nghĩanghĩa lạilại toántoán tửtử
CóCó 2 2 loạiloại hàmhàm toántoán tửtử::
ToánToán tửtử độcđộc lậplập
ToánToán tửtử thuộcthuộc lớplớp
Con Con trỏtrỏ this:this:
GiữGiữ địađịa chỉchỉ củacủa đốiđối tượngtượng gọigọi phươngphương thứcthức
HàmHàm Friend:Friend:
HàmHàm truytruy xuấtxuất đượcđược thànhthành phầnphần củacủa lớplớp
17Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
BàiBài tậptập
BàiBài tậptập 4.1:4.1:
TrangTrang bịbị chocho lớplớp phânphân sốsố nhữngnhững toántoán tửtử sausau::
ToánToán tửtử sốsố họchọc: +, : +, , *, /, =, +=, , *, /, =, +=, =.=.
ToánToán tửtử so so sánhsánh: >, <, ==, >=, <=, !=.: >, <, ==, >=, <=, !=.
ToánToán tửtử mộtmột ngôingôi: ++, : ++, ((tăngtăng, , giảmgiảm 1 1 đơnđơn vịvị).).
ToánToán
tửtử
épép
++, ++,
((
tăngtăng
, ,
giảmgiảm
bậcbậc
).).
! (! (đạođạo hàmhàm), ~ (), ~ (nguyênnguyên hàmhàm).).
ToánToán tửtử nhậpnhập, , xuấtxuất: >>, <<.: >>, <<.
19Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
BàiBài tậptập
BàiBài tậptập 4.3:4.3:
TrangTrang bịbị chocho lớplớp mảngmảng nhữngnhững toántoán tửtử sausau::
ToánToán tửtử gángán: =.: =.
ToánToán tửtử lấylấy phầnphần tửtử: [ ].: [ ].
ToánToán tửtử épép kiểukiểu: (: (intint *).*).
ToánToán
tửtử
nhậpnhập
, ,
xuấtxuất
: >>, <<.: >>, <<.
ToánToán
tửtử
nhậpnhập
, ,
xuấtxuất
ThôngThông báobáo giờgiờ, , phútphút, , giâygiây
ThôngThông báobáo giâygiây tuyệttuyệt đốiđối trongtrong ngàyngày
21Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
BàiBài tậptập
BàiBài tậptập 4.4:4.4:
XâyXây dựngdựng lớplớp TimeTime ((tiếptiếp theotheo):):
((NhómNhóm xửxử lýlý nghiệpnghiệp vụvụ))
So So sánhsánh thứthứ tựtự vớivới đốiđối tượngtượng Time Time kháckhác
TínhTính khoảngkhoảng cáchcách đếnđến đốiđối tượngtượng Time Time kháckhác ((đơnđơn vịvị giâygiây).).
CộngCộng
giờgiờ
, ,
cộngcộng
phútphút
, ,
cộngcộng
giâygiây
CộngCộng
giờgiờ
, ,
cộngcộng
phútphút
, ,
cộngcộng
giâygiây
((NhómNhóm toántoán tửtử))
tuyệttuyệt
đốiđối
trongtrong
nămnăm
KhởiKhởi tạotạo từtừ mộtmột đốiđối tượngtượng Date Date kháckhác
((NhómNhóm truytruy xuấtxuất thôngthông tin)tin)
ThôngThông báobáo ngàyngày, , thángtháng, , nămnăm
ThôngThông báobáo ngàyngày tuyệttuyệt đốiđối trongtrong nămnăm
ThôngThông báobáo thứthứ trongtrong tuầntuần
ThôngThông báobáo tuầntuần trongtrong nămnăm
23Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
BàiBài tậptập
BàiBài tậptập 4.5:4.5:
XâyXây dựngdựng lớplớp DateDate ((tiếptiếp theotheo):):
((NhómNhóm xửxử lýlý nghiệpnghiệp vụvụ))
KiểmKiểm tratra nămnăm nhuậnnhuận
So So sánhsánh thứthứ tựtự vớivới đốiđối tượngtượng Date Date kháckhác
TínhTính
khoảngkhoảng
cáchcách
đếnđến
đốiđối
tượngtượng
Date Date
kháckhác
((
đơnđơn
vịvị