b ng nhân viên trong công ty... Các đố ượi t ng trao đổ ới v i nhau thông quacác phương th c.ứ.
Trang 2tượng Các phòng ây có th l : phòng qu nở đ ể à ả
lý, phòng bán h ng, phòng k toán, phòng ti pà ế ế
th , M i ị ỗ phòng ngo i nh ng cán b à ữ ộ đảm nhi mệ
nh ng công vi c c th , còn có nh ng d li uữ ệ ụ ể ữ ữ ệ riêng nh thông tin v nhân viên, doanh s bánư ề ố
h ng, ho c các d li u khác có liên quan à ặ ữ ệ đến bộ
ph n ó Vi c phân chia các phòng ch c n ngậ đ ệ ứ ă trong công ty s t o i u ki n d d ng cho vi cẽ ạ đ ề ệ ễ à ệ
qu n lý các ho t ả ạ động M i nhân viên trongỗphòng s i u khi n v x lý d li u c a phòngẽ đ ề ể à ử ữ ệ ủ
ó Ví d phòng k toán ph trách v l ng
Trang 3b ng nhân viên trong công ty N u b n ang ổ ế ạ đ ở
b ph n ti p th v c n tìm thông tin chi ti t vộ ậ ế ị à ầ ế ề
lương c a ủ đơn v mình thì s g i yêu c u vị ẽ ở ầ ề phòng k toán V i cách l m n y b n ế ớ à à ạ đượ c
m b o l ch có nhân viên c a b ph n k
toán được quy n truy c p d li u v cung c pề ậ ữ ệ à ấ thông tin cho b n i u n y c ng cho th y r ng,ạ Đ ề à ũ ấ ằkhông có ngườ ài n o thu c b ph n khác có thộ ộ ậ ể truy c p v thay ậ à đổi d li u c a b ph n kữ ệ ủ ộ ậ ế toán Khái ni m nh th v ệ ư ế ề đố ượi t ng h u nhầ ư
th y r ng vì sao chúng ta c n chuy n sangấ ằ ầ ể
phương pháp l p trình hậ ướng đố ượi t ng
Trang 41.1.2 Nh ng nhữ ượ đ ểc i m c a l p trình hủ ậ ướ ng
th t c ủ ụ
Cách ti p c n l p trình truy n th ng l l pế ậ ậ ề ố à ậ trình hướng th t c (LTHTT) Theo cách ti pủ ụ ế
Chương trình khó ki m soát v khó kh n trongể à ă
vi c b sung, nâng c p chệ ổ ấ ương trình Chươ ngtrình được xây d ng theo cách TCHTT th cự ự
ch t l danh sách các câu l nh m theo ó máyấ à ệ à đtính c n th c hi n Danh sách các l nh óầ ự ệ ệ đ
Trang 5Mô hình được xây d ng theo cách ti p c nự ế ậ
hướng th t c không mô t ủ ụ ả đượ đầ đủ c y ,trung th c h th ng trong th c t ự ệ ố ự ế
Phương pháp TCHTT đặt tr ng tâm v o h mọ à à
l hà ướng t i ho t ớ ạ động s không th c sẽ ự ự
tương ng v i các th c th trong h th ng c aứ ớ ự ể ệ ố ủ
th gi i th c.ế ớ ự
Trang 61.1.3 L p trình hậ ướng đố ượi t ng
L p trình hậ ướng đố ượi t ng (Object OrientedProgramming - LTH T) l phĐ à ương pháp l pậ trình l y ấ đố ượi t ng l m n n t ng à ề ả để xây d ngự thu t gi i, xây d ng chậ ả ự ương trình Đố ượ i t ng
h p nh ng tri th c bao quát v các quá trình v iợ ữ ứ ề ớ
nh ng khái ni m tr u tữ ệ ừ ượng đượ ử ục s d ng trongmáy tính
Trang 7c m vi c truy nh p tùy ti n t bên ngo i.
6 Các đố ượi t ng trao đổ ới v i nhau thông quacác phương th c.ứ
Trang 87 D li u v các phữ ệ à ương th c m i có th dứ ớ ể ễ
d ng b sung v o à ổ à đố ượi t ng n o ó khi c nà đ ầ thi t.ế
8 Chương trình được thi t k theo cách ti pế ế ế
c n bottom-up (dậ ưới -lên)
1.2 Các khái ni m c b n c a l p trình hệ ơ ả ủ ậ ướng
i t ng
đố ượ
Nh ng khái ni m c b n trong LTH T baoữ ệ ơ ả Đ
g m:ồ Đố ượi t ng; L p; Tr u tớ ừ ượng hóa d li u,ữ ệ bao gói thông tin; K th a; Tế ừ ương ng b i; Liênứ ộ
k t ế động; Truy n thông báo.ề
tượng l bi n th hi n c a à ế ể ệ ủ l p ớ
1.2.2 L p ớ
v i k thu t LTHTT Nó l m t b n m u mô tớ ỹ ậ à ộ ả ẫ ả các thông tin c u trúc d li u v các thao tác h pấ ữ ệ à ợ
Trang 9l c a các ph n t d li u Khi m t ph n t dệ ủ ầ ử ữ ệ ộ ầ ử ữ
li u ệ được khai báo l ph n t c a m t l p thìà ầ ử ủ ộ ớ
nó được g i l ọ à đố ượ Các h m i t ng à đượ đị c nhngh a h p l trong m t l p ĩ ợ ệ ộ ớ được g i l cácọ à
nh t có th x lý d li u c a các ấ ể ử ữ ệ ủ đố ượi t ng c aủ
l p ó M i ớ đ ỗ đố ượi t ng có riêng cho mình m tộ
b n sao các ph n t d li u c a l p M i l pả ầ ử ữ ệ ủ ớ ỗ ớ bao g m: danh sách các thu c tính (attribute) vồ ộ à danh sách các phương th c ứ để ử x lý các thu cộ tính ó Công th c ph n ánh b n ch t c a kđ ứ ả ả ấ ủ ỹ thu t LTH T l :ậ Đ à
Trang 10Thu cộ tính :x1,y1d,r
Phươ ng
th cứ :
Nh p_slậ
Di n tíchệChu vi
Hi n thể ị
Trang 12Vi c óng gói d li u v các phệ đ ữ ệ à ương th cứ
v o m t à ộ đơn v c u trúc l p ị ấ ớ được xem nh m tư ộ nguyên t c ắ bao gói thông tin D li u ữ ệ đượ ổ c t
ch c sao cho th gi i bên ngo i (các ứ ế ớ à đố ượi t ng ở
l p khác) không truy nh p v o, m ch cho phépớ ậ à à ỉcác phương th c trong cùng l p ho c trongứ ớ ặ
s truy nh p tr c ti p trong l p trình ự ậ ự ế ậ được g iọ
l s à ự che gi u thông tinấ
1.2.4 K th aế ừ
l p n y ớ à được quy n s d ng m t s tính ch tề ử ụ ộ ố ấ
c a các ủ đố ượi t ng c a l p khác S k th a choủ ớ ự ế ừphép ta nh ngh a m t l p m i trên c s cácđị ĩ ộ ớ ớ ơ ở
l p ã t n t i L p m i n y, ngo i nh ng th nhớ đ ồ ạ ớ ớ à à ữ à
ph n ầ được k th a, s có thêm nh ng thu cế ừ ẽ ữ ộ tính v các h m m i Nguyên lý k th a h trà à ớ ế ừ ỗ ợ cho vi c t o ra c u trúc phân c p các l p.ệ ạ ấ ấ ớ
Trang 13ký t (string) v.v H nh vi c a phép toán tự à ủ ươ ng
ng b i ph thu c v o ki u d li u m nó s
d ng ụ để ử x lý
Tương ng b i óng vai quan tr ng trong vi cứ ộ đ ọ ệ
t o ra các ạ đố ượi t ng có c u trúc bên trong khácấnhau nh ng cùng dùng chung m t giao di n bênư ộ ệngo i (nh tên g i) à ư ọ
Trang 141.2.7 Truy n thông báoề
Các đố ượi t ng g i v nh n thông tin v i nhauử à ậ ớ
gi ng nh con ngố ư ười trao đổi v i nhau Chínhớnguyên lý trao đổi thông tin b ng cách truy nằ ề thông báo cho phép ta d d ng xây d ng ễ à ự đượ c
h th ng mô ph ng g n h n nh ng h th ngệ ố ỏ ầ ơ ữ ệ ố trong th gi i th c ế ớ ự Truy n thông báo ề cho m tộ
tương ng ứ để ử x lý d li u ã ữ ệ đ được khai báotrong đố ượi t ng ó Vì v y, trong thông báo ph iđ ậ ả
ch ra ỉ được h m c n th c hi n trong à ầ ự ệ đố ượ i t ng
nh n thông báo Thông báo truy n i c ng ph iậ ề đ ũ ả xác nh tên đị đố ượi t ng v thông tin truy n i.à ề đ
Ví d , l p CONGNHAN có th hi n l ụ ớ ể ệ à đố i
tượng c th ụ ể đượ đạc i di n b i Hoten nh nệ ở ậ
c thông báo c n tính l ng thông qua h m
TINHLUONG ã đ được xác định trong l pớ
Trang 15CONGNHAN Thông báo ó s đ ẽ được x lý nhử ư sau:
Trong chương trình hướng đố ượi t ng, m iỗ
i t ng ch t n t i trong th i gian nh t nh
i t ng c t o ra khi nó c khai báo v
1.3 Các bướ ầc c n thi t ế để thi t k chế ế ương
trình theo hướng đố ượi t ng
Chương trình theo hướng đố ượi t ng bao g mồ
CONGNHAN.TINHLUONG (Hoten)
i t ng
Đố ượ Thông báo Thông tin
Trang 162 Tìm ki m các ế đặc tính chung (d li uữ ệ chung) trong các d ng ạ đố ượi t ng n y, nh ng gìà ữchúng cùng nhau chia x ẻ
3 Xác nh l p c s d a trên c s các đị ớ ơ ở ự ơ ở đặ ctính chung c a các d ng ủ ạ đố ượi t ng
4 T l p c s , xây d ng các l p d n xu từ ớ ơ ở ự ớ ẫ ấ
ch a các th nh ph n, nh ng ứ à ầ ữ đặc tính khôngchung còn l i c a các d ng ạ ủ ạ đố ượi t ng Ngo i ra,à
ta còn đưa ra các l p có quan h v i các l p cớ ệ ớ ớ ơ
s v l p d n xu t.ở à ớ ẫ ấ
1.4 Các u i m c a l p trình hư đ ể ủ ậ ướng đố ượi t ngCách ti p c n hế ậ ướng đố ượi t ng gi i quy tả ế
c nhi u v n t n t i trong quá trình phát
tri n ph n m m v t o ra ể ầ ề à ạ được nh ng s n ph mữ ả ẩ
ph n m m có ch t lầ ề ấ ượng cao Nh ng u i mữ ư đ ể chính c a LTH T l :ủ Đ à
1 Thông qua nguyên lý k th a, có th lo iế ừ ể ạ
b ỏ được nh ng o n chữ đ ạ ương trình l p l i trongặ ạquá trình mô t các l p v m r ng kh n ng sả ớ à ở ộ ả ă ử
d ng các l p ã ụ ớ đ được xây d ng.ự
2 Chương trình được xây d ng t nh ngự ừ ữ
n th ( i t ng) trao i v i nhau nên vi c
Trang 17thi t k v l p trình s ế ế à ậ ẽ được th c hi n theo quyự ệtrình nh t nh ch không ph i d a v o kinhấ đị ứ ả ự ànghi m v k thu t nh trệ à ỹ ậ ư ướ Đ ềc i u n y à đả m
b o rút ng n ả ắ được th i gian xây d ng h th ngờ ự ệ ố
v t ng n ng su t lao à ă ă ấ động
3 Nguyên lý che gi u thông tin giúp ngấ ườ ậ i l ptrình t o ra ạ được nh ng chữ ương trình an to nà không b thay b i nh ng o n chị ở ữ đ ạ ương trìnhkhác
7 K thu t truy n thông báo trong vi c traoỹ ậ ề ệ
i thông tin gi a các i t ng giúp cho vi c
mô t giao di n v i các h th ng bên ngo i trả ệ ớ ệ ố à ở nên đơn gi n h n.ả ơ
Trang 18L p trình hậ ướng đố ượi t ng không l à đặ cquy n c a m t ngôn ng n o ề ủ ộ ữ à đặc bi t C ngệ ũ
Trang 192 Ngôn ng l p trình hữ ậ ướng đố ượi t ng
L p trình d a trên ậ ự đố ượi t ng l ki u l pà ể ậ trình h tr chính cho vi c bao gói, che gi uỗ ợ ệ ấ thông tin v nh danh các à đị đố ượi t ng L p trìnhậ
d a trên ự đố ượi t ng có nh ng ữ đặc tính sau:
Ngôn ng h tr cho ki u l p trình trên ữ ỗ ợ ể ậ đượ c
g i l ngôn ng l p trình d a trên ọ à ữ ậ ự đố ượi t ng.Ngôn ng trong l p n y không h tr cho vi cữ ớ à ỗ ợ ệ
th c hi n k th a v liên k t ự ệ ế ừ à ế động, ch ng h nẳ ạ Ada l ngôn ng l p trình d a trên à ữ ậ ự đố ượi t ng
L p trình hậ ướng đố ượi t ng l ki u l p trìnhà ể ậ
d a trên ự đố ượi t ng v b sung thêm nhi u c uà ổ ề ấ trúc để à đặ c i t nh ng quan h v k th a vữ ệ ề ế ừ à liên k t ế động Vì v y ậ đặc tính c a LTH T cóủ Đ
th vi t m t cách ng n g n nh sau:ể ế ộ ắ ọ ư
Các đặc tính d a trên ự đố ượi t ng + kế
th a + liên k t ừ ế động
Trang 20Ngôn ng h tr cho nh ng ữ ỗ ợ ữ đặc tính trên
LTH T ang Đ đ đượ ức ng d ng ụ để phát tri nể
ph n m m trong nhi u l nh v c khác nhau Trongầ ề ề ĩ ự
s ó, có ng d ng quan tr ng v n i ti ng nh tố đ ứ ụ ọ à ổ ế ấ
hi n nay l h i u h nh Windows c a hãngệ à ệ đ ề à ủMicrosoft ã đ được phát tri n d a trên k thu tể ự ỹ ậ LTH T M t s nh ng l nh v c ng d ng chínhĐ ộ ố ữ ĩ ự ứ ụ
Trang 21+ L nh v c trí tu nhân t o v các h chuyênĩ ự ệ ạ à ệgia.
+ L p trình song song v m ng n -ron.ậ à ạ ơ
+ Nh ng h t ữ ệ ự động hóa v n phòng v tră à ợ giúp quy t nh.ế đị
Trang 22
Chương 2
các mở rộng của ngôn ngữ C++
Gi i thi u chung v ngôn ng C++ ớ ệ ề ữ
Bi n tham chi u, h ng tham chi u ế ế ằ ế
Truy n tham s cho h m theo tham chi u ề ố à ế
H m tr v giá tr tham chi u à ả ề ị ế
Ph n l n các chầ ớ ương trình C đều có th ch yể ạ
Trang 23c trong C++ Trong ch ng n y ch t p trung
gi i thi u nh ng khái ni m, ớ ệ ữ ệ đặc tính m i c aớ ủ C++ h tr cho l p trình hỗ ợ ậ ướng đố ượi t ng M tộ
s ki n th c có trong C++ nh ng ã có trongố ế ứ ư đngôn ng C s không ữ ẽ được trình b y l i ây.à ạ ở đ2.2 M t s m r ng c a C++ so v i Cộ ố ở ộ ủ ớ
2.2.1 Đặ ờt l i chú thích
Ngo i ki u chú thích trong C b ng /* */ ,à ể ằC++ đưa thêm m t ki u chú thích th hai, ó lộ ể ứ đ à chú thích b t ắ đầu b ng // Ki u chú thích /* */ằ ể
c dùng cho các kh i chú thích l n g m
nhi u dòng, còn ki u // ề ể được dùng cho các chúthích trên m t dòng Chộ ương trình d ch s bị ẽ ỏ qua t t c các chú thích trong chấ ả ương trình
Trang 24vi c ki m soát chệ ể ương trình C++ ã kh c ph cđ ắ ụ
nhượ đ ểc i m n y b ng cách cho phép các l nhà ằ ệ khai báo bi n có th ế ể đặt b t k ch n o trongấ ỳ ỗ à
chương trình trước khi các bi n ế được s d ng.ử ụ
Ph m vi ho t ạ ạ động c a các bi n ki u n y lủ ế ể à à
kh i trong ó bi n ố đ ế được khai báo
Ví d 2.1ụ Chương trình sau ây nh p m t dãyđ ậ ộ
for (int i=0;i<n;i++)
{
Trang 26C++ còn s d ng m t phép chuy n ki u m i nhử ụ ộ ể ể ớ ư sau:
Ki u(bi u th c)ể ể ứPhép chuy n ki u n y có d ng nh m t h m sể ể à ạ ư ộ à ố chuy n ki u ang ể ể đ được g i Cách chuy n ki uọ ể ể
n y thà ường đượ ử ục s d ng trong th c t ự ế
Ví d 2.2ụ Chương trình sau ây tính sau t ng Sđ ổ
Trang 27getch();
}
2.2.4 L y a ch các ph n t m ng th c 2 chi uấ đị ỉ ầ ử ả ự ềTrong C không cho phép dùng phép toán & để
l y a ch c a các ph n t m ng th c 2 chi u.ấ đị ỉ ủ ầ ử ả ự ề
Vì v y khi nh p m t ma tr n th c (dùng h mậ ậ ộ ậ ự à scanf()) ta ph i nh p qua m t bi n trung gian sauả ậ ộ ế
ó m i gán cho các ph n t m ng
C++ cho phép dùng phép toán & để ấ đị l y a
ch các ph n t m ng th c 2 chi u, do ó thỉ ầ ử ả ự ề đ ể dùng h m scanf() à để nh p tr c ti p v o cácậ ự ế à
ph n t m ng.ầ ử ả
Ví d 2.3 ụ Chương trình sau ây cho phép nh pđ ậ
m t m ng th c c p 20x20 v tìm các ph n t cóộ ả ự ấ à ầ ửgiá tr l n nh t.ị ớ ấ
Trang 29puts("\n\n Phan tu max:");
printf("\n Co gia tri=%6.1f", smax);
printf("\n\n Tai hang %d cot
li u thông qua hai bi n ệ ế đố ượi t ng c a dòngủ(stream object) l cout v cin.à à
Trang 302.3.1 Xu t d li uấ ữ ệ
Cú pháp: cout << bi u th c 1<< .<< bi uể ứ ể
th c N;ứ
Trong ó đ cout đượ địc nh ngh a trĩ ước nh m tư ộ
i t ng bi u di n cho thi t b xu t chu n c a
Cú pháp: cin >>bi n 1>> >>bi n N;ế ế
Toán t ử cin đượ địc nh ngh a trĩ ước nh m t ư ộ đố i
tượng bi u di n cho thi t b v o chu n c a C++ể ễ ế ị à ẩ ủ
l b n phím, à à cin đượ ử ục s d ng k t h p v i toánế ợ ớ
t trích >> ử để nh p d li u t b n phím cho cácậ ữ ệ ừ à
bi n 1, 2, , N.ế
Chú ý:
• Để nh p m t chu i không quá n ký t v l uậ ộ ỗ ự à ư
v o m ng m t chi u a (ki u char) có th dùngà ả ộ ề ể ể
h m cin.get nh sau:à ư cin.get(a,n);
• Toán t nh p cin>> s ử ậ ẽ để ạ l i ký t chuy nự ể dòng ’\n’ trong b ộ đệm Ký t n y có th l mự à ể à trôi phương th c cin.get ứ Để kh c ph c tìnhắ ụ
Trang 31tr ng trên c n dùng phạ ầ ương th c cin.ignore(1)ứ
b qua m t ký t chuy n dòng
• Để ử ụ s d ng các lo i toán t v phạ ử à ương th cứ nói trên c n khai báo t p tin d n hầ ậ ẫ ướ ngiostream.h
2.3.3 nh d ng khi in ra m n hìnhĐị ạ à
• Để quy nh s th c đị ố ự được hi n th ra m nể ị à hình v i p ch s sau d u ch m th p phân, taớ ữ ố ấ ấ ậ
s d ng ử ụ đồng th i các h m sau:ờ à
setiosflags(ios::showpoint); // B t c hi uậ ờ ệ showpoint(p)
setprecision(p);
Các h m n y c n à à ầ đặt trong toán t xu t nhử ấ ư sau:
cout<<setiosflag(ios::showpoint)<<setprecision(p);
Câu l nh trên s có hi u l c ệ ẽ ệ ự đố ớ ấ ả i v i t t ccác toán t xu t ti p theo cho ử ấ ế đến khi g p m tặ ộ câu l nh nh d ng m i.ệ đị ạ ớ
Trang 33}
for (i=0;i<n-1;++i)
for(j=i+1;j<n;++j)
if(ts[i].td<ts[j].td)
Trang 372.4 C p phát v gi i phóng b nhấ à ả ộ ớ
Trong C có th s d ng các h m c p phát bể ử ụ à ấ ộ
nh nh malloc(), calloc() v h m free() ớ ư à à để ả gi iphóng b nh ộ ớ đượ ấc c p phát C++ đưa thêm m tộ cách th c m i ứ ớ để th c hi n vi c c p phát vự ệ ệ ấ à
gi i phóng b nh b ng cách dùng hai toán tả ộ ớ ằ ử new v à delete
2.4.1 Toán t new ử để ấ c p phát b nhộ ớ
Toán t new thay cho h m malloc() v calloc()ử à à
c a C có cú pháp nh sau:ủ ư
new Tên ki u ;ể
ho cặ new (Tên ki u);ể
Trong ó Tên ki u l ki u d li u c a bi n conđ ể à ể ữ ệ ủ ế
tr , nó có th l : các ki u d li u chu n nh int,ỏ ể à ể ữ ệ ẩ ưfloat, double, char, ho c các ki u do ngặ ể ườ ậ i l ptrình nh ngh a nh m ng, c u trúc, l p, đị ĩ ư ả ấ ớ
Chú ý: Để ấ c p phát b nh cho m ng m t chi u,ộ ớ ả ộ ề dùng cú pháp nh sau:ư
Bi n con tr = new ki u[n]; ế ỏ ểTrong ó n l s nguyên dđ à ố ương xác nh sđị ố
ph n t c a m ng.ầ ử ủ ả
Trang 38Ví d :ụ float *p = new float; //c p phát b nhấ ộ ớ cho bi n con tr p có ki u intế ỏ ể
int *a = new int[100]; //c p phát b nh ấ ộ ớ để
l u tr m ng m t chi u a ư ữ ả ộ ề
// g m 100 ph n tồ ầ ửKhi s d ng toán t new ử ụ ử để ấ c p phát b nh ,ộ ớ
n u không ế đủ ộ b nh ớ để ấ c p phát, new s trẽ ả
l i giá tr NULL cho con tr o n chạ ị ỏ Đ ạ ương trìnhsau minh h a cách ki m tra l i c p phát b nh :ọ ể ỗ ấ ộ ớdouble *p;