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

Lập trình hướng đối tượng C/C++ - OOP 01 advanced programming techniques

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 (567.49 KB, 23 trang )

KỹKỹ
thuậtthuật
lậplập
trìnhtrình
nângnâng
caocao
GV. GV. NguyễnNguyễn Minh Minh HuyHuy
KỹKỹ
thuậtthuật
lậplập
trìnhtrình
nângnâng
caocao
1Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NộiNội dungdung
 ChuẩnChuẩn vàvà quyquy ướcước lậplập trìnhtrình
 NạpNạp chồngchồng hàmhàm
 Con Con trỏtrỏ hàmhàm
 Function Template.Function Template.
2Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NộiNội dungdung
 ChuẩnChuẩn vàvà quyquy ướcước lậplập trìnhtrình
 NạpNạp chồngchồng hàmhàm
 Con Con trỏtrỏ hàmhàm
 Function Template.Function Template.
3Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Chuẩn và quy ước lập trìnhChuẩn và quy ước lập trình
 Vì sao phải có chuẩn và quy ước?Vì sao phải có chuẩn và quy ước?

Làm việc một mình:Làm việc một mình:
 Tự làm tự hiểu.Tự làm tự hiểu.


 Mình luôn hiểu mình?Mình luôn hiểu mình?
Làm việc nhóm:Làm việc nhóm:
4Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy

Làm việc nhóm:Làm việc nhóm:
 Mỗi người một việc.Mỗi người một việc.
 Ráp nối công việc.Ráp nối công việc.
 Mọi người luôn hiểu nhau?Mọi người luôn hiểu nhau?
Phối hợp công việc hiệu quả
Áp đặt kỷ luật!!
Chuẩn và quy ước lập trìnhChuẩn và quy ước lập trình
 KhôngKhông cócó chuẩnchuẩn chungchung toàntoàn thếthế giớigiới!!!!
 QuyQuy ướcước đặtđặt têntên (Naming Convention):(Naming Convention):

QuyQuy tắctắc vàngvàng: : têntên phảiphải thểthể hiệnhiện ý ý nghĩanghĩa
 x, y, f, x, y, f, g g  khôngkhông rõrõ nghĩanghĩa
 total, rate, create, total, rate, create, run run  rõrõ nghĩanghĩa
5Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
 QuyQuy tắctắc đặtđặt têntên theotheo kiểukiểu ““lạclạc đàđà” (Camel Case)” (Camel Case)
 DùngDùng đểđể viếtviết cáccác từtừ dínhdính liềnliền nhaunhau
 ViếtViết hoahoa chữchữ cáicái đầuđầu mỗimỗi từtừ
 UUpperpperCCamelamelCCasease
 llowerowerCCamelamelCCasease
Chuẩn và quy ước lập trìnhChuẩn và quy ước lập trình
 QuyQuy ướcước viếtviết câucâu lệnhlệnh::

QuyQuy tắctắc vàngvàng: : viếtviết câucâu lệnhlệnh rộngrộng rãirãi, , rõrõ ràngràng
 x=x=a+ba+b c*d; for(c*d; for(intint ii=0;i<=0;i<n;in;i++); ++);  khôngkhông rõrõ ràngràng
 x = a + b x = a + b –– c * d;c * d;
for (for (intint ii = 0; = 0; ii < n; < n; ii++); ++);  rõrõ ràngràng


ViếtViết
mỗimỗi
câucâu
lệnhlệnh
mộtmột
dòngdòng

6Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy

ViếtViết
mỗimỗi
câucâu
lệnhlệnh
mộtmột
dòngdòng

 ViếtViết cáchcách khoảngkhoảng giữagiữa haihai đoạnđoạn lệnhlệnh
 QuyQuy ướcước viếtviết chúchú thíchthích::

QuyQuy tắctắc vàngvàng: : viếtviết chúchú thíchthích đầyđầy đủđủ, , dễdễ hiểuhiểu
 ViếtViết chúchú thíchthích chocho từngtừng hàmhàm
 DùngDùng dấudấu // // thaythay chocho /* */./* */.
NộiNội dungdung
 ChuẩnChuẩn vàvà quyquy ướcước lậplập trìnhtrình
 NạpNạp chồngchồng hàmhàm
 Con Con trỏtrỏ hàmhàm
 Function Template.Function Template.
7Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Nạp chồng hàmNạp chồng hàm

 ChữChữ kýký hàmhàm (Function Signature):(Function Signature):

PhânPhân biệtbiệt giữagiữa cáccác hàmhàm
 ĐặcĐặc trưngtrưng củacủa mộtmột hàmhàm::
 TênTên hàmhàm
 DanhDanh sáchsách thamtham sốsố
