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  
pdf 8 trang myanh 25000 Free
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:

  • pdfhuong_dan_thuc_hanh_phuong_phap_lap_trinh_huong_doi_tuong_tu.pdf