Tài liệu Lập trình hướng đối tượng & C++ - Chương 3: Lớp và đối tượng: LỚP VÀ ðỐI TƯỢNG
Chương 3
1
Nội dung
• Lớp: khai báo, định nghĩa hàm thành viên.
• ðối tượng: khai báo, sử dụng, gán.
• Sơ lược về hàm xây dựng, hàm hủy
• Dữ liệu và hàm thành viên tĩnh
• Khai thác 1 lớp
2
Lớp
• Khai báo
class {
Thuộc tính truy cập :
Thuộc tính truy cập :
};
3
Sơ đồ lớp
điểm trong
khơng gian
2 chiều
Lớp
• Định nghĩa hàm thành viên
:: ( Các tham số + Kiểu )
Tốn tử chỉ
phạm vi
4
{
}
Lớp
• Ví dụ
5
ðối tượng
• Khởi tạo đối tượng
– Dạng biến: ;
VD: Diem a, b;
– Dạng mảng: [Kích thước];
VD: Diem mang[10];
6
a
x
y
1000H
b
x
y
1004H mang
x
y
1008H
• Khởi tạo đối tượng
– Dạng con trỏ :
VD: Diem *pa, *ds;
pa= new Diem; ds= new Diem[10];
delete pa; delete[] ds;
ðối tượng
Chú ý:Phải cp và thu hi vùng nhớ cho con trỏ đối tượng.
7
*pa x
y
1060H
1060
x
y
1064H*ds1064
• Sử dụng đối tượng
– Khi khởi tạo đối tượng xong, ta cĩ thể :
• Truy xuất đến dữ liệu thành viên của đối tượng.
• Gọi hàm trên đối tượng.
tùy...
5 trang |
Chia sẻ: putihuynh11 | Lượt xem: 879 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Lập trình hướng đối tượng & C++ - Chương 3: Lớp và đối tượng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
LỚP VÀ ðỐI TƯỢNG
Chương 3
1
Nội dung
• Lớp: khai báo, định nghĩa hàm thành viên.
• ðối tượng: khai báo, sử dụng, gán.
• Sơ lược về hàm xây dựng, hàm hủy
• Dữ liệu và hàm thành viên tĩnh
• Khai thác 1 lớp
2
Lớp
• Khai báo
class {
Thuộc tính truy cập :
Thuộc tính truy cập :
};
3
Sơ đồ lớp
điểm trong
khơng gian
2 chiều
Lớp
• Định nghĩa hàm thành viên
:: ( Các tham số + Kiểu )
Tốn tử chỉ
phạm vi
4
{
}
Lớp
• Ví dụ
5
ðối tượng
• Khởi tạo đối tượng
– Dạng biến: ;
VD: Diem a, b;
– Dạng mảng: [Kích thước];
VD: Diem mang[10];
6
a
x
y
1000H
b
x
y
1004H mang
x
y
1008H
• Khởi tạo đối tượng
– Dạng con trỏ :
VD: Diem *pa, *ds;
pa= new Diem; ds= new Diem[10];
delete pa; delete[] ds;
ðối tượng
Chú ý:Phải cp và thu hi vùng nhớ cho con trỏ đối tượng.
7
*pa x
y
1060H
1060
x
y
1064H*ds1064
• Sử dụng đối tượng
– Khi khởi tạo đối tượng xong, ta cĩ thể :
• Truy xuất đến dữ liệu thành viên của đối tượng.
• Gọi hàm trên đối tượng.
tùy theo thuộc tính truy cập của các thành phần đĩ.
ðối tượng
8
• Ví dụ
ðối tượng
9
• Phép gán đối tượng:
– Dùng dấu = ( cĩ sẵn trong ngơn ngữ C++).
– Thực chất là gán tương ứng các thành phần dữ liệu của hai
đối tượng cho nhau.
– Chỉ đúng khi thành phần dữ liệu khơng cĩ con trỏ.
ðối tượng
=> Phải định nghĩa lại phép gán khi dữ liệu cĩ con trỏ.
10
void main() {
Diem a; a.KhoiTao(10,20);
Diem b, *pb;
b = a; b.InDiem(); // In ra (10, 20)
pb = new Diem;
*pb = a; pb->InDiem(); // In ra (10, 20)
Hàm xây dựng – Hàm hủy
• Hàm xây dựng (Constructor)
– Tại sao cần hàm xây dựng ?
11
hiệu ứng phụ
Cần phải khởi tạo giá trị ban đầu
cho các dữ liệu thành viên
• Hàm xây dựng (constructor)
– Dùng để khởi tạo đối tượng:
• Gán giá trị đầu cho các dữ liệu thành viên.
• Cấp vùng nhớ cho các con trỏ thành viên.
– Cú pháp:
Hàm xây dựng – Hàm hủy
• Cùng tên với tên lớp, khơng cĩ trị trả về (kể cả void).
• Cĩ thể khơng cĩ hay cĩ nhiều tham số.
• Cĩ thể khơng cĩ, cĩ 1 hay nhiều hàm xây dựng.
– Sử dụng :
• Khơng được gọi trực tiếp.
• Sẽ được tự động gọi khi khởi tạo đối tượng.
12
• Ví dụ 1 về hàm xây dựng
class Diem {
int x,y;
public:
Diem();// xd mặc nhiên
Diem(int);
void main() {
// Goi Diem()
Diem a;
// In (0,0)
a. InDiem();
// Diem(int,int)
Diem b(10,5);
// Diem(int)
Hàm xây dựng – Hàm hủy
13
Diem(int,int);
...
};
Diem::Diem()
{ x=y=0; }
Diem::Diem(int a)
{ x = y = a; }
Diem::Diem(int h, int t)
{ x=h; y=t; }
Diem c(3);
Diem *pa = new Diem();
Diem *pb = new Diem(10,5);
Diem *pc = new Diem(3);
// Goi Diem()
Diem ds1[10];
// Goi Diem()
Diem *ds2 = new Diem [10];
...
}
• Ví dụ 2 về hàm xây dựng
Hàm xây dựng – Hàm hủy
14
• Hàm hủy (destructor)
– Dùng để thu hồi vùng nhớ đã cấp cho các dữ liệu thành
viên là con trỏ của đối tượng, khi hủy bỏ đối tượng.
=> delete các con trỏ là dữ liệu thành viên.
– Một lớp cĩ thể khơng cĩ hoặc chỉ cĩ duy nhất 1 hàm hủy.
Hàm xây dựng – Hàm hủy
– Cú pháp : ~ ( ) { }
– Khơng được gọi trực tiếp mà sẽ được tự động gọi khi hủy
bỏ đối tượng.
VD: Diem::~Diem () { }
SinhVien::~SinhVien() {
delete[] hoten;
}
15
Các loại đối tượng
• ðối tượng tồn cục - ðối tượng cục bộ
– ðối tượng tồn cục :
• Khai báo ngồi các lớp và ngồi hàm main().
• Sẽ được khởi tạo (tự động gọi hàm xây dựng tương
ứng) trước khi hàm main() thực thi.
• Sẽ được hủy bỏ ( tự động gọi hàm hủy cho đối tượng )
sau khi kết thúc hàm main().
– ðối tượng cục bộ :
• Khai báo trong một hàm.
• Sẽ khởi tạo trong khi thực thi hàm đĩ.
• Sẽ được hủy bỏ ( tự động gọi hàm hủy cho đối tượng
đĩ) trước khi hàm kết thúc. 16
Dữ liệu và hàm thành viên tĩnh
• Dữ liệu thành viên tĩnh (static)
– Là dữ liệu thành viên dùng chung cho tất cả các đối tượng
của cùng 1 lớp => tồn tại độc lập với các đối tượng.
– Giống như 1 biến tồn cục.
– Phải được khởi tạo bên ngồi của lớp.
– Thường được sử dụng để đếm số lượng đối tượng hiện cĩ.
17
Tại thời điểm này
dem = ?
• Hàm thành viên tĩnh (static)
– ðộc lập với các đối tượng
=> khi gọi hàm khơng cần đối tượng nào :
:: (danh sách tham số)
– Chỉ cần thêm static vào trước khai báo hàm trong lớp.
Dữ liệu và hàm thành viên tĩnh
– Giống như 1 hàm tồn cục.
18
Khai thác một lớp
• Khai báo lớp : file .hpp
• ðịnh nghĩa hàm thành viên : file .cpp
• Sử dụng lớp : trong 1 file khác vidu.cpp
Diem.hpp Diem.cpp Vidu.cpp
19
class Diem {
int x,y;
...
};
#include “Diem.hpp”
Diem::Diem()
{ }
void Diem::InDiem()
{ }
...
#include “Diem.cpp”
void main () {
Diem a;
a.InDiem();
.
}
• Tránh định nghĩa lớp nhiều lần :
ðể tránh #include nhiều
lần một lớp cĩ trong
nhiều tập tin khác nhau,
Khai thác một lớp
20
ta dùng các từ khĩa tiền
xử lý.
#ifndef
#define
#endif
Các file đính kèm theo tài liệu này:
- chapter3_7866_1993464.pdf