doubledouble
sapXepsapXep
((
intint
aMangaMang
[], [],
intint
kichThuockichThuoc
););
8Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
doubledouble
sapXepsapXep
((
intint
aMangaMang
[], [],
intint
kichThuockichThuoc
););
PhanSoPhanSo PhanSoPhanSo::cong::cong((PhanSoPhanSo pp););
 GiáGiá trịtrị trảtrả vềvề khôngkhông thuộcthuộc chữchữ kýký hàmhàm!!!!
Chương trình có thể có
nhiều hàm cùng tên!!
Nạp chồng hàmNạp chồng hàm

 NhữngNhững trườngtrường hợphợp nạpnạp chồngchồng hàmhàm nàonào
khôngkhông hợphợp lệlệ??
1. 1. intint tinhToantinhToan((intint a, a, intint b);b);
2. 2. intint tinhToantinhToan((intint x, x, intint y);y);
9Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
3. 3. intint tinhToantinhToan((intint a, float b);a, float b);
4. float 4. float tinhToantinhToan((intint u, u, intint v);v);
5. 5. intint tinhToantinhToan((intint a, long b);a, long b);
NộiNội dungdung
 ChuẩnChuẩn vàvà quyquy ướcước lậplập trìnhtrình
 NạpNạp chồngchồng hàmhàm
 Con Con trỏtrỏ hàmhàm
 Function Template.Function Template.
10Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Con Con trỏtrỏ hàmhàm
 XétXét hàmhàm xửxử lýlý trêntrên mảngmảng sốsố nguyênnguyên

TínhTính tổngtổng cáccác phầnphần tửtử
 TổngTổng quátquát 1: 1: tínhtính tổngtổng, , hiệuhiệu cáccác phầnphần tửtử
 ThamTham sốsố hóahóa phépphép tínhtính
 TổngTổng quátquát 2: 2: tínhtính toántoán bấtbất kỳkỳ trêntrên cáccác phầnphần tửtử
 ThamTham sốsố hóahóa xửxử lýlý tínhtính toántoán
 Con Con trỏtrỏ hàmhàm
11Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Con Con trỏtrỏ hàmhàm
 CáchCách sửsử dụngdụng con con trỏtrỏ hàmhàm::

TạoTạo kiểukiểu chocho hàmhàm: : từtừ khóakhóa typedeftypedef
typedeftypedef intint (*(*PhepTinhPhepTinh)()(intint, , intint););
 KhaiKhai báobáo thamtham sốsố vớivới kiểukiểu hàmhàm

