Hướng dẫn thực hành Phương pháp lập trình hướng đối tượng - Tuần 4
Hướng dẫn thực hành PP LT hướng đối tượng
Nội dung tuần 04
Luyện tập cách xây dựng các lớp đối tượng nâng cao.
Hướng dẫn
Hiểu rõ về Copy Constructor và Operator = (hàm khởi tạo sao chép và toán tử
gán)
Xem ví dụ sau:
BM CNPM
Page 1
Hướng dẫn thực hành PP LT hướng đối tượng
Chú ý 2 dòng lệnh được highlight đều là phép gán nhưng chỉ 1 lần hàm Operator= được gọi.
Như vậy hàm toán tử gán chỉ được gọi khi đối tượng đã được khởi tạo trước đó (hs2 đã
được khởi tạo trước). Do vậy nguyên tắc khi có sử dụng cấp phát động thì phải thu hồi
trong hàm toán tử gán.
Sử dụng hàm random
Trước khi sử dụng được hàm phát sinh số ngẫu nhiên rand() thì trước hết phải thực hiện
gieo hạt giống cho nó thông qua hàm srand(unsigned int), và chỉ cần gieo 1 lần đầu cho
suốt chương trình là được.
Vấn đề cần có giá trị trong khoảng [a,b] mong muốn thì sử dụng phép đồng dư (%).
//cần có dòng lệnh nầy trước khi gọi hàm rand() lần đầu tiên
srand((unsigned)time(NULL));
//giá trị lấy được sẽ nằm trong khoảng [a, b]
int x = rand() % (b - a + 1) + a;
BM CNPM
Page 2
Hướng dẫn thực hành PP LT hướng đối tượng
Sửa bài Số nguyên lớn
Phần khai báo
#define MAXLEN 100
class SoNguyenLon
{
private:
int mangSo[MAXLEN];
int soCS;
static SoNguyenLon snlMax;
public:
SoNguyenLon(void);
SoNguyenLon(const int& cs, const int& scs);
SoNguyenLon(const unsigned int& n);
SoNguyenLon(const SoNguyenLon& snl);
~SoNguyenLon(void);
SoNguyenLon operator+(const SoNguyenLon& snl);
SoNguyenLon operator-(const SoNguyenLon& snl);
bool operator>(const SoNguyenLon& snl);
const SoNguyenLon& operator=(const SoNguyenLon& snl);
friend SoNguyenLon operator+(const unsigned int& n, const SoNguyenLon& snl);
friend SoNguyenLon operator-(const unsigned int& n, const SoNguyenLon& snl);
friend ostream& operator<<(ostream& os, const SoNguyenLon& snl);
static SoNguyenLon SNLMax();
};
Phần cài đặt
BM CNPM
Page 3
Hướng dẫn thực hành PP LT hướng đối tượng
BM CNPM
Page 4
Hướng dẫn thực hành PP LT hướng đối tượng
BM CNPM
Page 5
Hướng dẫn thực hành PP LT hướng đối tượng
BM CNPM
Page 6
Hướng dẫn thực hành PP LT hướng đối tượng
Bài tập
Bài 1
Khai báo và cài đặt lớp đối tượng LinkedList sao cho hàm main sau chạy đúng
void main()
{
srand(1234);
LinkedList l;
for (int i=0; i<10; ++i)
{
if (rand()%2 == 0)
{
l.AddHead(rand() % 1001);
}
else
{
l.AddTail(rand() % 1001);
}
}
cout << l << endl;
l.RemoveHead();
l.RemoveTail();
l[-1] = 9000;
l[4] = 2000;
l[100] = 10000;
cout << l << endl;
}
Với kết quả:
Gợi ý phần khai báo:
struct Node
{
int info;
Node *pNext;
};
class LinkedList
{
private:
BM CNPM
Page 7
Hướng dẫn thực hành PP LT hướng đối tượng
Node *pHead, *pTail;
int curN;
public:
LinkedList(void);
~LinkedList(void);
static Node* CreateNode(const int& n);
Node* AddHead(const int& n);
Node* AddTail(const int& n);
Node* RemoveHead();
Node* RemoveTail();
friend ostream& operator<<(ostream& os, const LinkedList& ll);
int& operator[](const int& i);
};
Bài 2
Khai báo và cài đặt lớp đối tượng SoNguyenLon với số lượng chữ số không giới hạn (sử
dụng LinkedList) sao cho hàm main sau chạy đúng
void main()
{
SoNguyenLon snl1;
SoNguyenLon snl2(44667733);
SoNguyenLon snl3(5, 9);
SoNguyenLon snl4(7, 30);
SoNguyenLon snl5 = snl3 - snl2;
SoNguyenLon snl6 = 1098765432 - snl2;
SoNguyenLon snl7 = snl4 - snl3 + 123456789;
SoNguyenLon snl8 = snl2 * snl3;
cout << snl1 << endl << snl2 << endl << snl3 << endl;
cout << snl4 << endl << snl5 << endl << snl6 << endl;
cout << snl7 << endl << snl8 << endl << endl;
}
Với kết quả:
BM CNPM
Page 8
Bạn đang xem tài liệu "Hướng dẫn thực hành Phương pháp lập trình hướng đối tượng - Tuần 4", để 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:
huong_dan_thuc_hanh_phuong_phap_lap_trinh_huong_doi_tuong_tu.pdf

