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

Lập trình hướng đối tượng C/C++ - OOP 02 basic concepts of object

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 (1.05 MB, 22 trang )

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

×