Professional Documents
Culture Documents
Giới thiệu
Kiến thức cơ bản về Class
+ Menber Funtions ( Hàm thành phần); Default Copying(Bản sao mặc định); Access
Control(Kiểm soát truy cập); class and struct (Lớp và cấu trúc); Constructors( Khởi tạo); explicit
Constructors( khởi tạo tường minh); In-Class Initializers (Bộ khởi tạo trong Class); In-Class
Function Definitions(Định nghĩa hàm trong Class); Mutability(Tính đột biến); Self-Refer-
ence(Tự tham khảo); Member Access(Truy cập thành phần); static Members(Thành phần tĩnh );
Member Types(Các loại thành phần).
+ Concrete Classes (Lớp khởi tạo đối tượng)
- Menber Funtions (Hàm thành phần); Helper Functions(Người trợ giúp); Overloaded
Operators (Nạp chồng toán tử); The Significance of Concrete (Tầm quan trọng của
lớp cụ thể hay lớp không trừu tượng)
Lời khuyên
16.1 Introduction
C++ classes là một công cụ cho việc tạo ra các kiểu mới có thể sử dụng thuận tiện như những kiểu đã
được tích hợp sẵn. Ngoài ra, Lớp dẫn xuất (Derived classes) (§3.2.4, Chương 20) và temblates (§3.4,
Chương 23) cho phép các lập trình viên thể hiện ( phân cấp và tham số) các mối quan hệ giữa các class và
tận dụng các mối quan hệ đó.
Mỗi kiểu là đại diện cụ thể cho một khái niệm (ý tưởng, khái niệm,…). Ví dụ, kiểu float tích hợp trong
C++ với các phép toán +,-,*,… của nó, cung cấp một sự gần đúng cụ thể của khái niệm toán học về một
số thực. Một Class là một kiểu do người dùng định nghĩa. Chúng ta thiết kế ra một kiểu mới để tạo ra một
định nghĩa mà chưa được tích hợp sẵn. Ví dụ: chúng ta có thể cung cấp loại Trunk_line trong chương
trình xử lý điện thoại, loại Explosion cho trò chơi điện tử hoặc loại danh sách <Paragraph> cho chương
trình xử lý văn bản. Một chương trình tạo ra với các kiểu tương thích với các khái niệm của chương trình
đó thì sẽ dễ hiểu hơn, dễ lập luận hơn, dễ sửa đổi hơn so với một chương trình ngược lại. Việc xác định
chính xác các kiểu cũng giúp cho chương trình trở nên ngắn gọn hơn. Ngoài ra, nó làm cho nhiều loại
phân tích code có thể thực hiện được. Đặc biệt, nó cho phép trình biên dịch phát hiện ra việc sử dụng các
đối tượng bất hợp pháp mà nếu không thì chỉ được tìm thấy thông qua kiểm tra toàn diện.
Ý tưởng trong việc xác định một kiểu mới là tách các chi tiết ngẫu nhiên của việc triển khai (ví dụ: bố cục
của dữ liệu được sử dụng để lưu trữ một đối tượng của kiểu) khỏi các thuộc tính cần thiết nhằm sử dụng
nó một cách chính xác (ví dụ: danh sách đầy đủ của các hàm có thể truy cập dữ liệu). Sự tách biệt như vậy
được thể hiện tốt nhất bằng cách phân luồng tất cả các mục đích sử dụng cấu trúc dữ liệu và các quy trình
‘’ vệ sinh nội bộ`` của nó thông qua một giao diện cụ thể.
Chương này tập trung vào các kiểu tương đối đơn giản '' cụ thể '' do người dùng xác định mà về mặt logic
không khác nhiều so với các kiểu tích hợp sẵn:
§16.2 Khái niệm cơ bản về lớp, Cơ sở cơ bản để xác định một lớp và các thành phần
của nó.
§16.3 Lớp cụ thể: thảo luận về việc trình bày các lớp cụ thể đẹp và hiệu quả.
Các chương sau đi vào chi tiết hơn và trình bày các lớp trừu tượng và cấu trúc phân cấp lớp:
Chương 17 Xây dựng, Hủy bỏ, Sao chép và Di chuyển trình bày nhiều cách khác nhau để kiểm soát việc
khởi tạo các đối tượng của một lớp, cách sao chép và di chuyển các đối tượng cũng như cách cung cấp ''
các hành động dọn dẹp '' sẽ được thực hiện khi một đối tượng bị phá hủy ( ví dụ: vượt ra khỏi phạm vi).
Chương 18 Nạp chồng toán tử, giải thích cách xác định các toán tử đơn phân và nhị phân (VD:+, ∗, !) cho
các loại do người dùng xác định và cách sử dụng chúng.
Chương 19: Toán tử đặc biệt, cách xác định và sử dụng các toán tử (VD: [],(),->,new) , “Đặc biệt” ở chỗ
chúng được sử dụng bằng những cách khác với toán tử số học và logic. Đặc biệt, chương này chỉ ra cách
định nghĩa một String Class.
Chương 20: Lớp dẫn xuất (Derived classes) giới thiệu các tính năng cơ của của ngôn ngữ hỗ trợ lập trình
hướng đối tượng. Các lớp cơ sở và lớp dẫn xuất, các hàm ảo , kiểm soát truy cập được bảo đảm.
Chương 21: Lớp kế thừa (Class Hierarchies) sử dụng các lớp cơ sở và lớp dẫn xuất để xây dựng code
xung quanh khái niệm lớp kế thừa. Phần lớn chương này nói về các kỹ thuật lập trình, nhưng vẫn đề cập
đến kỹ thuật đa kế thừa(Các lớp có nhiều hơn một lớp cơ sở).
Chương 22: Run-time type information (RTTI) mô tả các kỹ thuật để điều hướng một cách rõ ràng các
cấu trúc lớp kế thừa. Cụ thể, các loại thay đổi kiểu dynamic_cast và static_cast được nêu rõ, cũng như xác
định kiểu của một đối tượng cho một trong các lớp cơ sở của nó (typeid).
16.2 Lớp cơ sở
Nội dung cơ bản:
today.init(16,10,1996);
my_bir thday.init(30,12,1950);