You are on page 1of 3

C++ INHERITANCE – POLYMORPHISM

LopHHPhang.h
#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

class LopDaGiac{
private:
int socanh;
protected:
vector <double> cdCanh;
public:
LopDaGiac(int socanh){
this->socanh = socanh;
cdCanh.resize(socanh, 0);
}
// pure virtual function
virtual double tinhDienTich() = 0;
virtual double tinhChuVi() = 0;
};

class LopHinhVuong : public LopDaGiac{


public:
string mystr;
double canh;
LopHinhVuong():LopDaGiac(1){
cdCanh.clear();
cout << "Nhap chieu dai canh hinh vuong: ";
getline(cin, mystr);
stringstream(mystr) >> canh;
cdCanh.push_back(canh);
}
double tinhDienTich(){
return cdCanh.at(0) * cdCanh.at(0);
}
double tinhChuVi(){
return cdCanh.at(0) * 4;
}
};
class LopHinhChuNhat :public LopDaGiac{
public:
string mystr;
double dai,rong;
LopHinhChuNhat() :LopDaGiac(2){
cdCanh.clear();
cout << "Nhap chieu dai hinh chu nhat: ";
getline(cin, mystr);
stringstream(mystr) >> dai;
cdCanh.push_back(dai);
cout << "Nhap chieu rong hinh chu nhat: ";
getline(cin, mystr);
stringstream(mystr) >> rong;
cdCanh.push_back(rong);
}
double tinhDienTich(){
return cdCanh.at(0) * cdCanh.at(1);
}
double tinhChuVi(){
return (cdCanh.at(0) + cdCanh.at(1)) * 2;
}
};
LopHHPhangTest.cpp
#include <iostream>
#include "LopHHPhang.h"

using namespace std;

int main()
{
LopHinhVuong hv;
cout << "Chu vi hinh vuong: " << hv.tinhChuVi() <<endl;
cout << "Dien tich hinh vuong: " << hv.tinhDienTich()<<endl;

LopHinhChuNhat hcn;
cout << "Chu vi hinh chu nhat: " << hcn.tinhChuVi() << endl;
cout << "Dien tich hinh chu nhat: " << hcn.tinhDienTich() << endl;

getchar();

return 0;
}

You might also like