Nếu lớp lồng được khai báo với từ khoá private thì đối tượng của lớp lồng chỉ được tạo ra trong thân của lớp ngoài. Các quy tắc truy nhập khác vấn được áp dụng.[r]
Trang 1CHƯƠNG 3: LỚP (Class)
Trang 31 Lớp và các thành phần của lớp
định nghĩa các kiểu dữ liệu phức tạp
(user-defined types) và được sử dụng tương tự như kiểu dữ liệu có sẵn (built-in data types).
vấn đề trừu tượng như: số phức, ngày tháng, vector …
(implementation) và phần giao diện
(interface).
Trang 4Định nghĩa lớp …
Một lớp có chứa dữ liệu (member data)
và hàm (member function).
Class data1 data2 data3
functiona() functionb() functionc()
Trang 5Khai báo lớp
{
private: // từ khóa cho biết không thể truy nhập từ ngoài lớp
unsigned int EmpID ; // member data
char EmpName[30];
float EmpSalary;
public: // từ khóa cho biết có thể truy nhập từ ngoài lớp
void AddEmployee(); // member function
};
Trang 6Điều khiển truy nhập
Class private:
public:
data1 data2 functiond()
Phần được khai báo với từ khóa public có thể được truy nhập tạibất kỳ nơi nào trong chương trình
Trang 7Ẩn dữ liệu
Ẩn dữ liệu là kỹ thuật bảo vệ dữ liệu khỏi những truy nhập không hợp lệ.
Đặt dữ liệu vào lớp với từ khóa private
Dữ liệu private chỉ được truy nhập bên
trong lớp
Dữ liệu hoặc hàm public có thể được truy nhập từ bên ngoài lớp.
Trang 82 Cài đặt các thành phần của lớp
Dữ liệu thành phần
Nên được khai báo với từ khoá private.
Không được khởi tạo giá trị của dữ liệu thành
phần trong định nghĩa lớp.
Trang 10 Sự tồn tại của dữ liệu thành phần tĩnh
không phụ thuộc vào sự tồn tại của đối
tượng thuộc lớp.
Sau khi khai báo thành phần dữ liệu tĩnh ở trong lớp, phải khởi tạo giá trị cho nó ở
bên ngoài lớp.
Trang 11Ví dụ: thành phần dữ liệu tĩnh
Trang 13Ví dụ: hàm thành phần tĩnh
Trang 15Ví dụ: khai báo lớp lồng
Trang 17Ví dụ: Khai báo đối tượng
Trang 18Đối tượng của lớp lồng
Nếu lớp lồng được khai báo với từ khoá private thì đối tượng của lớp lồng chỉ được tạo ra trong thân của lớp ngoài
Các quy tắc truy nhập khác vấn được áp dụng
Trang 20Ví dụ: Hàm tạo mặc định
Trang 21Chồng hàm tạo
Một lớp có thể có nhiều hàm tạo với các tham số khác nhau (chồng hàm tạo)
Trang 22Hàm tạo với giá trị mặc định
class Date
{
public:
// hàm tạo với các giá trị mặc định cu ủa day, month, year.
Date(int d=1, int m=1, int y=1900);
Trang 24Hàm hủy (Destructor)
Hàm hủy tự động được gọi khi đối tượng bị hủy
Hàm hủy thường được sử dụng để giải phóng bộ nhớ
Trang 257 Sử dụng đối tượng
Đối tượng làm tham số để truyền cho các hàm tương
tự như các kiểu xây dựng sẵn khác.
Trang 26Ví dụ: Đối tượng làm tham số
Trang 27Ví dụ: Đối tượng làm tham số
object d2
day month year
object d1
day month year d2.add_days(d1,65);
đối tượng d1
Trang 29int year() const; // const
void add_year(int n); // non-const
Trang 30Hàm thành phần hằng
Const member function có thể được cả đối tượng const và const viện dẫn, nhưng non-const member function thì chỉ được các đối tượng non-const viện dẫn
non-void f(Date& d, const Date& cd)
Trang 31Tự tham chiếu ( Self-Reference )
Mỗi hàm thành phần biết đối tượng nào viện dẫn nó và có thể truy cập tới đối tượng đó một cách rõ ràng thông qua con trỏ this.