
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 1
PHẦN II. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Chương10.Kháiniệmvềlậptrìnhhướng đốitượng
Chương11.Lớpvà đốitượngcủalớp
Chương12.Chồnghàm(functionoverloading)
Chương13.Hàmtạovàhàmhủy
Chương14.Chồngtoántử(operatoroverloading)
Chương15.Sựkếthừa
Chương16.Sựkếtnốiđộng-Hàm ảo
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 2
Chương 10. Khái niệm về lập trình hướng đối tượng
I.Lậptrìnhcấutrúcvàlậptrìnhhướng đốitượng
II.Cáckháiniệmcơbảntronglậptrìnhhướng đốitượng
III.Cácngônngữlậptrìnhhướng đốitượng
IV.Phântíchvàthiếtkếtheohướng đốitượng
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 3
I. Lập trình cấu trúc và lập trình hướng đối tượng
1.Lậptrìnhcấutrúc
2.Lậptrìnhhướng đốitượng
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 4
1. Lập trình cấu trúc
†Tưtưởngchínhcủalậptrìnhcấutrúc
(structural programming) là chia chương
trìnhthànhcácchươngtrìnhcon(trongC++
gọilàhàm)vàcácmodule.Mỗihàmthực
hiệnmộtnhiệmvụxác địnhnào đó,cònmỗi
modulebaogồmmộtsốhàm.
†Khicácchươngtrìnhngàycànglớnvàphức
tạpthìlậptrìnhcấutrúcbắtđầubộclộnhững
điểmyếu.Vàchodùcácchươngtrìnhlớn
nàycó đượccài đặttốtđếnmấythìnóvẫn
quáphứctạp.

Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 5
1. Lập trình cấu trúc (tiếp)
†Môhìnhlậptrìnhcấutrúcnhưsau:
Dữ liệu Dữ liệu Dữ liệu
Hàm Hàm Hàm Hàm
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 6
1. Lập trình cấu trúc (tiếp)
†Lýdochínhlàmchophươngpháplậptrìnhcấutrúc
tựbộclộnhững điểmyếulàdữliệucủachương
trìnhkhông đượccoitrọng.Cácdữliệuquantrọng
củachươngtrình đượclưutrữtrongcácbiếntoàn
cục,nóchophépmọihàmcóthểtruynhập.Màcác
hàmlạiđượcviếtbởinhiềungườilậptrìnhkhác
nhaunênnguycơhỏng,mấtdữliệulàrấtlớn.
†Hơnnữa,vìnhiềuhàmtruynhậpcùngmộtdữliệu
nênkhidữliệuthay đổithìcáchàmnàycũngphải
thay đổitheo.Việctìmcáchàmcầnthay đổiđãkhó
nhưngviệcthay đổicáchàmnàysaocho đúngcòn
khóhơn.
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 7
1. Lập trình cấu trúc (tiếp)
†Lậptrìnhcấutrúcthườngkhóthiếtkế
chươngtrìnhbởivìcácthànhphầnchínhcủa
chươngtrìnhcấutrúc(làhàmvàcấutrúcdữ
liệu)khôngmôphỏng đượcthếgiớithực.Ví
dụ:giảsửtacầnviếtmã để tạogiaodiệnđồ
họavớingườisửdụngnhưmenu,cửasổ,nút
bấm,…Nếulậptrìnhcấutrúcthìcâuhỏiđặt
ralàdùngcấutrúcdữliệunào?Cáchàmcần
làmgì?
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 8
2. Lập trình hướng đối tượng
†Ýtưởngchínhcủalậptrìnhhướng đốitượng(object
orientedprogramming,OOP)làkếthợpcảdữliệu
vàcáchàmthaotáctrêndữliệuđóvàomộtthựcthể
chươngtrìnhgọilà đốitượng.
†Cáchduynhấtđể truynhậpdữliệucủamộtđối
tượnglàthôngquacáchàmcủađốitượng đó(trong
C++,cáchàmcủađốitượng đượcgọilàcáchàm
thànhviên).Nếutamuốnđọcdữliệutrongmộtđối
tượngthìtaphảigọimộthàmthànhviêncủađối
tượng đó.Hàmthànhviênnàysẽđọcdữliệuvàtrả
vềgiátrịchota.Takhôngthểtruynhậptrựctiếpdữ
liệucủađốitượng.

Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 9
2. Lập trình hướng đối tượng (tiếp)
Môhìnhlậptrìnhhướng đốitượng
Dữ liệu
Hàm thành viên
Hàm thành viên
Dữ liệu
Hàm thành viên
Hàm thành viên
Dữ liệu
Hàm thành viên
Hàm thành viên
Đối tượng
Đối tượng
Đối tượng
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 10
2. Lập trình hướng đối tượng (tiếp)
†Tronglậptrìnhhướng đốitượngdữliệuđượcẩnđi
để tránhnhữngthay đổivôtìnhlàmhỏngdữliệu.
Dữliệuvàhàmtác độnglênnó đượcđónggóitrong
mộtthựcthểchươngtrình.
†Nếuchúngtamuốnthay đổidữliệutrongmộtđối
tượngthìchúngtaphảibiếtchínhxáchàmnào
tươngtácvớinó;tứclàcáchàmthànhviêntrong
đốitượng đó.Khôngcóhàmnàocóthểtruynhập
dữliệu. Điềunàygiúp đơngiảnhoáviệcviết,gỡ
rối,vàbảotrìchươngtrình.
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 11
2. Lập trình hướng đối tượng (tiếp)
Môhìnhcôngtykinhdoanh
Dữ liệu phòng
kinh doanh
Trưởng phòng
kinh doanh
Phòng kinh
doanh
Nhân viên phòng
kinh doanh
Dữ liệu phòng
nhân sự
Trưởng phòng
nhân sự
Nhân viên phòng
nhân sự
Dữ liệu phòng
tài vụ
Trưởng phòng tài
vụ
Nhân viên phòng
tài vụ
Phòng nhân sựPhòng tài vụ
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 12
2. Lập trình hướng đối tượng (tiếp)
†Tómlại,lậptrìnhhướng đốitượnglàmột
cáchtổchứcchươngtrình(OOP).Hướng đối
tượnglàphảixemthiếtkếchươngtrìnhnhư
thếnàochứkhông đivàochitiếttừnglệnh.
Cụthểlàcácchươngtrìnhhướng đốitượng
phảiđượctổchứcxungquanhcác đốitượng.

Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 13
2. Lập trình hướng đối tượng (tiếp)
Ngườita đãtổnghợpcác đặctínhcủaLTHDT:
1.Tấtcảđềulà đốitượng.
2.Chươngtrìnhhướng đốitượngcóthểcoilàmộttập
hợpcác đốitượngtươngtácvớinhau
3.Mỗiđốitượngtrongchươngtrìnhcócácdữliệu
độclậpcủamìnhvàchiếmbộnhớriêngcủamình.
4.Mỗiđốitượng đềucódạng đặctrưngcủalớpcác
đốitượng đó.
5.Tấtcảcác đốitượngthuộcvềcùngmộtlớpđềucó
cáchànhvigiốngnhau.
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 14
II. Các khái niệm cơ bản trong lập trình hướng đối tượng
1. Đốitượng(object)
2.Lớp(class)
3.Sựkếthừa(inheritance)
4.Sựsửdụnglại(Reusability)
5.Sựđahìnhvàchồnghàm(polymorphismandoverloading)
6.Chegiấudữliệu
7.Truyềnthôngbáo
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 15
1. Đối tượng (object)
†Nhưta đãbiết, đốitượnglàmộtthànhphầnchương
trìnhchứacảdữliệuvàcáchàmthaotáctrêndữ
liệuđó.
†Tronglậptrìnhhướng đốitượngchúngtakhông đi
tìmcáchchiachươngtrìnhthànhcáchàmmà đitìm
cáchchiachươngtrìnhthànhcác đốitượng.Việc
chiachươngtrìnhthànhcác đốitượnglàmchoviệc
thiếtkếchươngtrìnhtrởnêndễdànghơnvìcác đối
tượngtrongchươngtrìnhrấtgầngũivớicác đối
tượngtrongthựctế.
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 16
1. Đối tượng (tiếp)
Vídụvềmộtsốđốitượngtrongthựctếcóthểtrởthành
đốitượngtrongchươngtrình.
†Các đốitượngvậtlý:
nCácthangmáytrongchươngtrình điềukhiểnthángmáy
nCácmáybaytrongchươngtrình điềuhànhbay
nCácxeôtôtrongchươngtrìnhmôphỏngluồnggiaothông.
†Cácphầntửtrongmôitrườngngườisửdụngmáytính:
nCáccửasổ
nCácmenu
nCác đốitượng đồ họa(nhưhìnhchữnhật,hìnhtròn,hìnhtam
giác,…)
nChuột,bànphím,các ổđĩa,máyin

Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 17
1. Đối tượng (tiếp)
Vídụvềmộtsốđốitượngtrongthựctếcóthểtrởthành
đốitượngtrongchươngtrình.
†Cáccấutrúcdữliệu:
nNgănxếp
nHàng đợi
nDanhsáchliênkết
nCâynhịphân
†Nhânsự:
nNhânviên
nSinhviên
nKháchhàng
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 18
1. Đối tượng (tiếp)
Vídụvềmộtsốđốitượngtrongthựctếcóthểtrở
thành đốitượngtrongchươngtrình.
†Cáctệpdữliệu:
nMộtfilenhânsự
nMộttừđiển
†Cáckiểudữliệucủangườisửdụng:
nThờigian
nCácsốphức
nCác điểmtrongmặtphẳng
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 19
1. Đối tượng (tiếp)
Vídụvềmộtsốđốitượngtrongthựctếcóthểtrở
thành đốitượngtrongchươngtrình.
†Cácthànhphầntrongtròchơi:
nCácviênbitrongtròchơiLine
nCácquâncờtrongtròchơicờtướng,cờvua
n…
Bài giảng LTHDT-Phần 2, Chương 10 GV. Ngô Công Thắng 20
1. Đối tượng (tiếp)
†Mộtcâuhỏiđặtralàkhicác đốitượngthựctế
trởthànhcác đốitượngtrongchươngtrìnhthì
cáigìlàdữliệu,cáigìlàhàmthànhviêncủa
đốitượng?
nCác đốitượngtrongthựctếthườngcótrạngtháivà
khảnăng.Trạngtháilàcáctínhchấtcủađốitượng
màcóthểthay đổi.Khảnănglànhữnggìmà đối
tượngcóthểlàm.
nKhitrởthành đốitượngtrongchươngtrìnhthìdữ
liệusẽlưutrạngtháicòncáchàmthànhviênsẽ
đáp ứngvớicáckhảnăngcủađốitượng.

