1
L p trình C++ 1ậ
© Giáo viên: Trần Minh Tuấn
Tham khảo thêm slide của GV Mai Thuý Nga
2
Bài 3: Quá t iả
1. Xây dựng chương trình từng bước
2. Quá tải hàm
3. Quá tải phương thức
4. Quá tải toán tử
5. Review
6. Bài tập
3
Chú ý khi xây d ng ch ng ự ươ
trình
Xây dựng các lớp từ đơn giản đến phức tạp.
Sau khi cài đặt xong một phương thức cần kiểm
tra tính đúng đắn của phương thức đó trước khi
thêm các phương thức khác.
Bài toán: Xây dựng lớp Phân số
Một phân số gồm tử số và mẫu số.
Có thể rút gọn phân số, cộng 2 phân số...
4
L p Phân s c b n ớ ố ơ ả
Xây dựng lớp Phân số cơ bản:
class Phanso
{
private:
int tuso; // tử số
int mauso; // mẫu số
public:
void DatTS(int ts); // đặt giá trị cho tử số
void DatMS(int ms); // đặt giá trị cho mẫu số
int LayTS(); // lấy giá trị tử số
int LayMS(); // lấy giá trị mẫu số
void InPS(); // in phân số dưới dạng a/b
};
5
L p Phân s c b n ớ ố ơ ả
Sau khi cài đặt xong lớp Phanso, kiểm tra lớp
này:
void main()
{
Phanso x;
x.DatTS(3);
x.DatMS(5);
cout<<“Phan so x co tu so la ”<<x.LayTS()
<<“ va mau so la “<<x.LayMS()<<endl;
cout<<“Phan so nay co dang : “;
x.InPS();
}
6
Thêm c u tấ ử
Thêm các cấu tử:
Phanso(); // cấu tử mặc định, đặt phân số 1/1
Phanso(int a); // đặt phân số a/1
Phanso(int a, int b); // đặt phân số a/b
Phanso(Phanso &ps); // cấu tử sao chép
Kiểm tra:
void main()
{
Phanso x, y(5), z(2,7), k(y);
...
}
7
Thêm ph ng th c Rút g nươ ứ ọ
Ta cần xây dựng hàm tìm ước số chung lớn
nhất. Nên để hàm này là public hay private ?
Xây dựng phương thức Rút gọn phân số sử
dụng hàm tìm USCLN ở trên
class Phanso
{
private:
…
int USCLN();
public:
...
Phanso Rutgon();
};
8
Thêm ph ng th c Rút g nươ ứ ọ
Kiểm tra:
void main()
{
Phanso x(6,3), y(5,8), z;
x.InPS(); z = x.Rutgon(); z.InPS();
y.InPS(); z = y.Rutgon(); z.InPS();
}
9
Thêm ph ng th c C ngươ ứ ộ
Xây dựng phương thức cộng 2 phân số
class Phanso
{
public:
...
Phanso Cong(Phanso ps);
};
Kiểm tra:
Phanso x(3,6), y(2,5), z;
z = x.Cong(y);
z = z.Rutgon();
cout<<“Tong cua ”; x.InPS();
cout<<“ va “; y.InPS();
cout<<“ la “; z.InPS();
10
V n đ v i l p Phansoấ ề ớ ớ
Lớp Phanso đã xây dựng là tương đối hoàn
chỉnh, tuy nhiên nó có hạn chế sau:
Phương thức Cong không được “tự nhiên”. Sẽ thuận
tiện hơn nếu ta có thể viết z = x + y.
Giải pháp: Sử dụng quá tải !