Tài liệu Hướng dẫn thực hành môn Lập trình hướng đối tượng - Tuần 4: Nạp chồng toán tử - Nguyễn Lê Hoàng Dũng

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM  
KHOA CÔNG NGHỆ THÔNG TIN  
BỘ MÔN CÔNG NGHỆ PHẦN MỀM  
HỆ CHÍNH QUY  
MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG  
HƯỚNG DẪN THỰC HÀNH TUẦN 4  
NẠP CHỒNG TOÁN TỬ  
NGUYỄN LÊ HOÀNG DŨNG  
TP.HCM, ngày 9 tháng 10 năm 2017  
MỤC LỤC  
1 Yêu cầu bài tập.............................................................................................................. 3  
2 Hướng dẫn, cài đặt mẫu ................................................................................................ 3  
3 Bài tập ........................................................................................................................... 7  
Trang 2  
1 Yêu cầu bài tập  
Cài đặt lớp PHANSO với các yêu cầu sau:  
- Phương thức khởi tạo mặc định, khởi tạo có tham số, khởi tạo sao chép  
- Phương thức hủy  
- Phương thức getter/setter cho tất cả các thuộc tính  
- Phương thức nhập, xuất  
- Các toán tử +, -, *, /, +=, -=, *=, /=  
- Toán tử gán =  
- Toán tử nghịch đảo !  
- Toán tử rút gọn ~  
- Toán tử so sánh ==, >,<, >=, <=  
- Toán tử ép kiểu float()  
- Toán tử nhập, xuất: >> và <<  
- Các phương thức cần thiết trong hàm main() để sử dụng lớp PHANSO  
2 Hướng dẫn, cài đặt mẫu  
Tạo project  
- Tạo Empty Project và chọn phải trên project để thêm class vào  
project như sau:  
- Đặt tên class là CphanSo  
Trang 3  
Cài đặt giao diện trong tập tin “PhanSo.h”  
#pragma once  
#include "iostream"  
#include "string"  
using namespace std;  
class CPhanSo  
{
private:  
int _tu;  
int _mau;  
public:  
//Phuong thuc khoi tao  
CPhanSo(void);  
CPhanSo(int t, int m);  
CPhanSo(const CPhanSo&ps);  
//Phuong thuc huy  
~CPhanSo(void);  
//Cac getter/setter  
int getTu();  
void setTu(int t);  
int getMau();  
void setMau(int m);  
//Phuong thuc nhap,xuat  
void Nhap();  
void Xuat();  
Trang 4  
//Cac toan tu +, -, *, /  
CPhanSo operator+(const CPhanSo &ps);  
//Toan tu gan bang  
CPhanSo& operator=(const CPhanSo &ps);  
//Toan tu so sanh  
bool operator==(const CPhanSo &ps);  
bool operator!=(const CPhanSo&ps);  
//Toan tu ep kieu  
operator float();  
//Toan tu nhap,xuat >> và <<  
friend ostream& operator<<(ostream &os,const CPhanSo &ps);  
friend istream& operator>>(istream &is, CPhanSo &ps);  
//Toan tu nghich dao, rut gon  
CPhanSo& operator!();  
CPhanSo& operator~();  
};  
Cài đặt lớp trong tập tin PhanSo.cpp  
#include "PhanSo.h"  
//Cai dat cac pt khoi tao  
CPhanSo::CPhanSo(void)  
{
_tu=0;  
_mau = 1;  
}
CPhanSo::CPhanSo(int t, int m)  
{
_tu=t;  
_mau = m;  
}
CPhanSo::CPhanSo(const CPhanSo &ps)  
{
_tu=ps._tu;  
_mau = ps._mau;  
}
CPhanSo::~CPhanSo(void)  
{
return;  
}
// Cai dat cac pt getter/setter  
int CPhanSo::getTu()  
{
return _tu;  
}
int CPhanSo::getMau()  
{
return _mau;  
}
void CPhanSo::setTu(int t)  
{
_tu=t;  
}
void CPhanSo::setMau(int m)  
{
_mau=m;  
}
Trang 5  
//Cai dat pt nhap,xuat  
void CPhanSo::Nhap()  
{
cout<<"Nhap tu so: ";  
cin>>_tu;  
cout<<"Nhap mau so: ";  
cin>>_mau;  
}
void CPhanSo::Xuat()  
{
cout<<_tu<<"/"<<_mau<<endl;  
}
//Cat dat phuong thuc +,-,*,/  
CPhanSo CPhanSo::operator+(const CPhanSo&ps)  
{
CPhanSo pso;  
pso._tu=this->_tu*ps._mau+this->_mau*ps._tu;  
pso._mau=this->_mau*ps._mau;  
return pso;  
}
CphanSo& CPhanSo::operator=(const CPhanSo&ps)  
{
//...  
}
bool CPhanSo::operator==(const CPhanSo&ps)  
{
float ps1 = 1.0*this->_tu/this->_mau;  
float ps2= 1.0*ps._tu/ps._mau;  
return (ps1==ps2);  
}
bool CPhanSo::operator!=(const CPhanSo&ps)  
{
if(*this==ps)  
return false;  
return true;  
}
//Toan tu nhap,xuat >> vaf <<  
ostream& operator<<(ostream &os,const CPhanSo &ps)  
{
cout<<ps._tu<<"/"<<ps._mau<<endl;  
return os;  
}
istream& operator>>(istream &is, CPhanSo &ps)  
{
cout<<"Nhap tu so: ";  
is>>ps._tu;  
cout<<"Nhap mau so: ";  
is>>ps._mau;  
return is;  
}
//Toan tu ep kieu  
CPhanSo::operator float()  
{
return (float)_tu/_mau;  
}
Trang 6  
//Toan tu nghich dao  
CPhanSo& CPhanSo::operator!()  
{
int temp = this->_tu;  
this->_tu=this->_mau;  
this->_mau=temp;  
return (*this);  
}
int UCLN (CPhanSo ps)  
{
int tu = abs(ps.getTu());  
int mau = abs(ps.getMau());  
while(tu!=mau)  
{
if(tu>mau)  
tu-=mau;  
else  
mau-=tu;  
}
return tu;  
}
//Toan tu Rut gon  
CPhanSo& CPhanSo::operator~()  
{
this->_tu=this->_tu/ UCLN(*this);  
this->_mau=this->_mau/ UCLN(*this);  
return (*this);  
}
Chú ý: sinh viên tự cài đặt các phương thức còn lại theo yêu cầu  
3 Bài tập  
Xây dựng các lớp đối tượng sau:  
1. Lớp đơn thức (CDonThuc) dạng (axb)  
- Các phương thức khởi tạo và phương thức hủy.  
- Phương thức getter/setter cho tất cả các thuộc tính.  
- Phương thức nhập, xuất.  
- Toán tử nhập, xuất: >> và <<  
- Phương thức tính giá trị đơn thức với biến x cho trước  
- Các toán tử *, /,*=,/=  
- Toán tử gán =  
- Toán tử so sánh ==, !=  
2. Lớp chuỗi ký tự (CString) sử dụng mảng ký tự được cấp phát động để lưu  
trữ (có thể sử dụng các hàm trong thư viện string.h), hỗ trợ một số phương  
thức cơ bản như:  
- Các phương thức tạo lập và hủy có thể có.  
Trang 7  
- Lấy độ dài chuỗi.  
- Lấy/Gán từ ký tự trong chuỗi.  
- Các toán tử cơ bản:  
o Nhập/Xuất: >>, <<  
o Nối chuỗi: +  
o Đảo chuỗi: !  
o Chuẩn hóa chuỗi (bỏ đi các khoảng trắng thừa): ~  
o So sánh với chuỗi khác: >, >=, <, <=, ==, !=  
Trang 8  
pdf 8 trang myanh 22400 Free
Bạn đang xem tài liệu "Tài liệu Hướng dẫn thực hành môn Lập trình hướng đối tượng - Tuần 4: Nạp chồng toán tử - Nguyễn Lê Hoàng Dũng", để 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:

  • pdftai_lieu_huong_dan_thuc_hanh_mon_lap_trinh_huong_doi_tuong_t.pdf