Bài giảng phương pháp lập trình hướng đối tượng chương 5 thành phần tĩnh, ba vấn đề con trỏ - Pdf 32

Chương 3: Thành phần
tĩnh, Ba vấn đề con trỏ

Phương pháp lập trình hướng đối tượng.

1


Nội dung




Thành phần tĩnh.
Ba vấn đề con trỏ.
Bài tập.

Phương pháp lập trình hướng đối tượng.

2


Nội dung




Thành phần tĩnh.
Ba vấn đề con trỏ.
Bài tập.


Phương pháp lập trình hướng đối tượng.

PhanSo
Tử số
Mẫu số
Giá trị lớn nhất
Giá trị nhỏ nhất

p1: PhanSo
Tử số
1
Mẫu số
2
p2: PhanSo
Tử số
2
Mẫu số
3
4


Thành phần tĩnh


Khai báo và sử dụng:
Dùng từ khóa static.
 Truy xuất bằng toán tử ::.


class PhanSo

Ba vấn đề con trỏ.
Bài tập.

Phương pháp lập trình hướng đối tượng.

6


Ba vấn đề con trỏ


Ví dụ 1:
class Array
{
private:
int
m_size;
int
*m_data;
public:
Array(int size);
};
Array::Array(int size)
{
m_size = size;
m_data = new int[m_size];
}

Phương pháp lập trình hướng đối tượng.



Phải dùng hàm hủy để dọn dẹp!!

Phương pháp lập trình hướng đối tượng.

8


Ba vấn đề con trỏ


Ví dụ 1:
class Array
{
private:
int
m_size;
int
*m_data;
public:
Array(int size);
~Array();
};
Array::~Array()
{
delete m_data;
}

Phương pháp lập trình hướng đối tượng.


Array a2(a1);

}

10


Ba vấn đề con trỏ


Vấn đề sao chép bộ nhớ (hdsc mặc định):


Hàm dựng sao chép mặc định sao chép giá trị từng
thuộc tính.
Dùng
Dùngchung
chung
bộ
bộnhớ!!
nhớ!!

Mất
Mấtbộ
bộnhớ!!
nhớ!!

a1: Array
m_size
m_data

Array(const Array &a);
~Array();
};

Phương pháp lập trình hướng đối tượng.

Array::Array(const Array &a)
{
m_size = a.m_size;
m_data = new int[m_size];
for (int i = 0; i < m_size; i++)
m_data[ i ] = a.m_data[ i ];

}
void main()
{
Array a1(5);
Array a2(a1);

}
12


Ba vấn đề con trỏ


Ví dụ 3:
class Array
{
private:

Toán tử gán mặc định sao chép giá trị từng thuộc
tính.

Dùng
Dùngchung
chung
bộ
bộnhớ!!
nhớ!!


Ròrỉrỉbộ
bộnhớ!!
nhớ!!

a1: Array
m_size
m_data

Mất
Mấtbộ
bộnhớ!!
nhớ!!
a2: Array

5
101

1 2 3 4 5 6
1 2 3 4 5

for (int i = 0; i < m_size; i++)
public:
m_data[ i ] = a.m_data[ i ];
Array(int size);
return *this;
Array(const Array &a);
void main()
}
~Array();
{
Array & operator =(const Array &a);
Array a1(5);
};
Array a2(6);

a2 = a1;

}
Phương pháp lập trình hướng đối tượng.
15


Ba vấn đề con trỏ


Dr. Guru khuyên: luật “ba ông lớn”


Lớp có thuộc tính con trỏ, phải luôn kèm theo:





Ba vấn đề con trỏ:


Khi lớp có thuộc tính con trỏ:




Phải có hàm hủy.
Phải có hàm dựng sao chép.
Phải có toán tử gán.

Phương pháp lập trình hướng đối tượng.

17


Nội dung




Thành phần tĩnh.
Ba vấn đề con trỏ.
Bài tập.

Phương pháp lập trình hướng đối tượng.


Phương pháp lập trình hướng đối tượng.

20


Bài tập


Bài tập 5.3:
Xây dựng lớp đa thức có những phương thức sau:
(Nhóm tạo hủy)
 Khởi tạo mặc định đa thức = 0.
 Khởi tạo với bậc và mảng hệ số cho trước.
 Khởi tạo từ một đối tượng đa thức khác.
 Hủy đa thức, thu hồi bộ nhớ.
(Nhóm truy xuất thông tin)
 Lấy bậc đa thức.
 Lấy hệ số tại bậc nào đó.

Phương pháp lập trình hướng đối tượng.

21


Bài tập


Bài tập 5.3:
Xây dựng lớp đa thức (tiếp theo):

23


Bài tập


Bài tập 5.4:
Xây dựng lớp chuỗi (tiếp theo):
(Nhóm xử lý nghiệp vụ)
 So sánh với chuỗi khác.
 Đổi chữ hoa, thường.
 Tìm chuỗi con.
 Trích chuỗi con.
(Nhóm toán tử)
 Toán tử số học: +, =, +=.
 Toán tử so sánh: >, <, ==, >=, >,


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