KháiKhái niệmniệm cơcơ bảnbản vềvề
đốiđối
tượngtượng
GV. GV. NguyễnNguyễn Minh Minh HuyHuy
đốiđối
tượngtượng
1Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NộiNội dungdung
ĐốiĐối tượngtượng vàvà lớplớp
SửSử dụngdụng đốiđối tượngtượng trongtrong C++.C++.
TầmTầm vựcvực
BàiBài tậptập
2Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NộiNội dungdung
ĐốiĐối tượngtượng vàvà lớplớp
SửSử dụngdụng đốiđối tượngtượng trongtrong C++.C++.
TầmTầm vựcvực
BàiBài tậptập
3Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
ĐốiĐối tượngtượng vàvà lớplớp
ĐốiĐối tượngtượng làlà gìgì??
ChươngChương trìnhtrình làlà ““cỗcỗ máymáy” ” phứcphức tạptạp
CấuCấu thànhthành từtừ nhiềunhiều loạiloại “chi “chi tiếttiết”.”.
Chi Chi tiếttiết cơcơ bảnbản: : hàmhàm, , cấucấu trúctrúc
ĐãĐã đủđủ tạotạo rara chươngchương trìnhtrình tốttốt??
4Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Chi tiết mới: Đối tượng!!
ĐốiĐối tượngtượng vàvà lớplớp
ĐặcĐặc trưngtrưng củacủa đốiđối tượngtượng::
BaoBao gồmgồm cảcả dữdữ liệuliệu vàvà xửxử lýlý
ThuộcThuộc tínhtính (attribute): (attribute): dữdữ liệuliệu củacủa đốiđối tượngtượng
PhươngPhương thứcthức (method): (method): xửxử lýlý củacủa đốiđối tượngtượng
NhómNhóm tạotạo hủyhủy
NhómNhóm truytruy xuấtxuất thôngthông tin.tin.
NhómNhóm xửxử lýlý nghiệpnghiệp vụvụ
NhómNhóm toántoán tửtử
5Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
ĐốiĐối tượngtượng vàvà lớplớp
LậpLập trìnhtrình hướnghướng đốiđối tượngtượng cócó gìgì kháckhác biệtbiệt??
HướngHướng thủthủ tụctục (procedural oriented):(procedural oriented):
LấyLấy hànhhành độngđộng làmlàm trungtrung tâmtâm
HàmHàm làlà xươngxương sốngsống
LặtLặt (Rau)(Rau) ƯớpƯớp ((CáCá))
LuộcLuộc
(Rau)(Rau)
KhoKho
((
CáCá
))
Các bước nấu ănCác bước nấu ăn
VerbVerb ObjectObject
LặtLặt RauRau
ƯớpƯớp CáCá
LuộcLuộc
(Rau)(Rau)
KhoKho
((
CáCá
))
NấuNấu ((CơmCơm))
HướngHướng đốiđối tượngtượng (object oriented):(object oriented):
LấyLấy dữdữ liệuliệu làmlàm trungtrung tâmtâm
ĐốiĐối tượngtượng làlà xươngxương sốngsống
Rau.LặtRau.Lặt Cá.ƯớpCá.Ướp
Rau.LuộcRau.Luộc Cá.KhoCá.Kho
Cơm.NấuCơm.Nấu
6Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
NấuNấu CơmCơm
KhoKho CáCá
LuộcLuộc RauRau
Thay đổi
tư duy
lập trình!!
ĐốiĐối tượngtượng vàvà lớplớp
KháiKhái niệmniệm lớplớp::
Person1:Person1:
Name: Peter.Name: Peter.
Age: 25.Age: 25.
Hair Color: Brown.Hair Color: Brown.
Eye Color: Brown.Eye Color: Brown.
Human:Human:
Name.Name.
Tập hợp đối tượng có cùng
thuộc tính và phương thức
7Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Job: Worker.Job: Worker.
Person2:Person2:
Name: Thomas.Name: Thomas.
Age: 50.Age: 50.
Hair Color: White.Hair Color: White.
Eye Color: Blue.Eye Color: Blue.
Job: Teacher.Job: Teacher.
Name.Name.
Age.Age.
Hair Color.Hair Color.
Eye Color.Eye Color.
Job.Job.
Bản mô tả đối tượng
Kiểu của đối tượng
NộiNội dungdung
ĐốiĐối tượngtượng vàvà lớplớp
SửSử dụngdụng đốiđối tượngtượng trongtrong C++.C++.
TầmTầm vựcvực
BàiBài tậptập
8Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
SửSử dụngdụng đốiđối tượngtượng trongtrong C++C++
CáchCách sửsử dụngdụng đốiđối tượngtượng::
TươngTương tựtự nhưnhư biếnbiến cấucấu trúctrúc
CácCác bướcbước sửsử dụngdụng::
KhaiKhai báobáo lớplớp (file .h): (file .h): tạotạo kiểukiểu chocho đốiđối tượngtượng
classclass <<TênTên lớplớp>>
{{
{{
<<KhaiKhai báobáo thuộcthuộc tínhtính>;>;
<<KhaiKhai báobáo phươngphương thứcthức>;>;
};};
CàiCài đặtđặt lớplớp (file .(file .cppcpp): ): càicài đặtđặt phươngphương thứcthức chocho đốiđối tượngtượng
TươngTương tựtự càicài đặtđặt hàmhàm, , kèmkèm têntên lớplớp vàvà toántoán tửtử ::.::.
SửSử dụngdụng đốiđối tượngtượng từtừ lớplớp::
KhaiKhai báobáo đốiđối tượngtượng: : biếnbiến cócó kiểukiểu làlà lớplớp
TruyTruy xuấtxuất thànhthành phầnphần đốiđối tượngtượng: : dùngdùng dấudấu “.” “.” hoặchoặc ““ >”.>”.
9Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
SửSử dụngdụng đốiđối tượngtượng trongtrong C++C++
VíVí dụdụ: so : so sánhsánh đốiđối tượngtượng vàvà cấucấu trúctrúc
// // KhaiKhai báobáo lớplớp, file , file PhanSo.hPhanSo.h
class class PhanSoPhanSo
{{
private:private:
intint m_tuSom_tuSo;;
intint m_mauSom_mauSo;;
// // KhaiKhai báobáo kiểukiểu cấucấu trúctrúc, file , file PhanSo.hPhanSo.h
structstruct PhanSoPhanSo
{{
intint m_tuSom_tuSo;;
intint m_mauSom_mauSo;;
};};
public:public:
PhanSoPhanSo cong(cong(PhanSoPhanSo p);p);
};};
// // CàiCài đặtđặt lớplớp, file PhanSo.cpp, file PhanSo.cpp
PhanSoPhanSo PhanSoPhanSo::cong(::cong(PhanSoPhanSo p)p)
{{
// // CàiCài đặtđặt cộngcộng phânphân sốsố
}}
10Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
// // CàiCài đặtđặt hàmhàm cộngcộng, file PhanSo.cpp, file PhanSo.cpp
PhanSoPhanSo cong(cong(PhanSoPhanSo p1, p1, PhanSoPhanSo p2)p2)
{{
// // CàiCài đặtđặt cộngcộng phânphân sốsố
}}
SửSử dụngdụng đốiđối tượngtượng trongtrong C++C++
VíVí dụdụ: so : so sánhsánh đốiđối tượngtượng vàvà cấucấu trúctrúc
// // SửSử dụngdụng đốiđối tượngtượng, file main.cpp, file main.cpp
void main()void main()
{{
PhanSoPhanSo p1;p1;
PhanSoPhanSo p2;p2;
p1.cong(p2);p1.cong(p2);
// // SửSử dụngdụng cấucấu trúctrúc, file , file main.cppmain.cpp
void void mainmain()()
{{
PhanSoPhanSo p1;p1;
PhanSoPhanSo p2;p2;
cong(p1, p2);cong(p1, p2);
PhanSoPhanSo *p3 = new *p3 = new PhanSoPhanSo;;
p3p3 >cong(p1);>cong(p1);
PhanSoPhanSo *p4 = new *p4 = new PhanSoPhanSo[2];[2];
p[0]p[0] >cong(p[1]);>cong(p[1]);
}}
11Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
PhanSoPhanSo **p3 p3 = new = new PhanSoPhanSo;;
cong(*p3, p1);cong(*p3, p1);
PhanSoPhanSo **p4 p4 = new = new PhanSoPhanSo[2];[2];
cong(p[0], p[1]);cong(p[0], p[1]);
}}
NộiNội dungdung
ĐốiĐối tượngtượng vàvà lớplớp
SửSử dụngdụng đốiđối tượngtượng trongtrong C++.C++.
TầmTầm vựcvực
BàiBài tậptập
12Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
TầmTầm vựcvực
KháiKhái niệmniệm tầmtầm vựcvực::
TầmTầm ảnhảnh hưởnghưởng, , phạmphạm vi vi hoạthoạt độngđộng::
BiếnBiến block block khaikhai báobáo
HàmHàm khôngkhông hạnhạn chếchế
ThànhThành phầnphần củacủa lớplớp cócó thểthể điềuđiều chỉnhchỉnh
TầmTầm
ảnhảnh
hưởnghưởng
càngcàng
hẹphẹp
, ,
truytruy
xuấtxuất
càngcàng
hạnhạn
chếchế
TầmTầm
ảnhảnh
hưởnghưởng
càngcàng
hẹphẹp
, ,
truytruy
xuấtxuất
càngcàng
hạnhạn
chếchế
BảngBảng phânphân loạiloại tầmtầm vựcvực::
13Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
TầmTầm vựcvực Tầm ảnh hưởngTầm ảnh hưởng Phạm vi hoạt độngPhạm vi hoạt động
privateprivate HẹpHẹp Bên trong lớp.Bên trong lớp.
publicpublic RộngRộng Bên trong lẫn bên ngoài lớp.Bên trong lẫn bên ngoài lớp.
protectedprotected VừaVừa BênBên trongtrong lớplớp vàvà lớplớp kếkế thừathừa
TầmTầm vựcvực
Dr. Guru Dr. Guru khuyênkhuyên::
QuyQuy tắctắc hộphộp đenđen::
ThuộcThuộc tínhtính cócó tầmtầm vựcvực privateprivate đểđể hạnhạn chếchế truytruy xuấtxuất
PhươngPhương thứcthức cócó tầmtầm vựcvực publicpublic đểđể cungcung cấpcấp tínhtính năngnăng
class class
PhanSoPhanSo
class class
PhanSoPhanSo
{{
private:private:
intint m_tuSom_tuSo;;
intint m_mauSom_mauSo;;
public:public:
PhanSoPhanSo cong(cong(PhanSoPhanSo p);p);
PhanSoPhanSo rutGonrutGon();();
};};
14Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Dữ liệu
(Thuộc tính)
Tính năng
(Phương thức)
TầmTầm vựcvực
ToánToán tửtử :: (:: (bốnbốn chấmchấm):):
LớpLớp 5A 5A vàvà 5B 5B đềuđều cócó họchọc sinhsinh têntên LêLê PhươngPhương
LàmLàm saosao đểđể phânphân biệtbiệt??
TrườngTrường hợphợp 1: 1: đứngđứng trongtrong lớplớp
TrườngTrường hợphợp 2: 2: đứngđứng ngoàingoài lớplớp
ToánToán
tửtử
::::
Lớp 5A
ToánToán
tửtử
::::
DùngDùng gọigọi têntên thànhthành phầnphần củacủa lớplớp
từtừ bênbên ngoàingoài
<<TênTên lớplớp>::<>::<TênTên thànhthành phầnphần>>
15Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
Lớp 5B
TầmTầm vựcvực
VíVí dụdụ::
class class PhanSoPhanSo
{{
private:private:
intint m_iTuSom_iTuSo;;
intint m_iMauSom_iMauSo;;
public:public:
PhanSoPhanSo PhanSoPhanSo::cong::cong((PhanSoPhanSo p)p)
{{
// // CàiCài đặtđặt bênbên ngoàingoài lớplớp
}}
public:public:
PhanSoPhanSo congcong((PhanSoPhanSo p)p)
{{
// // CàiCài đặtđặt bênbên trongtrong lớplớp
}}
};};
16Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy
TómTóm tắttắt
ĐốiĐối tượngtượng vàvà lớplớp::
ĐốiĐối tượngtượng làlà mộtmột thànhthành tốtố tạotạo nênnên chươngchương trìnhtrình
ĐốiĐối tượngtượng chứachứa dữdữ liệuliệu lẫnlẫn xửxử lýlý
LớpLớp làlà bảnbản mômô tảtả củacủa đốiđối tượngtượng
SửSử
dụngdụng
đốiđối
tượngtượng
::
SửSử
dụngdụng
đốiđối
tượngtượng
::
KhaiKhai báobáo lớplớp bằngbằng từtừ khóakhóa “class”.“class”.
GiốngGiống sửsử dụngdụng cấucấu trúctrúc
TầmTầm vựcvực::
TầmTầm ảnhảnh hưởnghưởng, , phạmphạm vi vi hoạthoạt độngđộng
CóCó 3 3 mứcmức: public, private, protected.: public, private, protected.
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 2.1:2.1:
XâyXây dựngdựng lớplớp phânphân sốsố chocho phépphép thựcthực hiệnhiện cáccác thaothao táctác::
NhậpNhập, , xuấtxuất
LấyLấy tửtử sốsố, , mẫumẫu sốsố
GánGán giágiá trịtrị chocho tửtử sốsố, , mẫumẫu sốsố
NghịchNghịch
đảođảo
, ,
rútrút
gọngọn
NghịchNghịch
đảođảo
, ,
rútrút
gọngọn
CộngCộng, , trừtrừ, , nhânnhân, , chiachia, so , so sánhsánh vớivới phânphân sốsố kháckhác
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 2.2:2.2:
DựaDựa trêntrên lớplớp phânphân sốsố xâyxây dựngdựng trongtrong bàibài tậptập 2.1, 2.1, viếtviết chươngchương trìnhtrình sắpsắp
xếpxếp tăngtăng//giảmgiảm mảngmảng phânphân sốsố
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 2.3:2.3:
XâyXây dựngdựng lớplớp đơnđơn thứcthức chocho phépphép thựcthực hiệnhiện cáccác thaothao táctác::
NhậpNhập, , xuấtxuất
LấyLấy hệhệ sốsố, , sốsố mũmũ
GánGán giágiá trịtrị chocho hệhệ sốsố, , sốsố mũmũ
TínhTính
giágiá
trịtrị
, ,
đạođạo
hàmhàm
, ,
nguyênnguyên
hàmhàm
TínhTính
giágiá
trịtrị
, ,
đạođạo
hàmhàm
, ,
nguyênnguyên
hàmhàm
CộngCộng, , trừtrừ, , nhânnhân, , chiachia, so , so sánhsánh vớivới đơnđơn thứcthức kháckhác cùngcùng bậcbậc
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 2.4:2.4:
ThôngThông tin tin mộtmột họchọc sinhsinh baobao gồmgồm::
HọHọ têntên
ĐiểmĐiểm vănvăn, , toántoán
XâyXây dựngdựng lớplớp họchọc sinhsinh chocho phépphép thựcthực hiệnhiện cáccác thaothao táctác::
NhậpNhập
, ,
xuấtxuất
NhậpNhập
, ,
xuấtxuất
LấyLấy họhọ têntên, , điểmđiểm vănvăn, , toántoán
GánGán giágiá trịtrị chocho họhọ têntên, , điểmđiểm vănvăn, , điểmđiểm toántoán
TínhTính điểmđiểm trungtrung bìnhbình
XếpXếp loạiloại theotheo tiêutiêu chíchí::
GiỏiGiỏi (>= 8.0), (>= 8.0), KháKhá (>= 7.0).(>= 7.0).
TrungTrung bìnhbình (>= 5.0), (>= 5.0), YếuYếu (< 5).(< 5).
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 2.5:2.5:
XâyXây dựngdựng lớplớp mảngmảng sốsố nguyênnguyên chocho phépphép thựcthực hiệnhiện cáccác thaothao táctác sausau::
NhậpNhập, , xuấtxuất mảngmảng
LấyLấy kíchkích thướcthước mảngmảng
LấyLấy phầnphần tửtử tạitại vịvị trítrí nàonào đóđó
GánGán
giágiá
trịtrị
chocho
phầnphần
tửtử
tạitại
vịvị
trítrí
nàonào
đóđó
GánGán
giágiá
trịtrị
chocho
phầnphần
tửtử
tạitại
vịvị
trítrí
nàonào
đóđó
TìmTìm phầnphần tửtử nàonào đóđó trongtrong mảngmảng
SắpSắp xếpxếp tăngtăng, , giảmgiảm
22Phương pháp lập trình hướng đối tượng - Nguyễn Minh Huy