DANH MỤC TÀI LIỆU
Cẩm nang lập trình C+++
ĐẠI HC ĐÀ NNG
TRƯỜNG ĐẠI HC K THUT
KHOA CÔNG NGH THÔNG TIN - ĐIN T VIN THÔNG
GIÁO TRÌNH MÔN HC
LP TRÌNH HƯỚNG ĐỐI TƯỢNG
BIÊN SON: LÊ TH M HNH
ĐÀ NNG, 09/2002
Giáo trình môn Lp trình hướng đối tượng Trang
Biên son: Lê Th M Hnh
2
MC LC

CHƯƠNG 1: GII THIU V LP TRÌNH HƯỚNG ĐỐI TƯỢNG.......................... 5
I. LP TRÌNH HƯỚNG ĐỐI TƯỢNG (OOP) LÀ GÌ ? .............................................. 5
I.1. Lp trình tuyến tính ............................................................................................ 5
I.2. Lp trình cu trúc................................................................................................ 5
I.3. S tru tượng hóa d liu................................................................................... 6
I.4. Lp trình hướng đối tượng ................................................................................. 6
II. MT S KHÁI NIM MI TRONG LP TRÌNH HƯỚNG ĐỐI TƯỢNG........... 8
II.1. S đóng gói (Encapsulation) .............................................................................. 8
II.2. Tính kế tha (Inheritance).................................................................................. 9
II.3. Tính đa hình (Polymorphism) .......................................................................... 10
III. CÁC NGÔN NG VÀ VÀI NG DNG CA OOP............................................ 11
CHƯƠNG 2: CÁC M RNG CA C++...................................................................... 12
I. LCH S CA C++ ................................................................................................. 12
II. CÁC M RNG CA C++..................................................................................... 12
II.1. Các t khóa mi ca C++................................................................................. 12
II.2. Cách ghi chú thích............................................................................................ 12
II.3. Dòng nhp/xut chun...................................................................................... 13
II.4. Cách chuyn đổi kiu d liu ........................................................................... 14
II.5. V trí khai báo biến........................................................................................... 14
II.6. Các biến const................................................................................................... 15
II.7. V struct, union và enum.................................................................................. 16
II.8. Toán t định phm vi ....................................................................................... 16
II.9. Toán t new và delete....................................................................................... 17
II.10. Hàm inline ........................................................................................................ 23
II.11. Các giá tr tham s mc định............................................................................ 24
II.12. Phép tham chiếu ............................................................................................... 25
II.13. Phép đa năng hóa (Overloading)...................................................................... 29
CHƯƠNG 3: LP VÀ ĐỐI TƯỢNG .............................................................................. 39
I. DN NHP.............................................................................................................. 39
II. CÀI ĐẶT MT KIU DO NGƯỜI DÙNG ĐỊNH NGHĨA VI MT STRUCT. 39
III. CÀI ĐẶT MT KIU D LIU TRU TƯỢNG VI MT LP...................... 41
IV. PHM VI LP VÀ TRUY CP CÁC THÀNH VIÊN LP .................................. 45
V. ĐIU KHIN TRUY CP TI CÁC THÀNH VIÊN............................................ 47
VI. CÁC HÀM TRUY CP VÀ CÁC HÀM TIN ÍCH............................................... 48
VII. KHI ĐỘNG CÁC ĐỐI TƯỢNG CA LP : CONSTRUCTOR......................... 49
VIII.S DNG DESTRUCTOR..................................................................................... 51
IX. KHI NÀO CÁC CONSTRUTOR VÀ DESTRUCTOR ĐƯỢC GI ?.................. 53
X. S DNG CÁC THÀNH VIÊN D LIU VÀ CÁC HÀM THÀNH VIÊN ........ 54
XI. TR V MT THAM CHIU TI MT THÀNH VIÊN D LIU PRIVATE.. 57
XII. PHÉP GÁN BI TOÁN T SAO CHÉP THÀNH VIÊN MC ĐỊNH ................. 59
XIII.CÁC ĐỐI TƯỢNG HNG VÀ CÁC HÀMTHÀNH VIÊN CONST..................... 60
XIV.LP NHƯ LÀ CÁC THÀNH VIÊN CA CÁC LP KHÁC ............................... 64
XV. CÁC HÀM VÀ CÁC LP FRIEND........................................................................ 67
Giáo trình môn Lp trình hướng đối tượng Trang
Biên son: Lê Th M Hnh
3
XVI.CON TR THIS ...................................................................................................... 68
XVII.CÁC ĐỐI TƯỢNG ĐƯỢC CP PHÁT ĐỘNG ................................................... 71
XVIII.CÁC THÀNH VIÊN TĨNH CA LP................................................................. 72
CHƯƠNG 4: ĐA NĂNG HÓA TOÁN T...................................................................... 76
I. DN NHP.............................................................................................................. 76
II. CÁC NGUYÊN TC CƠ BN CA ĐA NĂNG HÓA TOÁN T...................... 76
III. CÁC GII HN CA ĐA NĂNG HÓA TOÁN T.............................................. 76
IV. CÁC HÀM TOÁN T CÓ TH LÀ CÁC THÀNH VIÊN CA LP HOC
KHÔNG LÀ CÁC THÀNH VIÊN........................................................................... 77
V. ĐA NĂNG HOÁ CÁC TOÁN T HAI NGÔI ....................................................... 80
VI. ĐA NĂNG HÓA CÁC TOÁN T MT NGÔI ..................................................... 87
VII. ĐA NĂNG HÓA MT S TOÁN T ĐẶC BIT ................................................ 90
VII.1.Toán t [] ............................................................................................................ 91
VII.2.Toán t () ............................................................................................................ 92
VIII.TOÁN T CHUYN ĐỔI KIU............................................................................ 94
IX. TOÁN T NEW VÀ DELETE................................................................................ 95
IX.1.Đa năng hóa toán t new và delete toàn cc........................................................ 96
IX.2.Đa năng hóa toán t new và delete cho mt lp .................................................. 97
X. ĐA NĂNG HÓA CÁC TOÁN T CHÈN DÒNG << VÀ TRÍCH DÒNG >> ...... 98
XI. MT S VÍ D....................................................................................................... 99
XI.1.Lp String............................................................................................................. 99
XI.2.Lp Date............................................................................................................. 103
CHƯƠNG 5: TÍNH K THA...................................................................................... 107
I. DN NHP............................................................................................................ 107
II. K THA ĐƠN ..................................................................................................... 107
II.1.Các lp cơ s và các lp dn xut ....................................................................... 107
II.2.Các thành viên protected...................................................................................... 109
II.3.Ép kiu các con tr lp cơ s ti các con tr lp dn xut.................................. 109
II.4.Định nghĩa li các thành viên lp cơ s trong mt lp dn xut:........................ 113
II.5.Các lp cơ s public, protected và private........................................................... 113
II.6.Các contructor và destructor lp dn xut........................................................... 113
II.7.Chuyn đổi ngm định đối tượng lp dn xut sang đối tượng lp cơ s........... 116
III. ĐA K THA (MULTIPLE INHERITANCE)..................................................... 116
IV. CÁC LP CƠ S O (VIRTUAL BASE CLASSES) ......................................... 119
CHƯƠNG 6: TÍNH ĐA HÌNH ....................................................................................... 122
I. DN NHP............................................................................................................ 122
II. PHƯƠNG THC O (VIRTUAL FUNCTION).................................................. 122
III. LP TRU TƯỢNG (ABSTRACT CLASS) ....................................................... 125
IV. CÁC THÀNH VIÊN O CA MT LP............................................................ 127
IV.1.Toán t o........................................................................................................... 127
IV.2.Có constructor và destructor o hay không?...................................................... 129
CHƯƠNG 7: THIT K CHƯƠNG TRÌNH THEO HƯỚNG ĐỐI TƯỢNG ......... 132
I. DN NHP............................................................................................................ 132
II. CÁC GIAI ĐON PHÁT TRIN H THNG..................................................... 132
III. CÁCH TÌM LP .................................................................................................... 133
IV. CÁC BƯỚC CN THIT ĐỂ THIT K CHƯƠNG TRÌNH............................. 133
V. CÁC VÍ D............................................................................................................ 134
Giáo trình môn Lp trình hướng đối tượng Trang
Biên son: Lê Th M Hnh
4
CHƯƠNG 8: CÁC DNG NHP/XUT...................................................................... 143
I. DN NHP............................................................................................................ 143
II. CÁC DÒNG(STREAMS) ...................................................................................... 143
II.1.Các file header ca thư vin iostream.................................................................. 143
II.2.Các lp và các đối tượng ca dòng nhp/xut..................................................... 144
III. DÒNG XUT......................................................................................................... 145
III.1.Toán t chèn dòng.............................................................................................. 145
III.2.Ni các toán t chèn dòng và trích dòng............................................................ 146
III.3.Xut ký t vi hàm thành viên put(); Ni vi nhau hàm put() .......................... 147
IV. DÒNG NHP......................................................................................................... 148
IV.1.Toán t trích dòng:............................................................................................. 148
IV.2.Các hàm thành viên get() và getline()................................................................ 149
IV.3.Các hàm thành viên khác ca istream................................................................ 151
IV.4.Nhp/xut kiu an toàn....................................................................................... 151
V. NHP/XUT KHÔNG ĐỊNH DNG VI READ(),GCOUNT() VÀ WRITE() 151
VI. DÒNG NHP/ XUT FILE .................................................................................. 152
VI.1.Nhp/xut file văn bn ....................................................................................... 154
CHƯƠNG 9: HÀM VÀ LP TEMPLATE................................................................... 159
I. CÁC HÀM TEMPLATE........................................................................................ 159
II. CÁC LP TEMPLATE........................................................................................... 161
Giáo trình môn Lp trình hướng đối tượng Trang
Biên son: Lê Th M Hnh
5
CHƯƠNG 1
GII THIU V LP TRÌNH HƯỚNG ĐỐI TƯỢNG
I. LP TRÌNH HƯỚNG ĐỐI TƯỢNG (OOP) LÀ GÌ ?
Lp trình hướng đối tượng (Object-Oriented Programming, viết tt là OOP) là mt phương pháp mi
trên bước đường tiến hóa ca vic lp trình máy tính, nhm làm cho chương trình tr nên linh hot, tin cy
và d phát trin. Tuy nhiên để hiu được OOP là gì, chúng ta hãy bt đầu t lch s ca quá trình lp trình –
xem xét OOP đã tiến hóa như thế nào.
I.1. Lp trình tuyến tính
Máy tính đầu tiên được lp trình bng mã nh phân, s dng các công tt cơ khí để np chương trình.
Cùng vi s xut hin ca các thiết b lưu tr ln và b nh máy tính có dung lượng ln nên các ngôn ng
lp trình cp cao đầu tiên được đưa vào s dng . Thay vì phi suy nghĩ trên mt dãy các bit và byte, lp
trình viên có th viết mt lot lnh gn vi tiếng Anh và sau đó chương trình dch thành ngôn ng máy.
Các ngôn ng lp trình cp cao đầu tiên được thiết kế để lp các chương trình làm các công vic tương
đối đơn gin như tính toán. Các chương trình ban đầu ch yếu liên quan đến tính toán và không đòi hi gì
nhiu ngôn ng lp trình. Hơn na phn ln các chương trình này tương đối ngn, thường ít hơn 100 dòng.
Khi kh năng ca máy tính tăng lên thì kh năng để trin khai các chương trình phc tp hơn cũng tăng
lên. Các ngôn ng lp trình ngày trước không còn thích hp đối vi vic lp trình đòi hi cao hơn. Các
phương tin cn thiết để s dng li các phn mã chương trình đã viết hu như không có trong ngôn ng lp
trình tuyến tính. Tht ra, mt đon lnh thường phi được chép lp li mi khi chúng ta dùng trong nhiu
chương trình do đó chương trình dài dòng, logic ca chương trình khó hiu. Chương trình được điu khin
để nhy đến nhiu ch thường không có s gii thích rõ ràng, làm thế nào để chương trình đến ch cn
thiết hoc ti sao như vy.
Ngôn ng lp trình tuyến tính không có kh năng kim soát phm vi nhìn thy ca các d liu. Mi d
liu trong chương trình đều là d liu toàn cc nghĩa là chúng có th b sa đổi bt k phn nào ca
chương trình. Vic dò tìm các thay đổi không mong mun đó ca các phn t d liu trong mt dãy mã lnh
dài và vòng vèo đã tng làm cho các lp trình viên rt mt thi gian.
I.2. Lp trình cu trúc
Rõ ràng là các ngôn ng mi vi các tính năng mi cn phi được phát trin để có th to ra các ng
dng tinh vi hơn. Vào cui các năm trong 1960 và 1970, ngôn ng lp trình có cu trúc ra đời. Các chương
trình có cu trúc được t chc theo các công vic mà chúng thc hin.
V bn cht, chương trình chia nh thành các chương trình con riêng r (còn gi là hàm hay th tc)
thc hin các công vic ri rc trong quá trình ln hơn, phc tp hơn. Các hàm này được gi càng độc lp
vi nhau càng nhiu càng tt, mi hàm có d liu và logic riêng.Thông tin được chuyn giao gia các hàm
thông qua các tham s, các hàm có th có các biến cc b không mt ai nm bên ngoài phm vi ca hàm
li có th truy xut được chúng. Như vy, các hàm có th được xem là các chương trình con được đặt chung
vi nhau để xây dng nên mt ng dng.
Mc tiêu là làm sao cho vic trin khai các phn mm d dàng hơn đối vi các lp trình viên mà vn ci
thin được tính tin cy và d bo qun chương trình. Mt chương trình có cu trúc được hình thành bng
cách b gãy các chc năng cơ bn ca chương trình thành các mnh nh mà sau đó tr thành các hàm. Bng
cách cô lp các công vic vào trong các hàm, chương trình có cu trúc có th làm gim kh năng ca mt
hàm này nh hưởng đến mt hàm khác. Vic này cũng làm cho vic tách các vn đề tr nên d dàng hơn. S
gói gn này cho phép chúng ta có th viết các chương trình sáng sa hơn và gi được điu khin trên tng
hàm. Các biến toàn cc không còn na và được thay thế bng các tham s và biến cc b có phm vi nh
hơn và d kim soát hơn. Cách t chc tt hơn này nói lên rng chúng ta có kh năng qun lý logic ca cu
trúc chương trình, làm cho vic trin khai và bo dưỡng chương trình nhanh hơn và hu hin hơn và hiu qu
hơn.
Giáo trình môn Lp trình hướng đối tượng Trang
Biên son: Lê Th M Hnh
6
Mt khái nim ln đã được đưa ra trong lp trình có cu trúc là s tru tượng hóa (Abstraction). S
tru tượng hóa có th xem như kh năng quan sát mt s vic mà không cn xem xét đến các chi tiết bên
trong ca nó. Trong mt chương trình có cu trúc, chúng ta ch cn biết mt hàm đã cho có th làm được mt
công vic c th gì là đủ. Còn làm thế nào mà công vic đó li thc hin được là không quan trng, chng
nào hàm còn tin cy được thì còn có th dùng nó mà không cn phi biết nó thc hin đúng đắn chc năng
ca mình như thế nào. Điu này gi là s tru tượng hóa theo chc năng (Functional abstraction) và là
nn tng ca lp trình có cu trúc.
Ngày nay, các k thut thiết kế và lp trình có cu trúc được s rng rãi. Gn như mi ngôn ng lp
trình đều có các phương tin cn thiết để cho phép lp trình có cu trúc. Chương trình có cu trúc d viết, d
bo dưỡng hơn các chương trình không cu trúc.
S nâng cp như vy cho các kiu d liu trong các ng dng mà các lp trình viên đang viết cũng đang
tiếp tc din ra. Khi độ phc tp ca mt chương trình tăng lên, s ph thuc ca nó vào các kiu d liu cơ
bn mà nó x lý cũng tăng theo. Vn đề tr rõ ràng là cu trúc d liu trong chương trình quan trng chng
kém gì các phép toán thc hin trên chúng. Điu này càng tr rõ ràng hơn khi kích thước ca chương trình
càng tăng. Các kiu d liu được x lý trong nhiu hàm khác nhau bên trong mt chương trình có cu trúc.
Khi có s thay đổi trong các d liu này thì cũng cn phi thc hin c các thay đổi mi nơi có các thao tác
tác động trên chúng. Đây có th là mt công vic tn thi gian và kém hiu qu đối vi các chương trình có
hàng ngàn dòng lnh và hàng trăm hàm tr lên.
Mt yếu đim na ca vic lp trình có cu trúc là khi có nhiu lp trình viên làm vic theo nhóm cùng
mt ng dng nào đó. Trong mt chương trình có cu trúc, các lp trình viên được phân công viết mt tp
hp các hàm và các kiu d liu. Vì có nhiu lp trình viên khác nhau qun lý các hàm riêng, có liên quan
đến các kiu d liu dùng chung nên các thay đổi mà lp trình viên to ra trên mt phn t d liu s làm nh
hưởng đến công vic ca tt c các người còn li trong nhóm. Mc dù trong bi cnh làm vic theo nhóm,
vic viết các chương trình có cu trúc thì d dàng hơn nhưng sai sót trong vic trao đổi thông tin gia các
thành viên trong nhóm có th dn ti hu qu là mt rt nhiu thi gian để sa cha chương trình.
I.3. S tru tượng hóa d liu
S tru tượng hóa d liu (Data abstraction) tác động trên các d liu cũng tương t như s tru
tượng hóa theo chc năng. Khi có tru tượng hóa d liu, các cu trúc d liu và các phn t có th được s
dng mà không cn bn tâm đến các chi tiết c th. Chng hn như các s du chm động đã được tru
tượng hóa trong tt c các ngôn ng lp trình, Chúng ta không cn quan tâm cách biu din nh phân chính
xác nào cho s du chm động khi gán mt giá tr, cũng không cn biết tính bt thường ca phép nhân nh
phân khi nhân các giá tr du chm động. Điu quan trng là các s du chm động hot động đúng đắn và
hiu được.
S tru tượng hóa d liu giúp chúng ta không phi bn tâm v các chi tiết không cn thiết. Nếu lp
trình viên phi hiu biết v tt c các khía cnh ca vn đề, mi lúc và v tt c các hàm ca chương trình
thì ch ít hàm mi được viết ra, may mn thay tru tượng hóa theo d liu đã tn ti sn trong mi ngôn ng
lp trình đối vi các d liu phc tp như s du chm động. Tuy nhiên ch mi gn đây, người ta mi phát
trin các ngôn ng cho phép chúng ta định nghĩa các kiu d liu tru tượng riêng.
I.4. Lp trình hướng đối tượng
Khái nim hướng đối tượng được xây dng trên nn tng ca khái nim lp trình có cu trúc và s tru
tượng hóa d liu. S thay đổi căn bn ch, mt chương trình hướng đối tượng được thiết kế xoay quanh
d liu mà chúng ta có th làm vic trên đó, hơn là theo bn thân chc năng ca chương trình. Điu này hoàn
toàn t nhiên mt khi chúng ta hiu rng mc tiêu ca chương trình là x lý d liu. Suy cho cùng, công vic
mà máy tính thc hin vn thường được gi là x lý d liu. D liu và thao tác liên kết vi nhau mt mc
cơ bn (còn có th gi là mc thp), mi th đều đòi hi th kia có mc tiêu c th, các chương trình
hướng đối tượng làm tường minh mi quan h này.
Lp trình hướng đối tượng (Object Oriented Programming - gi tt là OOP) hay chi tiết hơn là Lp trình
định hướng đối tượng, chính là phương pháp lp trình ly đối tượng làm nn tng để xây dng thut gii, xây
thông tin tài liệu
Tất tần tật về lập trình C+++
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×