Tài liệu Các đặc điểm C++ áp dụng cho class Lập trình hướng đối tượng - Pdf 10

Các đặc điểm C++
áp dụng cho class
Lập trình hướng đối tượng
@ 2004 Trần Minh Châu. FOTECH. VNU
2
Tài liệu đọc
n Eckel, Bruce. Thinking in C++, 2
nd
Ed. Vol 1.
¨ Chapter 8: Constants
n Start at p. 352 (Classes)
¨ Chapter 10: Name Control
n p. 423 (Static Members in C++) to p. 442 (Alternate Linkage
Specifications)
n Dietel. C++ How to Program, 4
th
Ed.
¨ Chapter 7: Class II
n 7.2, 7.3, 7.6, 7.7, 7.8
@ 2004 Trần Minh Châu. FOTECH. VNU
3
Tổng quan
n Các đặc điểm cơ bản của C++ như const, static, áp
dụng cho các lớp như thế nào?
¨ hằng thành viên–const member
¨ thành viên tĩnh–static member
¨ hằng thành viên tĩnh–const static member
¨ hằng hàm/phương thức–const method
¨ hàm/phương thức tĩnh–static method
¨ làm việc với các đối tượng
@ 2004 Trần Minh Châu. FOTECH. VNU

¨ khi dùng cho các hằng thành viên, danh sách khởi tạo đảm bảo chúng
được khởi tạo trước khi được truy nhập
¨ chi tiết thêm tại phần thừa kế.
class MyClass {
public:
MyClass(int x = 5); // Constructor w/default argument
private:
const int foo; // Declares foo a constant member
};

MyClass::MyClass(int x) : foo(x)
{ // constructor body }
danh sách khởi tạo của
constructor
dấu hai chấm tách giữa
danh sách tham số và
danh sách khởi tạo
@ 2004 Trần Minh Châu. FOTECH. VNU
7
Hằng thành viên–const member
n Danh sách khởi tạo–Vídụ
class MyClass {
public:
MyClass(int x = 5); // Constructor w/default argument
private:
const int foo; // Declares foo a constant member
const int bar;
};

MyClass::MyClass(int x, int y) : foo(x), bar(y)

}
int main()
{
for (int i = 1; i <= 3; i++)
{
myCounter();
}
}
This function has been invoked 1 time(s).
This function has been invoked 2 time(s).
This function has been invoked 3 time(s).
n Đối với biến thông thường, static dùng để khai báo các biến tĩnh
tồn tại trong suốt quátrình chạy của chương trình.
@ 2004 Trần Minh Châu. FOTECH. VNU
10
Thành viên tĩnh–static member
Tương tự giữa biến tĩnh vàthành viên tĩnh
n biến staticxđược khai báo trong hàm f(),
¨ một bản duy nhất tồn tại trong suốt quátrình chạy của chương trình.
¨ dùng chung cho tất cả các lần chạy hàm f(),
¨ bất kể hàm f() được gọi bao nhiêu lần
n Đối với class, static dùng để khai báo thành viên dữ liệu dùng
chung cho mọi thể hiện của lớp.
¨ một bản duy nhất tồn tại trong suốt quátrình chạy của chương trình,
¨ dùng chung cho tất cả các thể hiện của lớp,
¨ bất kể lớp đócóbao nhiêu thể hiện
@ 2004 Trần Minh Châu. FOTECH. VNU
11
n Đếm sốđối tượng MyClass
¨ khai báo lớp MyClass

Thành viên tĩnh–static member
Định nghĩa vàkhởi tạo
n thành viên tĩnh được lưu trữđộc lập với các thể hiện của lớp, do đó,
các thành viên tĩnh phải được định nghĩa
int MyClass::count;
n ta thường định nghĩa các thành viên tĩnh trong file chứa định nghĩa
các phương thức
n nếu muốn khởi tạo giátrị cho thành viên tĩnh ta cho giátrị khởi tạo
tại định nghĩa
int MyClass::count = 0;
@ 2004 Trần Minh Châu. FOTECH. VNU
14
Thành viên tĩnh–static member
int main()
{
MyClass* x = new MyClass;
x->PrintCount();
MyClass* y = new MyClass;
x->PrintCount();
y->PrintCount();
delete x;
y->PrintCount();
}
There are currently 1 instance(s) of MyClass.
There are currently 2 instance(s) of MyClass.
There are currently 2 instance(s) of MyClass.
There are currently 1 instance(s) of MyClass.
¨ chương trình demo sử dụng MyClass
@ 2004 Trần Minh Châu. FOTECH. VNU
15

