Bài giảng Lập trình hướng đối tượng - Chương 3: Constructor, Destructor, Getter, Setter - Nguyễn Việt Nam Sơn
Constructor & Destructor
Getter & Setter
1
Constructor - Destructor - Getter - Setter
2
1. PHƯƠNG THỨC KHỞI TẠO (CONSTRUCTOR)
2. PHƯƠNG THỨC PHÁ HỦY (DESTRUCTOR)
3. GIẢI ĐÁP NHỮNG LƯU Ý
4. GETTER & SETTER
5. BÀI TẬP Ứ NG DỤNG TẠI LỚP
6. BÀI TẬP VỀ NHÀ
Constructor - Destructor - Getter - Setter
3
Chuyện gì sẽ xảy ra nếu như người lập trình sử dụng 1 đối
tượng trong khi đối tượng đó chưa hề được khởi tạo ra ?
Trả lời: Các thành phần thuộc tính của đối tượng sẽ nhận giá trị rác từ vùng
nhớ (do còn sót lại trước đó) hoặc phải nhận 1 giá trị không mong muốn nào
đó.
=> Mục đích của phương thức khởi tạo đó là nhằm khởi tạo các thành
phần dữ liệu (thuộc tính) của đối tượng.
Câu Lệnh Điều Kiện - Câu Lệnh Rẽ Nhánh
4
1. Tên phương thức trùng với tên lớp và không trả về giá trị (nhưng có
thể có tham số nhé).
2. Tự động được gọi thực thi ngay khi đối tượng của lớp đó được tạo
lập ra (có bao nhiêu đối tượng được tạo ra thì sẽ có bấy nhiêu lần
phương thức đó được gọi thực thi).
3. Có thể có nhiều phương thức khởi tạo bên trong 1 lớp (cơ chế nạp
chồng overloading do phân biệt nhau qua tham số truyền vào).
Constructor - Destructor - Getter - Setter
5
1.Phương thức khởi tạo mặc định (Default Constructor)
2.Phương thức khởi tạo có tham số truyền vào
(Constructor With Paramater)
3.Phương thức khởi tạo sao chép (Copy Constructor)
Constructor - Destructor - Getter - Setter
6
- Là phương thức khởi tạo không có tham số đầu vào.
- Mặc định trình biên dịch sẽ phát sinh sẵn phương thức khởi
tạo mặc định nếu như bản thân lớp đó không có bất kỳ
phương thức khởi tạo nào khác. (Lưu ý số 1)
Constructor - Destructor - Getter - Setter
7
File: HocSinh.h
File: HocSinh.cpp
Constructor - Destructor - Getter - Setter
8
Là phương thức khởi tạo nhận tham số đầu vào
“tùy ý” do người dùng định nghĩa, sẽ lấy đó làm
dữ liệu tạo cho đối tượng.
Constructor - Destructor - Getter - Setter
9
File: HocSinh.h
File: HocSinh.cpp
Constructor - Destructor - Getter - Setter
10
Là phương thức khởi tạo nhận tham số đầu vào là 1 đối tượng cùng
thuộc lớp đó, nó truyền dữ liệu qua cho đối tượng đang xét để tạo lập
nên đối tượng đó.
Bản chất là C++ đã cung cấp sẵn cho ta phương thức khởi tạo sao chép
và ta có thể sử dụng bình thường không cần phải tạo ra lại 1 phương
thức khác, nhưng tùy trường hợp mà ta phải chủ động tạo ra phương
thức khởi tạo sao chép chứ không thể sử dụng của hệ thống có sẵn
Constructor - Destructor - Getter - Setter
(Lưu ý số 2)
11
File: HocSinh.h
File: HocSinh.cpp
Constructor - Destructor - Getter - Setter
12
- Giúp dọn dẹp chương trình sau khi đối tượng đã
thực thi xong.
- Công việc chủ yếu là thu hồi tất cả các tài
nguyên đã cấp phát cho đối tượng trong giai
đoạn lúc đối tượng còn đang thực thi.
- Lưu ý số 3
Constructor - Destructor - Getter - Setter
13
1.Tên phương thức trùng với tên lớp và có dấu ~ đặt ở ngay
phía trước.
2.Không có tham số đầu vào và cũng không có giá trị trả về.
3.Chỉ có duy nhất 1 phương thức phá hủy ở 1 lớp.
4.Ngầm định tự động chạy sau khi đối tượng hết phạm vi sử
dụng.
=> Phương thức phá hủy chỉ chạy duy nhất 1 lần trong
quá trình sống của 1 đối tượng.
Constructor - Destructor - Getter - Setter
14
File: HocSinh.h
File: HocSinh.cpp
Constructor - Destructor - Getter - Setter
15
Khi ta khởi tạo 1 đối tượng thì phương thức thiết lập mặc
định của đối tượng đó tự động được gọi lên do trình biên
dịch hỗ trợ (mặc dù ta không cần khai báo), nhưng nếu
trong bài ta có sử dụng đến các phương thức thiết lập khác
như phương thức thiết lập nhận tham số đầu vào, phương
thức thiết lập sao chép thì bắt buộc ta phải khai báo ra
phương thức thiết lập mặc định vì lúc này trình biên dịch sẽ
không hỗ trợ nữa, nếu không ta sẽ bị lỗi chương trình, cụ thể
Constructor - Destructor - Getter - Setter
là: "no appropriate default constructor available".
16
Nếu kiểu dữ liệu của các thành phần dữ liệu (thuộc tính) bên trong 1
lớp đối tượng không phải là kiểu dữ liệu con trỏ thì ta không cần phải
cài đặt phương thức tạo lập sao chép cho lớp (C++ đã cung cấp sẵn
cho ta phương thức tạo lập sao chép mặc định), tuy nhiên nếu đề bài
yêu cầu thì cứ khai báo cũng chả chết. Còn nếu 1 lớp đối tượng có
thuộc tính là con trỏ thì bắt buộc ta phải khai báo phương thức thiết
lập sao chép cho lớp đó chứ không thể dùng phương thức tạo lập sao
chép mặc định do C++ cung cấp (vì nó chỉ sao chép địa chỉ của con
trỏ chứ không thật sự sao chép vùng nhớ mà chúng quản lý - dẫn đến
2 đối tượng cùng trỏ đến 1 địa chỉ vùng nhớ, nếu 1 trong 2 đối tượng
Constructor - Destructor - Getter - Setter
thay đổi thì cả 2 đều bị thay đổi theo => bị sai).
17
Phương thức phá hủy tự động được gọi khi đối tượng
hết phạm vi sử dụng, mặc định đối với những đối
tượng không có thuộc tính là con trỏ thì không cần
cài đặt cho phương thức phá hủy (để rỗng), còn các
đối tượng có dùng con trỏ thì phải giải phóng vùng
nhớ bên trong phương thức phá hủy.
Constructor - Destructor - Getter - Setter
18
Cho phép lấy dữ liệu hiện tại (thuộc tính)
đang ở tầm vực private của đối tượng đem
ra bên ngoài cho 1 số trường hợp cần
thiết. Lưu ý là chỉ lấy ra để so sánh, xem
chứ không thay đổi lại được.
Constructor - Destructor - Getter - Setter
19
Cho phép từ bên ngoài lớp ta có thể truy
xuất vào được thuộc tính nằm bên trong
lớp đang bị giới hạn bởi tầm vực là private
và sẽ thay đổi lại nó nếu ta muốn (Yên
tâm là ta có sự kiểm soát rõ ràng).
Constructor - Destructor - Getter - Setter
20
Xây dựng lớp điểm trong không gian 2
chiều cho phép thực hiện các chức năng:
– Nhập, xuất.
– Hàm dựng: hàm dựng không tham số và
hàm dựng 2 tham số.
– Lấy tọa độ.
– Gán giá trị tọa độ.
– Tính khoảng cách với một điểm khác.
Constructor - Destructor - Getter - Setter
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 3: Constructor, Destructor, Getter, Setter - Nguyễn Việt Nam Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_huong_doi_tuong_chuong_3_constructor_des.pdf

