• Liên quanñến những thứ ñối tượng làm.• Tácñộng lên dữliệu củañối tượng... –ðược bảo vệprotected : chỉtruy xuấtñược từ– Tận dụng lại các thuộc tính chung.. – Tận dụng lại các thao tác t
Trang 1L Ậ P TRÌNH H ƯỚ NG ðỐ I T ƯỢ NG
Ch ươ ng 1
lttlan.tdu@gmail.com http://lttlan-tdu.blogspot.com
– T ư duy theo l ố i tu ầ n t ự , ñơ n gi ả n.
– ðơ n lu ồ ng và các công vi ệ c ñượ c th ự c hi ệ n tu ầ n
– Gi ả i thu ậ t: m ộ t quy trình ñể th ự c hi ệ n m ộ t công
vi ệ c xác ñị nh
Trang 2L ậ p
L ậ p trình trình thông thông th th ườ ườ ng ng ((tt tt))
• L ậ p trình c ấ u trúc (tt)
– Phân chia ch ươ ng trình chính thành các ch ươ ng
trình con cho phù h ợ p v ớ i yêu c ầ u, ch ứ c n ă ng và
• ñối tượng là mộtthc th(entity) cụthểmà thông
thường ta có thểs ờ , nhìn th ấ yhay c ả m nh ậ nñược
Trang 3• Liên quanñến những thứ ñối tượng làm.
• Tácñộng lên dữliệu củañối tượng
Trang 4chung cho các ñố i t ượ ng có cùng lo ạ i.
VD: L ớ p XeDap là thi ế t k ế chung cho các ñố i
t ượ ng xe mini, xe ñ òn, xe ñầ m, xe ñ ua, xe leo
• L ớ p ñượ c t ạ o ra khi biên d ị ch
• ðố i t ượ ng t ạ o ra khi th ự c thi ch ươ ng trình.
ðố i t ượ ng là m ộ t th ể hi ệ n (instance) c ủ a 1 l ớ p
Trang 5M ộ t s ố khái ni ệ m c ơ b ả n (tt)
M ộ t s ố khái ni ệ m c ơ b ả n (tt)
• Truy ề n thông báo
– Thông báo (message): là 1 l ờ i yêu c ầ u 1 ho ạ t
• Chi tiết thực hiện (giá trịcác tham số)
– Truy ề n thông báo: kích ho ạ t hàm cùng tên trên 1 ñố i t ượ ng ñể yêu c ầ u thông tin.
Trang 6L ậ p
L ậ p trình trình h h ướ ướ ng ng ñố ñố i i t t ượ ượ ng ng (OOP) (OOP)
Thuộ ộc tính c tính + Hàm = Đố ối t i tượ ượng ng
Các thể hiện, đặc tính,
trạng thái của đối
tượng
Các hoạt động, thao tác của đối tượng
Mục tiêu chính
Phân tích bài toán thành nhi ề u ñố i t ượ ng.
Quan tâm ñế n d ữ li ệ u h ơ n th ủ t ụ c.
D ữ li ệ u ñượ c b ả o v ệ (che gi ấ u) và không th ể truy
xu ấ t t ừ bên ngoài ñố i t ượ ng.
Dữliệu và thủtụcñược
xửlý chặc chẽvới nhau
Quan tâmñếnmối liên
h giữa thủtục và dữliệu
ðố i t ượ ng 1
ðố i t ượ ng 1
DữliệuHàm
DữliệuHàm
Mục tiêu là tăng cườngkhảnăngsửdụng lại
22
L ậ p
L ậ p trình trình h h ướ ướ ng ng ñố ñố i i t t ượ ượ ng ng ((tt tt))
• S ự tr ừ u t ượ ng hóa (abstraction)
L ậ p
L ậ p trình trình h h ướ ướ ng ng ñố ñố i i t t ượ ượ ng ng ((tt tt))
• S ự tr ừ u t ượ ng hóa (abstraction)
– Là b ướ c ti ế n hóa ti ế p theo t ừ l ậ p trình c ấ u trúc – Ch ỉ quan tâm ñế n nh ữ ng ñặ c ñ i ể m c ầ n thi ế t (ph ớ t l ờ ñ i nh ữ ng chi ti ế t) tùy vào ng ữ c ả nh:
VD: Phân tích thông tin của 1 người:
- Trong ngữcảnh làm việc trong trường
- Trong ngữcảnh học tại trường? NhanVien
–Mã nhân viên
–Họvà tên
Trang 8–ðược bảo vệ(protected) : chỉtruy xuấtñược từ
– Tận dụng lại các thuộc tính chung
– Tận dụng lại các thao tác tương tự
• Thiết kếlớp gọn nhẹ, ñơn giản hơn
Các ñặ ñặ c c ñ ñ i i ể ể m m c c ủ ủ a a OOP OOP
• Tính th ừ a k ế (tt)
– Chú ý: tránh thi ế t k ế sai v ề m ặ t ý ngh ĩ a
VD: L ớ p XeH ơ i th ừ a k ế t ừ l ớ p BánhXe là SAI.
– L ớ p con ph ả i chính là l ớ p cha, ngoài ra còn – L ớ p con ph ả i chính là l ớ p cha, ngoài ra còn
ph ả i có thêm nh ữ ng ñặ c tr ư ng riêng c ủ a nó:
• Thêm hàm hoặc thêm thuộc tính
• Táiñịnh nghĩa hàm của lớp cha, ñổi kiểu thuộctính
• Dùng hàmảo
Trang 9Con Con ng ng ườ ườ i i
ph ầ n mà l ớ p cha cho phép ( public + protected ).
thành ph ầ n trùng tên trong l ớ p cha
• Khi truy xuất thành phần trùng tênñó sẽtruy xuất
thành phần của lớp con
thành phần của lớp con
• Muốn truy xuất thành phần của lớp cha, phải chỉ
rõ
– Trong C++: <Tên lớp cha> :: ::<Tên hàm>
– Trong Java: super <Tên hàm>
Trang 10– K ể tên trong l ớ p cha m ộ t ứ ng x ử chung (hàm
ả o – virtual, abstract) cho t ậ p h ợ p các l ớ p con.
– Khi nh ậ n yêu c ầ u, tùy vào ñố i t ượ ng thu ộ c
l ớ p nào s ẽ có ứ ng x ử riêng (th ự c thi hàm
2 “Kêu”: cho t ậ p h ợ p các con v ậ t (chó, mèo, gà,
2 “Kêu”: cho t ậ p h ợ p các con v ậ t (chó, mèo, gà,
• Không nhất thiết phải cầ ñịnh nghĩaở lớp cha
• Ph ả iñượcñịnh nghĩa lạitrong lớp con
– L ớ p ả o:
– L ớ p ả o:
• Chỉdùng khai báo các hàmảo bên trong
• Khôngñược dùngñểtạo rañối tượng
Trang 11• Hàm trùng tên
• Khác tham số(sốlượng, thứtự, kiểu)
42
UML UML U U nified M odeling LL anguage
Trang 12Gi ớ i thi thi ệ ệ u u UML UML
– Tạm dịch là ngôn ngữmô hìnhhóa thống nhấ
– Ra ñời vào năm 1997 và hiện nay ñangñược sửdụng rất
phổbiến
– Bao gồm một hệthống cácký hi ệ u ñồ h ọ a, bi ể u ñồ (s ơ
ñồ )thống nhất dùng ñểthiết kếcác hệthống thông tin
ñồ )thống nhất dùng ñểthiết kếcác hệthống thông tin (IS) theo hướngñối tượng
– ðược sửdụng cho cácgiaiñ ạn phân tích, thiết kế, triểnkhaivàkiểm thửphần mềm
– Các CaseTool(Rational Rose, System Architect, Argo UML, Visual Paradigm for UML, Umbrello…) hỗtrợUML trong việc phát sinh chương trình tự ñộng cho các ngôn
– Class Diagram (bi ể u ñồ l ớ p)
– Class Diagram (bi ể u ñồ l ớ p)
– Sequence Diagram (bi ể u ñồ trình t ự )
– Collaboration Diagram (bi ể u ñồ c ộ ng tác)
– State Diagram (bi ể u ñồ tr ạ ng thái)
– Component Diagram (bi ể u ñồ thành ph ầ n)
S ơ
S ơ ñồ ñồ l l ớ ớ p p (Class Diagram) (Class Diagram)
• L ớ p
Trang 14• Mô hình hóa vi ệ c bán vé t ạ i r ạ p chi ế u phim theo
góc nhìn c ủ a ng ườ i mua vé / ng ườ i qu ả n lý
• Ti ệ m t ạ p hóa: Ch ủ ti ệ m c ầ n qu ả n lý vi ệ c mua
bán hàng hóa (vi ế t, t ậ p) trong c ử a hàng ñể bi ế t
bán hàng hóa (vi ế t, t ậ p) trong c ử a hàng ñể bi ế t
– Hàng nào mua vào giá bao nhiêu?
– Hàng nào bán ra và giá bao nhiêu?
Áp dụng kỹ thuật lập trình hướngñối tượng và tính
thừa kếcủa nóñểdựng khungñối tượng cho người
phụ trách mua bánñiền thông tin vào và sửdụng
Bài Bài t t ậ ậ p p v v ề ề nhà
• Ch ọ n các ñố i t ượ ng ngoài th ự c t ế có liên quan v ớ i nhau ñể xây d ự ng khung (thu ộ c tính, ph ươ ng th ứ c) các ñố i t ượ ng v ớ i ñầ y ñủ
các ñặ c ñ i ể m:
– Tính th ừ a k ế – Ả o hóa.
– ð a hình.
• Cho 3 ví d ụ c ụ th ể cho t ừ ng ñố i t ượ ng
• H ạ n n ộ p: 12:00 PM 06/10/2009 (mail ho ặ c
Trang 15Bài n n ộ ộ p p
• Mail:
– Subject: C++ Bai 1 <ma sinh sien>
– <ma sinh vien> <Tên sinh viên>
Trang 16L Ậ P TRÌNH H ƯỚ NG ðỐ I T ƯỢ NG
Ch ươ ng 1
lttlan.tdu@gmail.com http://lttlan-tdu.blogspot.com
– T ư duy theo l ố i tu ầ n t ự , ñơ n gi ả n.
– ðơ n lu ồ ng và các công vi ệ c ñượ c th ự c hi ệ n tu ầ n
– Gi ả i thu ậ t: m ộ t quy trình ñể th ự c hi ệ n m ộ t công
vi ệ c xác ñị nh
Trang 17L ậ p
L ậ p trình trình thông thông th th ườ ườ ng ng ((tt tt))
• L ậ p trình c ấ u trúc (tt)
– Phân chia ch ươ ng trình chính thành các ch ươ ng
trình con cho phù h ợ p v ớ i yêu c ầ u, ch ứ c n ă ng và
• ñối tượng là mộtthc th(entity) cụthểmà thông
thường ta có thểs ờ , nhìn th ấ yhay c ả m nh ậ nñược
Trang 18• Liên quanñến những thứ ñối tượng làm.
• Tácñộng lên dữliệu củañối tượng
Trang 19chung cho các ñố i t ượ ng có cùng lo ạ i.
VD: L ớ p XeDap là thi ế t k ế chung cho các ñố i
t ượ ng xe mini, xe ñ òn, xe ñầ m, xe ñ ua, xe leo
• L ớ p ñượ c t ạ o ra khi biên d ị ch
• ðố i t ượ ng t ạ o ra khi th ự c thi ch ươ ng trình.
ðố i t ượ ng là m ộ t th ể hi ệ n (instance) c ủ a 1 l ớ p
Trang 20M ộ t s ố khái ni ệ m c ơ b ả n (tt)
M ộ t s ố khái ni ệ m c ơ b ả n (tt)
• Truy ề n thông báo
– Thông báo (message): là 1 l ờ i yêu c ầ u 1 ho ạ t
• Chi tiết thực hiện (giá trịcác tham số)
– Truy ề n thông báo: kích ho ạ t hàm cùng tên trên 1 ñố i t ượ ng ñể yêu c ầ u thông tin.
Trang 21L ậ p
L ậ p trình trình h h ướ ướ ng ng ñố ñố i i t t ượ ượ ng ng (OOP) (OOP)
Thuộ ộc tính c tính + Hàm = Đố ối t i tượ ượng ng
Các thể hiện, đặc tính,
trạng thái của đối
tượng
Các hoạt động, thao tác của đối tượng
Mục tiêu chính
Phân tích bài toán thành nhi ề u ñố i t ượ ng.
Quan tâm ñế n d ữ li ệ u h ơ n th ủ t ụ c.
D ữ li ệ u ñượ c b ả o v ệ (che gi ấ u) và không th ể truy
xu ấ t t ừ bên ngoài ñố i t ượ ng.
Dữliệu và thủtụcñược
xửlý chặc chẽvới nhau
Quan tâmñếnmối liên
h giữa thủtục và dữliệu
ðố i t ượ ng 1
ðố i t ượ ng 1
DữliệuHàm
DữliệuHàm
Mục tiêu là tăng cườngkhảnăngsửdụng lại
22
L ậ p
L ậ p trình trình h h ướ ướ ng ng ñố ñố i i t t ượ ượ ng ng ((tt tt))
• S ự tr ừ u t ượ ng hóa (abstraction)
L ậ p
L ậ p trình trình h h ướ ướ ng ng ñố ñố i i t t ượ ượ ng ng ((tt tt))
• S ự tr ừ u t ượ ng hóa (abstraction)
– Là b ướ c ti ế n hóa ti ế p theo t ừ l ậ p trình c ấ u trúc – Ch ỉ quan tâm ñế n nh ữ ng ñặ c ñ i ể m c ầ n thi ế t (ph ớ t l ờ ñ i nh ữ ng chi ti ế t) tùy vào ng ữ c ả nh:
VD: Phân tích thông tin của 1 người:
- Trong ngữcảnh làm việc trong trường
- Trong ngữcảnh học tại trường? NhanVien
–Mã nhân viên
–Họvà tên
–Năm sinh
–…
Trang 23–ðược bảo vệ(protected) : chỉtruy xuấtñược từ
– Tận dụng lại các thuộc tính chung
– Tận dụng lại các thao tác tương tự
• Thiết kếlớp gọn nhẹ, ñơn giản hơn
Các ñặ ñặ c c ñ ñ i i ể ể m m c c ủ ủ a a OOP OOP
• Tính th ừ a k ế (tt)
– Chú ý: tránh thi ế t k ế sai v ề m ặ t ý ngh ĩ a
VD: L ớ p XeH ơ i th ừ a k ế t ừ l ớ p BánhXe là SAI.
– L ớ p con ph ả i chính là l ớ p cha, ngoài ra còn – L ớ p con ph ả i chính là l ớ p cha, ngoài ra còn
ph ả i có thêm nh ữ ng ñặ c tr ư ng riêng c ủ a nó:
• Thêm hàm hoặc thêm thuộc tính
• Táiñịnh nghĩa hàm của lớp cha, ñổi kiểu thuộctính
• Dùng hàmảo
Trang 24Con Con ng ng ườ ườ i i
ph ầ n mà l ớ p cha cho phép ( public + protected ).
thành ph ầ n trùng tên trong l ớ p cha
• Khi truy xuất thành phần trùng tênñó sẽtruy xuất
thành phần của lớp con
thành phần của lớp con
• Muốn truy xuất thành phần của lớp cha, phải chỉ
rõ
– Trong C++: <Tên lớp cha> :: ::<Tên hàm>
– Trong Java: super <Tên hàm>
Trang 25– K ể tên trong l ớ p cha m ộ t ứ ng x ử chung (hàm
ả o – virtual, abstract) cho t ậ p h ợ p các l ớ p con.
– Khi nh ậ n yêu c ầ u, tùy vào ñố i t ượ ng thu ộ c
l ớ p nào s ẽ có ứ ng x ử riêng (th ự c thi hàm
2 “Kêu”: cho t ậ p h ợ p các con v ậ t (chó, mèo, gà,
2 “Kêu”: cho t ậ p h ợ p các con v ậ t (chó, mèo, gà,
• Không nhất thiết phải cầ ñịnh nghĩaở lớp cha
• Ph ả iñượcñịnh nghĩa lạitrong lớp con
– L ớ p ả o:
– L ớ p ả o:
• Chỉdùng khai báo các hàmảo bên trong
• Khôngñược dùngñểtạo rañối tượng
Trang 26• Hàm trùng tên
• Khác tham số(sốlượng, thứtự, kiểu)
42
UML UML U U nified M odeling LL anguage
Trang 27Gi ớ i thi thi ệ ệ u u UML UML
– Tạm dịch là ngôn ngữmô hìnhhóa thống nhấ
– Ra ñời vào năm 1997 và hiện nay ñangñược sửdụng rất
phổbiến
– Bao gồm một hệthống cácký hi ệ u ñồ h ọ a, bi ể u ñồ (s ơ
ñồ )thống nhất dùng ñểthiết kếcác hệthống thông tin
ñồ )thống nhất dùng ñểthiết kếcác hệthống thông tin (IS) theo hướngñối tượng
– ðược sửdụng cho cácgiaiñ ạn phân tích, thiết kế, triểnkhaivàkiểm thửphần mềm
– Các CaseTool(Rational Rose, System Architect, Argo UML, Visual Paradigm for UML, Umbrello…) hỗtrợUML trong việc phát sinh chương trình tự ñộng cho các ngôn
– Class Diagram (bi ể u ñồ l ớ p)
– Class Diagram (bi ể u ñồ l ớ p)
– Sequence Diagram (bi ể u ñồ trình t ự )
– Collaboration Diagram (bi ể u ñồ c ộ ng tác)
– State Diagram (bi ể u ñồ tr ạ ng thái)
– Component Diagram (bi ể u ñồ thành ph ầ n)
– Deployment Diagram (bi ể u ñồ tri ể n khai)
S ơ
S ơ ñồ ñồ l l ớ ớ p p (Class Diagram) (Class Diagram)
• L ớ p
Trang 29• Mô hình hóa vi ệ c bán vé t ạ i r ạ p chi ế u phim theo
góc nhìn c ủ a ng ườ i mua vé / ng ườ i qu ả n lý
• Ti ệ m t ạ p hóa: Ch ủ ti ệ m c ầ n qu ả n lý vi ệ c mua
bán hàng hóa (vi ế t, t ậ p) trong c ử a hàng ñể bi ế t
bán hàng hóa (vi ế t, t ậ p) trong c ử a hàng ñể bi ế t
– Hàng nào mua vào giá bao nhiêu?
– Hàng nào bán ra và giá bao nhiêu?
Áp dụng kỹ thuật lập trình hướngñối tượng và tính
thừa kếcủa nóñểdựng khungñối tượng cho người
phụ trách mua bánñiền thông tin vào và sửdụng
phương thức cho việc mua bán
Bài Bài t t ậ ậ p p v v ề ề nhà
• Ch ọ n các ñố i t ượ ng ngoài th ự c t ế có liên quan v ớ i nhau ñể xây d ự ng khung (thu ộ c tính, ph ươ ng th ứ c) các ñố i t ượ ng v ớ i ñầ y ñủ
các ñặ c ñ i ể m:
– Tính th ừ a k ế – Ả o hóa.
– ð a hình.
• Cho 3 ví d ụ c ụ th ể cho t ừ ng ñố i t ượ ng
• H ạ n n ộ p: 12:00 PM 06/10/2009 (mail ho ặ c
gi ấ y)
Trang 30Bài n n ộ ộ p p
• Mail:
– Subject: C++ Bai 1 <ma sinh sien>
– <ma sinh vien> <Tên sinh viên>
Trang 31– Phân biệt chữHOAvà chữth ườ ng
– Gồmchữ, số, ‘_’ và phải bắtñầu bằng chữcái
– ðộdài tối ña là 32
– Nên theo quy cáchñặt tên
Vd: x, hoten, a1, num_of_var, Delta, TEN,
Các khái ni ệ m c ơ b ả n Các khái ni ệ m c ơ b ả n
• Ki ể u d ữ li ệ u
Tên Tên ki ki ể ể u u Kích Kích th th ướ ướ c c Ph Ph ạ ạ m m vi vi
char 1 byte -128 127 unsigned char 1 byte 0 255 int 2 bytes -32768 32767 unsigned int 2 bytes 0 65535 short 2 bytes 0 65535 long 4 bytes -231 231 - 1 unsigned long 4 bytes 0 232 - 1 float 4 bytes 1.2e-38 3.4e38double 8 bytes 2.2e-308 1.8e308
Trang 32– Bi ế n khai báo trong 1 kh ố i l ệ nh: ch ỉ có ph ạ m vi
ho ạ t ñộ ng trong kh ố i l ệ nh ñ ó.
Vd: if( delta >0 ) {
float x1= (-b + sqrt(delta)) / (2*a);
float x2= (-b - sqrt(delta)) / (2*a);
}
5
Các khái ni ệ m c ơ b ả n Các khái ni ệ m c ơ b ả n
int so = x/c ; return so;
– Khai báo: Vd: #define MAX 100
const int MAX=100;
char *str=“Chuoi Ky Tu”;
char chuoi[50]; strcpy(chuoi,“ ”);
if ( strcmp(chuoi,“”) ==0)
Các khái ni ệ m c ơ b ả n Các khái ni ệ m c ơ b ả n
Cú pháp: ( ( Ki Ki ể ể u u ) ) bi bi ể ể u u th th ứ ứ c c
hoặc Ki Ki ể ể u u ( ( bi bi ể ể u u th th ứ ứ c c ) )
Vd: int a=10, b=3;
float c1 = a / b ; float c2 = float (a/b);
Trang 33• M ả ng
– Khai báo: < <Ki Ki ể ể u u> < > <Tên Tên m m ả ả ng ng> [< > [<Kích Kích th th ướ ướ c c>]; >];
Vd: int m[10]; float ds[MAX];
– Th ứ t ự ph ầ n t ử : t ừ 0 ñế n (kích th ướ c -1)
Vd:
//CT tính t ổ ng c ủ a 10 s ố Fibonacci ñầ u tiên
long a[10]; a[0] = a[1] = 1;
for (int i = 2; i < 10 ; i++) a[i] = a[i-1] + a[i-2];
#error
Các khái ni ệ m c ơ b ả n Các khái ni ệ m c ơ b ả n
• Nh ậ p xu ấ t
– Thưviện hàm: #include <iostream.h>
– Nhập: cin cin >> >> Bi Bi ế ế n n
– Xuất : cout cout << ( << (Bi Bi ể ể u u th th ứ ứ c c))
– Các kiểu dữliệu có thể nhập xuất :– Các kiểu dữliệu có thể nhập xuất :
char , int, unsigned, long, unsigned long, … float, double, char* , char []
Trang 34• Tươngñương với 1 câu lệnh
• Tươngñương với 1 câu lệnh
case ‘giá tr ị 1’ : L ệ nh 1; [ break ; ]
case ‘giá tr ị 2’ : L ệ nh 2; [ break ; ]
case ‘giá tr ị n’ : L ệ nh n; [ break ; ]
default : L ệ nh n+1;
Trang 35Hàm và c ấ u trúc ch ươ ng trình
Hàm và c ấ u trúc ch ươ ng trình
• Hàm - Cú pháp :
<Ki ể u tr ả v ề > <Tên hàm> (Danh sách ki ể u và tham s ố )
{ [ Khai báo d ữ liệu cục bộ]
• Hàm - Khai báo prototype :
<Ki ể u tr ả v ề > <Tên hàm> ( Danh sách ki ể u );
Vd: int Max ( int , int );
int Min ( int , int );
void main() {
Khai báo hàm
void main() {
int a =10 , b =5;
cout <<“ So max= “<< Max (a,b)<< endl ;
cout <<“ So min= “<< Min (a,b)<< endl ; }
int Max ( int x , int y) { }
int Min ( int x , int y) { }
ðịnh nghĩahàm
Trang 36Hàm và c ấ u trúc ch ươ ng trình
Hàm và c ấ u trúc ch ươ ng trình
• Hàm
– Cách gọi :
Tên hàm(tham s ố theo th ứ t ự t ừ trái sang)
– Tham sốvàñối số: Tham số
Hàm và c ấ u trúc ch ươ ng trình Hàm và c ấ u trúc ch ươ ng trình
• C ấ u trúc ch ươ ng trình
– Chương trình theo dạng lập trình cấu trúc gồmtập hợp nhiều hàmñộc lập nhau
– Hàm main() làhàm thực thi.– Một chương trình chỉcó thể có1 hàm main() duynhất
nhất
– Dạng chung :
22
#include < Thư viện hàm >
Khai báo prototype;
Khai báo dữ liệu toàn cục
ðịnh nghĩa các hàm ñã khai báo
– Trên MS-DOS, kích thước của con trỏlà 2 bytes
• Khai báo : < Ki ể u> *<Tên con tr ỏ >;
• Khai báo : < Ki ể u> *<Tên con tr ỏ >;
• C ấ p vùng nh ớ : Con tr ỏ = new <Ki ể u> [ S ố l ượ ng ];
Vd: int *px= new int;
long *py; py= new long[20];
• Thu h ồ i vùng nh ớ : delete <con tr ỏ >;
Vd: delete px;
Trang 37Con Con trỏ trỏ ñến ñến 1 1 mảng mảng
10
10 phần phần tử tử kiểu kiểu int int
Tham s ố m ặ c nhiên Tham s ố m ặ c nhiên
• Khái ni ệ m
– Gán cácgiá trịmặc nhiêncho cáctham sốcủa hàm
• Ư u ñ i ể m
– Không cần phải hiểu rõ ý nghĩa tất cảcác tham số
– Có thểgiảmñược sốlượng hàm cầnñịnh nghĩa
– Có thểgiảmñược sốlượng hàm cầnñịnh nghĩa
• Khai báo tham s ố m ặ c nhiên
– Tất cảcác tham sốmặc nhiênñều phảiñặ t ở cu ố i hàm.
– Chỉcầnñưa vào khai báo, không cần trongñịnh nghĩa
• G ọ i hàm có tham s ố m ặ c nhiên
– Nếu cung cấ ñủtham số=> dùng tham sốtruyền vào.– Nếukhông ñủtham số=> dùngtham sốmặc nhiên
Trang 38Hàm thể hiện 1 cửa sổ thông báo trong Visual C++
Có thể gọi hàm theo các dạng sau:
29
MessageBox (“Hien thi thong bao ra man hinh");
MessageBox ( “Chuc nang khong su dung duoc",
• Ví d ụ
void Ham1 ( int a=0, int b=1) {
cout <<“ tham so 1 = “<<a<< endl ;
cout <<“ tham so 2 = “<<b<< endl ; }
void main() {
int x1=1, y1=2;
float x2=3, y2=4;
long x3=5, y3=6;
cout << Max (x1,y1)<<“\t”<< Max (x2,y2)<< endl ;
cout << Max (x3,y1) << endl ;
cout << Max (x3,y2) << endl ;
Trang 39Hàm inline
• Giảm thời gian thực thi chương trình
• Tăng kích thước của mã lệnh thực thi
• Chỉnênñịnh nghĩa inline khi hàm có kích thước nhỏ
• Cú pháp : thêm từkhóa inline vào trước hàm
VD: inline float sqr(float x) { VD: inline float sqr(float x) {
• Truy ề n theo giá tr ị
– Giá tr ị tham s ố khi ra kh ỏ i hàm s ẽkhông thay không thay ñổ ñổ i i
void Swap1 (int a, int b) {
int temp = a;
a = b;
b = temp;
5 10
x y
a b
main Swap1
STEP 01
x y
5 10
a b
main Swap1
STEP 02
5 10
x y
10 5
a b
main Swap1
STEP 03
Truy ề n tham s ố
Truy ề n tham s ố
• Truy ề n theo ñị a ch ỉ (con tr ỏ )
– Giá tr ị tham s ố khi ra kh ỏ i hàm có th có th ể ể thay thay ñổ ñổ i i
void Swap2 (int * a, int * b) { int temp = * a;
* a = * b;
* b = temp;
5 10
x y
a b
x y
100 200
a b
x y
100 200
a b
main Swap2
STEP
03 100
200
Trang 40*hoten masosv[]
• Vi ế t struct cho qu ả n lý kho hàng hóa (t ồ n kho) g ồ m các thông tin tên hàng,