đối với các thành viên dữ liệu cần giữ nguyên giátrị trong suốt
thời gian sống của một thể hiện
¨ static const
đối với các thành viên dữ liệu cần giữ nguyên cùng một giátrị tại
tất cả các đối tượng của một lớp
@ 2004 Trần Minh Châu. FOTECH. VNU
17
Hằng phương thức–const method
n Từ khoá const được dùng cho các tham số của hàm để
đảm bảo các tham sốđược truyền cho hàm sẽ không bị
hàm sửa đổi.
int myFunction(const int& x);
n Cúpháp này cũng được dùng cho phương thức với hiệu
quả tương tự
class MyClass {
//
MyMethod(const int& x);
///
};
x được truyền bằng hằng tham chiếu
x sẽ không bị hàm/phương thức sửa đổi
@ 2004 Trần Minh Châu. FOTECH. VNU
18
Hằng phương thức–const method
n Còn tham sốẩn truyền bằng con trỏ this vàchính là đối
tượng chủ?
n Hằng phương thức làcúpháp cho phép ta đảm bảo với
trình biên dịch rằng phương thức sẽ không sửa đổi đối
tượng chủ
class MyClass {

n Một phương thức tĩnh cóthểđược gọi một cách độc lập
với mọi thể hiện của lớp
¨ phương thức tĩnh không được truyền con trỏ this làm tham số
ẩn.
¨ không thể sửa đổi các thành viên dữ liệu từ trong phương thức
tĩnh.
¨ cóthể gọi phương thức tĩnh màkhông cần tạo thể hiện nào của
lớp-gọi thẳng bằng tên lớp
@ 2004 Trần Minh Châu. FOTECH. VNU
21
Phương thức tĩnh–static method
n Khai báo:
class MyClass
{
public:
MyClass(); // Constructor
~MyClass(); // Destructor
static void printCount(); // Output current value of count
private:
static int count; // count
};
n dùng tên lớp kèm theo toán tử phạm vi (::) để gọi phương thức tĩnh
MyClass::printCount();
n hoặc cóthể dùng đối tượng sẵn có để gọi phương thức tĩnh
MyClass x;
x.printCount();
@ 2004 Trần Minh Châu. FOTECH. VNU
22
Phương thức tĩnh–static method
n Vídụ

24
Hằng đối tượng. Vídụ
class MyClass
{
public:
MyClass();
~MyClass();
static void printCount();
void foo() const;
void bar();
const int x;
int y;

};
const MyClass x;
cout << x.x;//no change–OK
cout << x.y;//no change–OK
x.x++;//Error
x.y++;//Error
const MyClass x;
x.printCount();// static-OK
x.foo();// const-OK
x.bar();// non-const-error
không thể sửa thành viên, dùlà
public không phải hằng
chỉ được gọi hàm thành viên
làhằng hoặc tĩnh
@ 2004 Trần Minh Châu. FOTECH. VNU
25
Làm việc với đối tượng

cấp phát bộ nhớđộng
rồi thu hồi chúng
MyClass foo;
MyClass& r_foo = foo;
MyClass foo2;
MyClass& r_foo2 = foo2;
n Khai báo tham chiếu tới
đối tượng
@ 2004 Trần Minh Châu. FOTECH. VNU
28
Làm việc với đối tượng
MyClass foo[10];
MyClass* foo2[10];
for (int i = 0; i < 10; i++) {
foo2[i] = new MyClass(i, i + 1);
}
n Tạo mảng các đối tượng

hoặc mảng các con trỏ
tới đối tượng
foo[7].PrintCount();
for (int i = 0; i < 10; i++)
{
foo[i].PrintCount();
}
n Truy nhập các đối tượng trong
mảng như vẫn làm đối với các
phần tử mảng thông thường
phải cóconstructor
mặc định để cóthể


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status