1 Lớp và đối tượng – Phần 8 Fri Nov 02, 2012 12:57 pm
LostSoul89
Admin
Lớp và đối tượng – Phần 8
Một
số mở rộng của C++ đối với C đã được trình bày trong các chương trước
như biến tham chiếu, định nghĩa chồng hàm, hàm với đối mặc định … Phần
này ta xem một đặc trưng khác của C++ được gọi là hàm trực tuyến
(inline).
5.4/- Ví dụ
Phần này chúng tôi trình bày một ví dụ tương đối hoàn chỉnh về lớp các hình tròn trong chế độ đồ họa. Chương trình gồm:
- Lớp HT (hình tròn) với các thuộc tính:
- Các phương thức
+ Hàm tạo không đối thực hiện việc gán giá trị bằng 0 cho các thuộc tính của lớp. HT();
+ Hàm tạo có đối. HT(int n, int m1 = 15);
Thực hiện các việc:
Gán r1 cho r, m1 cho m
Cấp phát bộ nhớ cho pht
Vẽ hình tròn và lưu ảnh hình tròn vào vùng nhớ của pht
- Hàm hủy: ~HT();
Thực hiện các việc:
Xoá hình tròn khỏi màn hình (nếu đang hiển thị)
Giải phóng bộ nhớ đã cấp cho pht
+ Phương thức: void hien(int x, int y);
Có nhiệm vụ hiển thị hình tròn tại (x, y)
+ Phương thức : void an()
Có nhiệm vụ làm ẩn hình tròn
- Các hàm độc lập:
Nội dung chương trình là tạo ra các chuyển động xuống và lên của các hình tròn.
Các nhận xét:
- Trong thân hàm hủy gọi tới phương thức an().
- Điều gì xẩy ra khi bỏ đi hàm hủy:
♦ Khi gọi hàm ht_di_dong_xuong() thì có 2 đối tượng kiểu HT được tạo
ra. Trong thân hàm sử dụng các đối tượng này để vẽ các hình tròn di
chuyển xuống. Khi thoát khỏi hàm thì 2 đối tượng (tạo ra ở trên) được
giải phóng. Vùng nhớ của các thuộc tính của chúng bị thu hồi, nhưng vùng
nhớ cấp phát cho thuộc tính pht chưa được giải phóng và ảnh của 2 hình
tròn (ở phía dưới màn hình) vẫn không được cất đi.
♦ Điều tương tự xẩy ra sau khi ra khỏi hàm ht_di_dong_len(): vùng nhớ
cấp phát cho thuộc tính pht chưa được giải phóng và ảnh của 2 hình tròn
(ở phía trên màn hình) vẫn không được thu dọn.
Một
số mở rộng của C++ đối với C đã được trình bày trong các chương trước
như biến tham chiếu, định nghĩa chồng hàm, hàm với đối mặc định … Phần
này ta xem một đặc trưng khác của C++ được gọi là hàm trực tuyến
(inline).
5.4/- Ví dụ
Phần này chúng tôi trình bày một ví dụ tương đối hoàn chỉnh về lớp các hình tròn trong chế độ đồ họa. Chương trình gồm:
- Lớp HT (hình tròn) với các thuộc tính:
- Các phương thức
+ Hàm tạo không đối thực hiện việc gán giá trị bằng 0 cho các thuộc tính của lớp. HT();
+ Hàm tạo có đối. HT(int n, int m1 = 15);
Thực hiện các việc:
Gán r1 cho r, m1 cho m
Cấp phát bộ nhớ cho pht
Vẽ hình tròn và lưu ảnh hình tròn vào vùng nhớ của pht
- Hàm hủy: ~HT();
Thực hiện các việc:
Xoá hình tròn khỏi màn hình (nếu đang hiển thị)
Giải phóng bộ nhớ đã cấp cho pht
+ Phương thức: void hien(int x, int y);
Có nhiệm vụ hiển thị hình tròn tại (x, y)
+ Phương thức : void an()
Có nhiệm vụ làm ẩn hình tròn
- Các hàm độc lập:
Nội dung chương trình là tạo ra các chuyển động xuống và lên của các hình tròn.
Các nhận xét:
- Trong thân hàm hủy gọi tới phương thức an().
- Điều gì xẩy ra khi bỏ đi hàm hủy:
♦ Khi gọi hàm ht_di_dong_xuong() thì có 2 đối tượng kiểu HT được tạo
ra. Trong thân hàm sử dụng các đối tượng này để vẽ các hình tròn di
chuyển xuống. Khi thoát khỏi hàm thì 2 đối tượng (tạo ra ở trên) được
giải phóng. Vùng nhớ của các thuộc tính của chúng bị thu hồi, nhưng vùng
nhớ cấp phát cho thuộc tính pht chưa được giải phóng và ảnh của 2 hình
tròn (ở phía dưới màn hình) vẫn không được cất đi.
♦ Điều tương tự xẩy ra sau khi ra khỏi hàm ht_di_dong_len(): vùng nhớ
cấp phát cho thuộc tính pht chưa được giải phóng và ảnh của 2 hình tròn
(ở phía trên màn hình) vẫn không được thu dọn.