HỌ C VIỆ N CÔ NG NGHỆ BƯU CHÍ NH VIỄ N THÔ NG
CƠ SỞ TẠ I TP. HỒ CHÍ MINH
Bà i giảng:
LẬP TRÌNH
H ƯỚ N G ĐO Á I T Ư N G
Tà i liệ u dù ng cho hệ Đạ i họ c
ngà nh Cô ng nghệ thô ng tin & Điệ n tử – Viễ n thô ng
đã đượ c Hộ i đồ ng khoa họ c Khoa Cô ng nghệ thô ng tin 2
thô ng qua ngà y 16/1/2002
(Tập 1)
Biên soạn:
Th.S. NGUYỄ N VIỆ T CƯỜ NG
LƯU HÀ NH NỘ I BỘ
Tp. Hồ Chí Minh – Nă m 2002
ii
Lời nói đầu
Bài giảng được biên soạn dựa trên các tài liệu của Herbert Schildt và Bjarne
Stroustrup do có tính sư phạm cao và dựa trên một số tài liệu khác.
Nội dung bài giảng có 12 chương, giới thiệu các khái niệm căn bản, các nền tảng
của lập trình hướng đối tượng (Object-Oriented Programming) bao gồm :
•
tính đóng gói (Encapsulation)
•
tính kế thừa (Inheritance)
•
tính đa hình (Polymorphism)
•
quá tải hàm và toán tử (Function & Operator Overloading)
•
template và điều khiển ngoại lệ (Exception Handling)
•
vấn đề phát triển hệ thống hướng đối tượng
•
minh họa một số ứng dụng của lập trình hướng đối tượng với C++ trong môi
trường DOS và Windows.
Ngôn ngữ lập trình C++ được sử dụng trong bài giảng nhằm minh họa các ý tưởng
của lập trình hướng đối tượng, do đó các kiến thức về C++ được trình bày đan xen
trong một số chương giúp sinh viên dễ dàng lónh hội các khái niệm khá trừu tượng
của lập trình hướng đối tượng.
Bài giảng không có tham vọng đi sâu mọi khía cạnh của lập trình hướng đối tượng,
chỉ trình bày các kiến thức căn bản và qua các ví dụ minh họa hy vọng sẽ giúp ích
cho sinh viên ngành công nghệ thông tin và điện tử viễn thông bước đầu tìm hiểu thế
giới lập trình.
Các ví dụ minh họa đã chạy tốt trên các trình biên dòch Borland C++ 4.5 hoặc Visual
C++ 6.0
Bài giảng được phân làm hai tập, tập 1 từ chương 1 đến chương 8, tập 2 từ chương 9
đến chương 12.
Rất mong các đồng nghiệp và các sinh viên đóng góp ý kiến xây dựng để bài giảng
được hoàn thiện hơn trong các lần soạn thảo về sau.
Tháng 8 năm 2001
Th. S. Nguyễn Việt Cường
E-mail:
iii
Mục lục
Tập 1
Chương 1
Tổng quan về Lập trình hướng đối tượng
I. Vài nét về sự phát triển của các ngôn ngữ lập trình............................1
II. Các khái niệm cơ bản của lập trình hướng đối tượng..........................4
1.
Lớp và Đối tượng (Class & Object).........................................4
2.
Thông báo (Message)...............................................................5
3.
Tính đóng gói (Encapsulation) .................................................5
4.
Tính kế thừa (Inheritance)........................................................6
5.
Tính đa hình (Polymorphism)...................................................7
III. Tổng quan về ngôn ngữ lập trình hướng đối tượng C++ .....................7
1.
Xuất/Nhập (Console I/O) .........................................................7
2.
Chú thích (Comment) .............................................................10
3.
Khái niệm về quá tải hàm (Function Overloading)................11
4.
Các từ khoá (Keywords) trong C++........................................14
Chương 2
Lớp, Đối tượng và Tính đóng gói.................................
15
I. Lớp .................................................................................................17
II. Hàm tạo, hàm hủy ..........................................................................22
III. Tham số của hàm tạo .....................................................................30
IV. Nội tuyến tự động ..........................................................................37
V. Gán đối tượng .................................................................................39
VI. Truyền các đối tượng sang hàm......................................................45
VII. Trả đối tượng từ hàm ......................................................................53
VIII. Hàm friend......................................................................................56
IX. Bài tập chương 2 .............................................................................62
Chương 3
Mảng , Con trỏ và Tham chiếu
.......................................67
I. Mảng các đối tượng ........................................................................69
II. Con trỏ đối tượng ............................................................................72
iv
III. Con trỏ this......................................................................................75
IV. Toán tử new và delete ....................................................................78
V. Tham chiếu (reference) ..................................................................86
VI. Truyền tham chiếu cho đối tượng ...................................................91
VII. Trả về các tham chiếu.....................................................................95
VIII. Các tham chiếu độc lập và các hạn chế..........................................98
IX. Bài tập chương 3 ...........................................................................100
Chương 4
Quá tải hàm
.....................................................................103
I. Quá tải hàm tạo ...............................................................................105
II. Hàm tạo bản sao ..............................................................................109
III. Sử dụng các đối số mặc đònh (default argument) ...........................119
IV. Sự quá tại và tính không xác đònh (ambiguity)................................126
V. Điạ chỉ của hàm quá tải...................................................................130
VI. Bài tập chương 4..............................................................................132
Chương 5
Quá tải toán tử
.................................................................135
I. Quá tải toán tử ................................................................................137
II. Quá tải toán tử nhò nguyên ..............................................................138
III. Quá tải toán tử quan hệ & luận lý ...................................................144
IV. Quá tải toán tử đơn nguyên .............................................................146
V. Hàm toán tử friend...........................................................................149
VI. Toán tử gán......................................................................................155
VII. Bài tập chương 5..............................................................................158
Chương 6
Tính kế thừa
...................................................................163
I. Giới thiệu tính kế thừa.....................................................................165
II. Điều khiển truy cập lớp cơ sở..........................................................171
III. Sử dụng các thành viên được bảo vệ ...............................................176
IV. Hàm tạo, hàm hủy và tính kế thừa ..................................................181
V. Tính đa kế thừa................................................................................189
VI. Lớp cơ sở ảo.....................................................................................196
VII. Bài tập chương 6..............................................................................201
v
Chương 7
Hệ thống Nhập/Xuất C++
.............................................207
I. Cơ sở Nhập/Xuất C++ .....................................................................209
II. Nhập/Xuất có đònh dạng..................................................................210
III. Sử dụng width(), precision() và fill()...............................................218
IV. Sử dụng bộ thao tác Nhập/Xuất....................................................... 220
V. Tạo bộ chèn..................................................................................... 223
VI. Tạo bộ chiết.....................................................................................230
VII. Bài tập chương 7.............................................................................. 234
Chương 8
Nhập/Xuất C++ nâng cao
..............................................237
I. Tạo Bộ thao tác Nhập/Xuất.............................................................239
II. Nhập/Xuất File................................................................................243
III. Nhập/Xuất File nhò phân không đònh dạng .....................................251
IV. Các hàm Nhập/Xuất nhò phân .........................................................258
V. Truy cập ngẫu nhiên........................................................................261
VI. Kiểm tra trạng thái Nhập/Xuất........................................................265
VII. Nhập/Xuất theo đơn đặt hàng và các File.......................................269
VIII. Nhập/Xuất theo mảng .....................................................................272
IX. Bài tập chương 8..............................................................................277
Tập 2
Chương 9
Tính đa hình
....................................................................281
I. Con trỏ và Lớp dẫn xuất ................................................................283
II. Dẫn nhập các hàm ảo ......................................................................285
III. Các hàm ảo thuần túy......................................................................295
IV. Áp dụng đa hình ..............................................................................299
V. Bài tập chương 9..............................................................................309
Chương 10
Template và điều khiển ngoại lệ
.................................311
I. Hàm template..................................................................................313
II. Lớp template ...................................................................................319