lOMoARcPSD| 58707906
Tóm tắt kiến thức
1. Đối tượng: các thực thể trong hệ thống hoạt động khi chươngtrình
đang chạy
2. Lớp đối tượng: chỉ một tập hợp các đối tượng mặt trong
hệthống.
- Trừu tượng hóa đối tượng theo chức năng: quá trình mô hình
hoá phương thức của lớp dựa trên các hành động của các đối
tượng.
- Trừu tượng hóa đối tượng theo dữ liệu: quá trình mô hình hoá
các thuộc tính của lớp dựa trên các thuộc tính của các đối tượng
tương ứng.
3. Khái niệm kế thừa Cho
phép :
- Lớp dẫn xuất có thể sử dụng các thuộc tính và phương thức của lớpcơ
sở
- Việc chỉ cần cài đặt phương thức một lớp cơ sở, thể sử
dụngđược ở tất cả các lớp dẫn xuất
- Tránh sự cài đặt trùng lặp mã nguồn của chương trình
- Chỉ phải thay đổi một lần khi cần phải thay đổi dữ liệu của các lớp
4. Khái niệm đóng gói Cho
phép :
- Che dấu sự cài đặt chi tiết bên trong của phương thức
- Che dấu dữ liệu bên trong của đối tượng
- Hạn chế tối đa việc sửa lại mã chương trình
Khái niệm đa hình Cho
phép :
lOMoARcPSD| 58707906
- Các lớp được định nghĩa các phương thức trùng nhau: cùng tên, cùng
số
lượng và kiểu tham số, cùng kiểu trả về
5. Thành phần private và public
* Thành phần private
Khu vực dành riêng cho lớp, không chia sẻ với bất kì lớp khác từ n
ngoài
* Thành phần public
Khu vực mà Lớp thể chia sẻ với tất cả các chương trình và đối tượng
bên ngoài
CÁC MỞ RỘNG CỦA C++
Các từ khóa mới của C++: class, delete, friend, inline, new,
operator,private, protected, public, this, virtual
Cách ghi chú thích: hai kiểu chú thích /* chú thích */ //cthíchtrên
một dòng
Dòng nhập/xuất chuẩn: sử dụng cin/cout (iostream.h) để nhập/xuất
Cách chuyển đổi kiểu dữ liệu: kiểu(Biểu thức)
Vị trí khai báo biến: cho phép khai báo linh hoạt bất kỳ vị trí nàotrong
một phạm vi cho trước.Xen kẽ khai báo dữ liệu với các câu lệnh thực
hiện
Hằng định kiểuconst Kiểu Tên=Biểu_thức; const int
MAXSIZE=1000;
Đối với cấu trúc
typedef struct { int x,y, color; }PIXEL; const
PIXEL p={100, 100, 15};
lOMoARcPSD| 58707906
struct, union: thực sự các kiểu class.Tên của struct và union
đượcxem luôn là tên kiểu giống như khai báo bằng lệnh typedef
Toán tử định vị phạm viDùng để :
- Truy xuất một phần tử bị che bởi phạm vi hiện thời
- Định nghĩa hàm của các phương thức trong các lớp, để khai báo
cácphương
thức chủ của các phương thức đang định nghĩa
- Phân biệt các thành phần trùng tên của các lớp cơ sở
• Toán tử new, delete
- Là phương thức mới để thực hiện việc cấp phát động bộ nhớ
- Sử dụng hai toán tử này sẽ linh hoạt hơn rất nhiều so với các hàmthư
viện của C
• Hàm inline
- Hàm inline phải được định nghĩa trước khi sử dụng
- Trình biên dịch chèn trực tiếp đoạn chương trình vào chỗ hàm
đượcgọi
- Các hàm đệ quy không được là hàm inline
• Tham số giá trị mặc định
- Chỉ được khai báo trong prototype
- Phải được nhóm lại vào các tham số cuối
- Khi gọi chỉ có thể bỏ bớt từ phải sang trái và phải liên tiếp nhau
• Biến tham chiếu
- Biến tham chiếu giống như bí danh của biến khác
- Khai báo: Kiểu &Tên_biến
lOMoARcPSD| 58707906
- Nếu không muốn thay đổi giá trị của tham số qua biến tham chiếu
thìkhai báo: const kiểu &tên_biến
- Biến tham chiếu phải được khởi động khi khai báo
• Chồng hàm
- Cho phép sử dụng một tên cho nhiều hàm khi các hàm đó khác nhau
về kiểu giá trị trả về hoặc danh sách các tham số
Chồng toán tử
Kiểu operator kí_hiệu_toán_tử (Các_tham_số) { ………}
LỚP VÀ ĐỐI TƯỢNG
Lớp: sự m rộng của các khái niệm cấu trúc của C bản ghi
củaPascal.
Ngoài các thành phần dữ liệu, lớp còn chứa các thành phần hàm
(phương thức hay hàm thành viên)
class Tên_lớp
{ //Khai báo các thành phần dữ liệu (thuộc tính) //Khai báo các phương
thức
};
Biến, mảng và đối tượng
Tên_lớp danh_sách_biến; //Ngăn cách bằng dấu phẩy Tên_lớp
danh_sách_mảng; //Ngăn cách bằng dấu phẩy
Con trỏ đối tượng
Tên_lớp danh_sách_con_trỏ;
Con trỏ this
lOMoARcPSD| 58707906
tham số thứ nhất của phương thức. Tham số truyền cho đối con tr
this địa chỉ của đối tượng đi kèm với phương thức trong lời gọi
phương thức
Hàm
Phạm vi của hàm toàn bộ chương trình, phương thức có thể sử dụng
Tham số của hàm có thể là các đối tượng, trong thân hàm không được
phép truy cập tới các thuộc tính private
Hàm bạn
Dùng từ khóa friend để khai báo
Có thể truy nhập tới các thuộc tính của đối tượng thuộc lớp đó
HÀM TẠO
Là một phương thức của lớp dùng để tạo dựng một đối tượng mới.Tên
của hàm phải trùng với tên của lớp.Không có kiểu, không có giá trị trả
về
Hàm tạo sao chép
Được xây dựng bằng cách sử dụng một đối kiểu tham chiếu đối tượng
để khởi tạo một đối tượng mới
Tên_lớp(const Tên_lớp &Đối_tượng)
{
//Các câu lệnh gán thuộc tính }
Hàm hủy
Hàm hủy được gọi khi giải phóng một đối tượng
Tên_lớp()
{
//các lệnh
lOMoARcPSD| 58707906
}
ĐỊNH NGHĨA CÁC PHÉP TOÁN CHO LỚP
Cho phép chồng các toán tử đã tồn tại để chúng ý nghĩa thích hợp
với các kiểu mới
Viết một định nghĩa hàm với tên hàm là từ khóa operator theo sau là kí
hiệu của toán tử được chồng type operator op_symbol (parameters)
Hàm toán tử
Nếu hàm toán tử không thành viên của một lớp thường các hàm
friend
Hàm chồng toán tử << >> Phải một toán hạng trái của
kiểuostream &, istream &
Không là hàm thành viên
Chồng các toán tử hai ngôi
Là hàm thành viên không tĩnh với một tham số
Hoặc như một hàm không thành viên với hai tham số
Chồng các toán tử một ngôi
Như một hàm thành viên không tĩnh không có tham số
Hoặc như một hàm không thành viên với một tham số
Chồng một số toán tử đặc biệt
Toán tử []
Dùng để truy cập đến một phần tử của mảng
Toán tử ()
Dùng để gọi hàm
Sự kế thừa và tính đa hình
lOMoARcPSD| 58707906
Sự kế thừa
Cho phép tạo một lớp mới từ một lớp đã có
Cách xây dựng lớp dẫn xuất
class tên_lớp_dẫn_xuất: public tên_lớp_cơ sở
{ …. };
CÁC KIỂU DẪN XUẤT
Dẫn xuất public
Các thành phần, các hàm bạn và các đối tượng của lớp dẫn xuất không
thể truy nhập đến các thành phần private của lớp cơ sở.
Các thành phần protected trong lớp sở trở thành các thành phần
private trong lớp dẫn xuất
Dẫn xuất private
Public trong lớp sở không thể truy nhập được từ các đối tượng của
lớp dẫn xuất
Các thành phần protected trong lớp sở thể truy nhập được từ các
hàm thành phần và các hàm bạn của lớp dẫn xuất.
Dẫn xuất protected
Các thành phần public và protected trong lớp sở thành các thành
phần
protected trong lớp dẫn xuất
Hàm tạo trong lớp dẫn xuất
Trong định nghĩa hàm tạo trong lớp dẫn xuất, tả lời gọi tới một trong
các hàm tạo của lớp cơ sở
Tên_lớp_dẫn_xuất (các tham số): tên_lớp_cơ_sở (các tham số) {}
lOMoARcPSD| 58707906
Đa kế thừa: tạo một lớp dẫn xuất từ nhiều hơn một lớp cơ sở
Hàm ảo
Dùng để khai báo một hàm trong lớp cơ sở mà m đó được định nghĩa
lại trong lớp dẫn xuất đviệc sử dụng con trỏ tới các đối tượng thuộc
lớp này là thích hợp
Trừu tượng hóa lớp cơ sở
Hàm ảo thuần túy là hàm không phần định nghĩa Cách
viết:
class A { public: virtual F()=0;
//hàm ảo thuần túy ………… }
Tính đa hình: khả năng thiết kế cài đặt các hệ thống thểm
rộng dễ dàng hơns

Preview text:

lOMoAR cPSD| 58707906
Tóm tắt kiến thức
1. Đối tượng: các thực thể trong hệ thống hoạt động khi chươngtrình đang chạy
2. Lớp đối tượng: chỉ một tập hợp các đối tượng có mặt trong hệthống.
- Trừu tượng hóa đối tượng theo chức năng: quá trình mô hình
hoá phương thức của lớp dựa trên các hành động của các đối tượng.
- Trừu tượng hóa đối tượng theo dữ liệu: quá trình mô hình hoá
các thuộc tính của lớp dựa trên các thuộc tính của các đối tượng tương ứng.
3. Khái niệm kế thừa Cho phép :
- Lớp dẫn xuất có thể sử dụng các thuộc tính và phương thức của lớpcơ sở
- Việc chỉ cần cài đặt phương thức ở một lớp cơ sở, mà có thể sử
dụngđược ở tất cả các lớp dẫn xuất
- Tránh sự cài đặt trùng lặp mã nguồn của chương trình
- Chỉ phải thay đổi một lần khi cần phải thay đổi dữ liệu của các lớp
4. Khái niệm đóng gói Cho phép :
- Che dấu sự cài đặt chi tiết bên trong của phương thức
- Che dấu dữ liệu bên trong của đối tượng
- Hạn chế tối đa việc sửa lại mã chương trình
• Khái niệm đa hình Cho phép : lOMoAR cPSD| 58707906
- Các lớp được định nghĩa các phương thức trùng nhau: cùng tên, cùng số
lượng và kiểu tham số, cùng kiểu trả về
5. Thành phần private và public * Thành phần private
Khu vực dành riêng cho lớp, không chia sẻ với bất kì lớp khác từ bên ngoài * Thành phần public
Khu vực mà Lớp có thể chia sẻ với tất cả các chương trình và đối tượng bên ngoài CÁC MỞ RỘNG CỦA C++
• Các từ khóa mới của C++: class, delete, friend, inline, new,
operator,private, protected, public, this, virtual
• Cách ghi chú thích: hai kiểu chú thích /* chú thích */ và //chú thíchtrên một dòng
• Dòng nhập/xuất chuẩn: sử dụng cin/cout (iostream.h) để nhập/xuất
• Cách chuyển đổi kiểu dữ liệu: kiểu(Biểu thức)
• Vị trí khai báo biến: cho phép khai báo linh hoạt bất kỳ vị trí nàotrong
một phạm vi cho trước.Xen kẽ khai báo dữ liệu với các câu lệnh thực hiện • Hằng định kiểuconst Kiểu Tên=Biểu_thức; const int MAXSIZE=1000; • Đối với cấu trúc
typedef struct { int x,y, color; }PIXEL; const PIXEL p={100, 100, 15}; lOMoAR cPSD| 58707906
• struct, union: thực sự là các kiểu class.Tên của struct và union
đượcxem luôn là tên kiểu giống như khai báo bằng lệnh typedef
• Toán tử định vị phạm viDùng để :
- Truy xuất một phần tử bị che bởi phạm vi hiện thời
- Định nghĩa hàm của các phương thức trong các lớp, để khai báo cácphương
thức chủ của các phương thức đang định nghĩa
- Phân biệt các thành phần trùng tên của các lớp cơ sở • Toán tử new, delete
- Là phương thức mới để thực hiện việc cấp phát động bộ nhớ
- Sử dụng hai toán tử này sẽ linh hoạt hơn rất nhiều so với các hàmthư viện của C • Hàm inline
- Hàm inline phải được định nghĩa trước khi sử dụng
- Trình biên dịch chèn trực tiếp đoạn chương trình vào chỗ hàm đượcgọi
- Các hàm đệ quy không được là hàm inline
• Tham số giá trị mặc định
- Chỉ được khai báo trong prototype
- Phải được nhóm lại vào các tham số cuối
- Khi gọi chỉ có thể bỏ bớt từ phải sang trái và phải liên tiếp nhau • Biến tham chiếu
- Biến tham chiếu giống như bí danh của biến khác
- Khai báo: Kiểu &Tên_biến lOMoAR cPSD| 58707906
- Nếu không muốn thay đổi giá trị của tham số qua biến tham chiếu
thìkhai báo: const kiểu &tên_biến
- Biến tham chiếu phải được khởi động khi khai báo • Chồng hàm
- Cho phép sử dụng một tên cho nhiều hàm khi các hàm đó khác nhau
về kiểu giá trị trả về hoặc danh sách các tham số • Chồng toán tử
Kiểu operator kí_hiệu_toán_tử (Các_tham_số) { ………} LỚP VÀ ĐỐI TƯỢNG
• Lớp: là sự mở rộng của các khái niệm cấu trúc của C và bản ghi củaPascal.
Ngoài các thành phần dữ liệu, lớp còn chứa các thành phần hàm
(phương thức hay hàm thành viên) • class Tên_lớp
{ //Khai báo các thành phần dữ liệu (thuộc tính) //Khai báo các phương thức };
• Biến, mảng và đối tượng
Tên_lớp danh_sách_biến; //Ngăn cách bằng dấu phẩy Tên_lớp
danh_sách_mảng; //Ngăn cách bằng dấu phẩy • Con trỏ đối tượng
Tên_lớp danh_sách_con_trỏ; • Con trỏ this lOMoAR cPSD| 58707906
Là tham số thứ nhất của phương thức. Tham số truyền cho đối con trỏ
this là địa chỉ của đối tượng đi kèm với phương thức trong lời gọi phương thức • Hàm
Phạm vi của hàm toàn bộ chương trình, phương thức có thể sử dụng
Tham số của hàm có thể là các đối tượng, trong thân hàm không được
phép truy cập tới các thuộc tính private • Hàm bạn
Dùng từ khóa friend để khai báo
Có thể truy nhập tới các thuộc tính của đối tượng thuộc lớp đó HÀM TẠO
Là một phương thức của lớp dùng để tạo dựng một đối tượng mới.Tên
của hàm phải trùng với tên của lớp.Không có kiểu, không có giá trị trả về • Hàm tạo sao chép
Được xây dựng bằng cách sử dụng một đối kiểu tham chiếu đối tượng
để khởi tạo một đối tượng mới
Tên_lớp(const Tên_lớp &Đối_tượng) {
//Các câu lệnh gán thuộc tính } • Hàm hủy
Hàm hủy được gọi khi giải phóng một đối tượng Tên_lớp() { //các lệnh lOMoAR cPSD| 58707906 }
ĐỊNH NGHĨA CÁC PHÉP TOÁN CHO LỚP
Cho phép chồng các toán tử đã tồn tại để chúng có ý nghĩa thích hợp với các kiểu mới
Viết một định nghĩa hàm với tên hàm là từ khóa operator theo sau là kí
hiệu của toán tử được chồng type operator op_symbol (parameters) • Hàm toán tử
Nếu hàm toán tử không là thành viên của một lớp thường là các hàm friend
• Hàm chồng toán tử << và >> Phải có một toán hạng trái của
kiểuostream &, istream & Không là hàm thành viên
• Chồng các toán tử hai ngôi
Là hàm thành viên không tĩnh với một tham số
Hoặc như một hàm không thành viên với hai tham số
• Chồng các toán tử một ngôi
Như một hàm thành viên không tĩnh không có tham số
Hoặc như một hàm không thành viên với một tham số
Chồng một số toán tử đặc biệt • Toán tử []
Dùng để truy cập đến một phần tử của mảng • Toán tử () Dùng để gọi hàm
Sự kế thừa và tính đa hình lOMoAR cPSD| 58707906 • Sự kế thừa
Cho phép tạo một lớp mới từ một lớp đã có
• Cách xây dựng lớp dẫn xuất
class tên_lớp_dẫn_xuất: public tên_lớp_cơ sở { …. }; CÁC KIỂU DẪN XUẤT • Dẫn xuất public
Các thành phần, các hàm bạn và các đối tượng của lớp dẫn xuất không
thể truy nhập đến các thành phần private của lớp cơ sở.
Các thành phần protected trong lớp cơ sở trở thành các thành phần
private trong lớp dẫn xuất • Dẫn xuất private
Public trong lớp cơ sở không thể truy nhập được từ các đối tượng của lớp dẫn xuất
Các thành phần protected trong lớp cơ sở có thể truy nhập được từ các
hàm thành phần và các hàm bạn của lớp dẫn xuất. • Dẫn xuất protected
Các thành phần public và protected trong lớp cơ sở thành các thành phần
protected trong lớp dẫn xuất
• Hàm tạo trong lớp dẫn xuất
Trong định nghĩa hàm tạo trong lớp dẫn xuất, mô tả lời gọi tới một trong
các hàm tạo của lớp cơ sở
Tên_lớp_dẫn_xuất (các tham số): tên_lớp_cơ_sở (các tham số) {} lOMoAR cPSD| 58707906
• Đa kế thừa: tạo một lớp dẫn xuất từ nhiều hơn một lớp cơ sở • Hàm ảo
Dùng để khai báo một hàm trong lớp cơ sở mà hàm đó được định nghĩa
lại trong lớp dẫn xuất để việc sử dụng con trỏ tới các đối tượng thuộc lớp này là thích hợp
• Trừu tượng hóa lớp cơ sở
Hàm ảo thuần túy là hàm không có phần định nghĩa Cách viết:
class A { public: virtual F()=0;
//hàm ảo thuần túy ………… }
• Tính đa hình: là khả năng thiết kế và cài đặt các hệ thống mà có thểmở rộng dễ dàng hơns