intint xuLyMangxuLyMang((intint m[ ], m[ ], intint kichThuockichThuoc, , PhepTinhPhepTinh pp))
{{
{{
intint ketQuaketQua = = mangmang[0];[0];
for (for (intint ii = 1; = 1; ii < < kichThuockichThuoc; ; ii++)++)
ketQuaketQua = = p(p(ketQuaketQua, , mangmang[[ii]);]);
return return ketQuaketQua;;
}}
12Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Con Con trỏtrỏ hàmhàm
 CáchCách sửsử dụngdụng con con trỏtrỏ hàmhàm::

TạoTạo hàmhàm cócó cùngcùng chữchữ kýký vớivới kiểukiểu hàmhàm
intint congcong((intint a, a, intint b)b)
{{
return a + b;return a + b;
}}
TruyềnTruyền
têntên
hàmhàm
dướidưới
dạngdạng
thamtham
sốsố


TruyềnTruyền
têntên
hàmhàm
dướidưới

dạngdạng
thamtham
sốsố

void void mainmain()()
{{
intint m[5] = {1, 2, 3, 4, 5};m[5] = {1, 2, 3, 4, 5};
intint ketQuaketQua = = xuLyMangxuLyMang(m, 5, (m, 5, congcong););
}}
13Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Con Con trỏtrỏ hàmhàm
 ĐặcĐặc điểmđiểm củacủa con con trỏtrỏ hàmhàm::

ThamTham sốsố hóahóa xửxử lýlý
 HàmHàm cócó thểthể làmlàm đốiđối sốsố củacủa hàmhàm kháckhác
 HàmHàm cócó xửxử lýlý tổngtổng quátquát tùytùy xửxử lýlý truyềntruyền vàovào
 XửXử lýlý cụcụ thểthể đượcđược quyếtquyết địnhđịnh khikhi gọigọi hàmhàm
14Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
 GhiGhi chúchú::

KhôngKhông nhấtnhất thiếtthiết dùngdùng typedeftypedef tạotạo kiểukiểu dữdữ liệuliệu hàmhàm
intint xuLyMangxuLyMang((intint m[ ], m[ ], intint kichThuockichThuoc, , intint p(p(intint, , intint) ) ))
{{
// // CàiCài đặtđặt
}}
NộiNội dungdung
 ChuẩnChuẩn vàvà quyquy ướcước lậplập trìnhtrình
 NạpNạp chồngchồng hàmhàm
 Con Con trỏtrỏ hàmhàm
 Function Template.Function Template.

15Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Function TemplateFunction Template
 XétXét hàmhàm tìmtìm min min giữagiữa 2 2 sốsố::

TìmTìm min min giữagiữa 2 2 sốsố 3 3 vàvà 5.5.
 TổngTổng quátquát 1: 1: tìmtìm min min giữagiữa 2 2 sốsố nguyênnguyên bấtbất kỳkỳ
 ThamTham sốsố hóahóa giágiá trịtrị truyềntruyền vàovào
 TổngTổng quátquát 2: 2: tìmtìm min min giữagiữa 2 2 sốsố kiểukiểu bấtbất kỳkỳ
16Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
 ThamTham sốsố hóahóa kiểukiểu dữdữ liệuliệu truyềntruyền vàovào
 Function Template.Function Template.
Function TemplateFunction Template
 CáchCách sửsử dụngdụng Function Template:Function Template:
template template <class T><class T>
TT timMintimMin((TT aa, , TT bb))
{{
return (a < b) ? a : b;return (a < b) ? a : b;
}}
void main()void main()
{{
intint x = x = timMintimMin(3, 5);(3, 5);
intint a = a = 4, 4, b = b = 6;6;
intint
c = c =
timMintimMin
(a, b);(a, b);
17Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy
intint
c = c =
timMintimMin

(a, b);(a, b);
float float k k = = timMintimMin(1.5, 2.3);(1.5, 2.3);
PhanSoPhanSo p1;p1;
PhanSoPhanSo p2;p2;
PhanSoPhanSo p3 = p3 = timMintimMin(p1, p2);(p1, p2);
}}
Function TemplateFunction Template
 ĐặcĐặc điểmđiểm củacủa Function Template:Function Template:

ThamTham sốsố hóahóa kiểukiểu dữdữ liệuliệu
 HàmHàm tổngtổng quátquát chocho nhiềunhiều kiểukiểu dữdữ liệuliệu kháckhác nhaunhau
 KiểuKiểu cụcụ thểthể đượcđược quyếtquyết địnhđịnh khikhi gọigọi hàmhàm

GhiGhi
chúchú
::
18Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy

GhiGhi
chúchú
::
 TừTừ khóakhóa “class”“class” cócó thểthể thaythay bằngbằng ““typenametypename””
 PhầnPhần khaikhai báobáo vàvà càicài đặtđặt đềuđều phảiphải khaikhai báobáo template.template.
 PhầnPhần càicài đặtđặt hàmhàm phảiphải nằmnằm cùngcùng file:file:
 PhầnPhần khaikhai báobáo hàmhàm
 PhầnPhần gọigọi sửsử dụngdụng hàmhàm
TómTóm tắttắt
 ChuẩnChuẩn vàvà quyquy ướcước lậplập trìnhtrình::

ThốngThống nhấtnhất cáchcách thứcthức làmlàm việcviệc chocho hiệuhiệu quảquả

 ÁpÁp đặtđặt kỷkỷ luậtluật lênlên việcviệc lậplập trìnhtrình
 QuyQuy tắctắc đặtđặt têntên: : têntên thểthể hiệnhiện ý ý nghĩanghĩa
 QuyQuy tắctắc viếtviết câucâu lệnhlệnh: : rộngrộng rãirãi, , rõrõ ràngràng
 QuyQuy tắctắc viếtviết chúchú thíchthích: : đầyđầy đủđủ, , dễdễ hiểuhiểu
 NạpNạp chồngchồng hàmhàm::

NhiềuNhiều hàmhàm cùngcùng têntên, , kháckhác thamtham sốsố
19Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
TómTóm tắttắt
 Con Con trỏtrỏ hàmhàm::

ThamTham sốsố hóahóa xửxử lýlý
 HàmHàm cócó cáchcách xửxử lýlý tổngtổng quátquát
 Function Template:Function Template:

ThamTham
sốsố
hóahóa
kiểukiểu
dữdữ
liệuliệu


ThamTham
sốsố
hóahóa
kiểukiểu
dữdữ
liệuliệu


 HàmHàm xửxử lýlý tổngtổng quátquát trêntrên nhiềunhiều kiểukiểu kháckhác nhaunhau
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 1.1:1.1:
ViếtViết chươngchương trìnhtrình chocho phépphép thựcthực hiệnhiện cáccác thaothao táctác trêntrên kiểukiểu phânphân sốsố::
 NhậpNhập, , xuấtxuất phânphân sốsố
 RútRút gọngọn phânphân sốsố
 CộngCộng, , trừtrừ, , nhânnhân, , chiachia, so , so sánhsánh haihai phânphân sốsố
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 1.2:1.2:
ViếtViết chươngchương trìnhtrình chocho phépphép sắpsắp xếpxếp tăngtăng//giảmgiảm mảngmảng phânphân sốsố
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 1.3:1.3:
MởMở rôngrông bàibài 1.2, 1.2, chocho phépphép sắpsắp xếpxếp mảngmảng phânphân sốsố//sốsố nguyênnguyên
23Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy

×