Tải bản đầy đủ (.pdf) (24 trang)

Lập trình hướng đối tượng C/C++ - OOP 04 operators

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (493.54 KB, 24 trang )

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);


}}
 ChươngChương trìnhtrình tìmtìm min min cócó gìgì saisai??
template <class T>template <class T>
TT timMintimMin((TT a, a, TT b)b)
{{
return (a < b) ? a : b;return (a < b) ? a : b;
}}
4Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
void main()void main()
{{
intint a, b;a, b;
intint c = c = timMintimMin(a, b);(a, b);
PhanSoPhanSo p1, p2;p1, p2;
PhanSoPhanSo p3 = p3 = timMintimMin(p1, p2);(p1, p2);
}}
KháiKhái niệmniệm cơcơ bảnbản
 HàmHàm toántoán tửtử::

KháiKhái niệmniệm::
 MộtMột hàmhàm trongtrong chươngchương trìnhtrình
 CóCó têntên làlà kýký hiệuhiệu toántoán tửtử
 DùngDùng từtừ khóakhóa “operator” “operator” đểđể phânphân biệtbiệt ((trongtrong C++).C++).
PhanSoPhanSo
operator +operator +
(const (const
PhanSoPhanSo
&p1, const &p1, const
PhanSoPhanSo
&p2);&p2);
PhanSoPhanSo

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

&p1, const &p1, const
PhanSoPhanSo
&p2);&p2);
 ToánToán tửtử thuộcthuộc lớplớp::
 LàLà phươngphương thứcthức củacủa lớplớp
 SốSố lượnglượng thamtham sốsố + 1 = + 1 = ngôingôi toántoán tửtử
PhanSoPhanSo PhanSoPhanSo::operator +::operator +(const (const PhanSoPhanSo &p);&p);
boolbool PhanSoPhanSo::operator >::operator >(const (const PhanSoPhanSo &p);&p);
 CáchCách sửsử dụngdụng 2 2 loạiloại làlà nhưnhư nhaunhau!!!!
6Phươ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
 NhữngNhững toántoán tửtử cócó thểthể địnhđịnh nghĩanghĩa lạilại::
NgôiNgôi NhómNhóm Toán tửToán tử
1 Ngôi (Unary)1 Ngôi (Unary) Tăng giảmTăng giảm ++, ++,
Dấu số họcDấu số học +, +,
LogicLogic !, ~!, ~
Con trỏCon trỏ
*, &*, &
7Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Con trỏCon trỏ
*, &*, &
Ép kiểuÉp kiểu int, float, double, int, float, double, 
2 Ngôi (Binary)2 Ngôi (Binary) SốSố họchọc +, +, , *, /, %, +=, , *, /, %, +=, =, *=, /=, %==, *=, /=, %=
So sánhSo sánh >, <, ==, >=, <=, !=>, <, ==, >=, <=, !=
LogicLogic &&, ||, &, |&&, ||, &, |
Nhập xuấtNhập xuất <<, >><<, >>
GánGán ==
Lấy chỉ số mảngLấy chỉ số mảng [ ][ ]
KháiKhái niệmniệm cơcơ bảnbản
 NhữngNhững toántoán tửtử khôngkhông thểthể địnhđịnh nghĩanghĩa lạilại::

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


KiểuKiểu
trảtrả
vềvề
: :
kếtkết
quảquả
toántoán
tửtử


KiểuKiểu
trảtrả
vềvề
: :
kếtkết
quảquả
toántoán
tửtử

 VíVí dụdụ::

ToánToán tửtử >.>.
 ToánToán tửtử [ ].[ ].
10Phươ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.
11Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy

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 <<:<<:


TrangTrang bịbị toántoán tửtử <<<< chocho lớplớp PhanSoPhanSo
 ToánToán tửtử << << thuộcthuộc vềvề lớplớp nàonào??
 ToánToán tửtử độcđộc lậplập
 ToánToán tửtử độcđộc lậplập truytruy xuấtxuất thànhthành phầnphần củacủa lớplớp??
 HàmHàm Friend.Friend.
15Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
HàmHàm FriendFriend
 HàmHàm Friend:Friend:

HàmHàm cócó thểthể truytruy xuấtxuất thànhthành phầnphần củacủa lớplớp
 CáchCách sửsử dụngdụng::
 KhaiKhai báobáo bênbên trongtrong lớplớp
 DùngDùng từtừ khóakhóa friendfriend đểđể phânphân biệtbiệt ((trongtrong C++).C++).
CàiCài
đặtđặt
bênbên
ngoàingoài
lớplớp


CàiCài
đặtđặt
bênbên
ngoàingoài
lớplớp

class class PhanSoPhanSo
{{
friendfriend ostreamostream& & operator <<operator <<((ostreamostream &&osos, const , const PhanSoPhanSo &p);&p);
};};

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

kiểukiểu
: (float), (: (float), (
intint
).).

ToánToán
tửtử
épép
kiểukiểu
: (float), (: (float), (
intint
).).
 ToánToán tửtử nhậpnhập, , xuấtxuất: >>, <<.: >>, <<.
18Phươ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.2:4.2:
TrangTrang bịbị chocho lớplớp đơnđơn thứcthức 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
bậcbậc
).).


++, ++,

((
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

: >>, <<.: >>, <<.
20Phươ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 cócó nhữngnhững phươngphương thứcthức sausau::
((NhómNhóm tạotạo hủyhủy))
 KhởiKhởi tạotạo mặcmặc địnhđịnh vàovào thờithời điểmđiểm hiệnhiện tạitại
 KhởiKhởi tạotạo từtừ giờgiờ, , phútphút, , giâygiây chocho trướctrước

KhởiKhởi
tạotạo
từtừ
giâygiây
tuyệttuyệt
đốiđối
trongtrong
ngàyngày


KhởiKhởi
tạotạo
từtừ
giâygiây
tuyệttuyệt
đốiđối
trongtrong
ngàyngày

 KhởiKhởi tạotạo từtừ mộtmột đốiđối tượngtượng Time Time kháckhác
((NhómNhóm truytruy xuấtxuất thôngthông tin)tin)

 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ử))

 ToánToán tửtử so so sánhsánh: >, <, ==, >=, <=, !=.: >, <, ==, >=, <=, !=.
 ToánToán tửtử cộngcộng, , trừtrừ: +, : +,
 ToánToán tửtử tăngtăng, , giảmgiảm giâygiây: ++, : ++,
 ToánToán tửtử nhậpnhập xuấtxuất: >>, <<.: >>, <<.
22Phươ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 cócó nhữngnhững phươngphương thứcthức sausau::
((NhómNhóm tạotạo hủyhủy))
 KhởiKhởi tạotạo mặcmặc địnhđịnh vàovào ngàyngày hiệnhiện tạitại
 KhởiKhởi tạotạo từtừ ngàyngày, , thángtháng, , nămnăm chocho trướctrước

KhởiKhởi
tạotạo
từtừ
nămnăm
vàvà
ngàyngày
tuyệttuyệt
đốiđối
trongtrong
nămnăm


KhởiKhởi
tạotạo
từtừ
nămnăm
vàvà
ngàyngày

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ị

ngàyngày
).).

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ị
ngàyngày
).).
 CộngCộng ngàyngày, , cộngcộng thángtháng, , cộngcộng nămnăm
((NhómNhóm toántoán tửtử))
 ToánToán tửtử so so sánhsánh: >, <, ==, >=, <=, !=.: >, <, ==, >=, <=, !=.
 ToánToán tửtử cộngcộng, , trừtrừ: +, : +,
 ToánToán tửtử tăngtăng, , giảmgiảm ngàyngày: ++, : ++,
 ToánToán tửtử nhậpnhập xuấtxuất: >>, <<.: >>, <<.
24Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy

×