새로새록

[c++]8. 상속받는 삼각형, 사각형, 원 본문

소프트웨어융합/경희대 c++ 과제

[c++]8. 상속받는 삼각형, 사각형, 원

류지나 2020. 7. 16. 21:03

 아래의 코드를 기반으로 Polygon class을 상속받는 Rectangle class를 선언하고 둘레와 넓이를 구하는 프로그램을 작성하라. 단, 정사각형이라 가정한다.

int main()
{
	Polygon pol;
	Rectangle rec(4, 10);

	cout << "--- Polygon class ---" << endl;
	pol.calcGirth();
	pol.calcArea();
	cout << "--- Rectangle class ---" << endl;
	rec.calcGirth();
	rec.calcArea();

	return 0;
}
[참조 1]
class Polygon {
public:
	Polygon();
	Polygon(int point, float length);
	~Polygon();

	virtual void calcGirth();
	virtual void calcArea();

protected:
	int mPoint; // 꼭지점 갯수 
	double mLength; // 한 변의 길이 
};

[참조 2]
class Rectangle : public Polygon
{
public:
	Rectangle() {};
	Rectangle(int point, float length) : Polygon(point, length);
	~Rectangle() {};

	void calcGirth() override;

	void calcArea() override;
};

 

#include <iostream>
#include <string>
using namespace std;

class Polygon {
public:
	Polygon(): mPoint(0), mLength(0){}
	Polygon(int point, float length):
		mPoint(point), mLength(length){}
	~Polygon() {};

	virtual void calcGirth() {
		cout << "Girth : empty" << endl;
	}
	virtual void calcArea() {
		cout << "Area : empty" << endl;
	}

protected:
	int mPoint;
	double mLength;

};

class Rectangle : public Polygon {
public:
	Rectangle(): Polygon(){}
	Rectangle(int point, float length) :
		Polygon(point, length){}
	~Rectangle() {};

	void calcGirth() override {
		cout << "Girth : " << mPoint * mLength << endl;
	}
	void calcArea() {
		cout << "Area : " << mLength * mLength << endl;
	}

};

int main() {
	Polygon pol;
	Rectangle rec(4, 10);

	cout << "--- Polygon class ---" << endl;
	pol.calcGirth();
	pol.calcArea();
	cout << "--- Rectangle class ---" << endl;
	rec.calcGirth();
	rec.calcArea();

	return 0;
}

 

위 문제에서 작성한 프로그램을 기반으로 Polygon class를 상속하는 Triangle, Rectangle, Circle class를 선언하고 둘레와 넓이를 구하는 프로그램을 작성하라. 단, 모든 도형은 정다각형이라 가정한다.

int main()
{
	Triangle tri(3, 10);
	Rectangle rec(4, 10);
	Circle cir(0, 5);

	cout << "--- Triangle class ---" << endl;
	tri.calcGirth();
	tri.calcArea();
	cout << "--- Rectangle class ---" << endl;
	rec.calcGirth();
	rec.calcArea();
	cout << "--- Circle class ---" << endl;
	cir.calcGirth();
	cir.calcArea();

	return 0;
}



#include <iostream>
#include <string>
#include <cmath>
using namespace std;

class Polygon {
public:
	Polygon(): mPoint(0), mLength(0){}
	Polygon(int point, float length):
		mPoint(point), mLength(length){}
	~Polygon() {};

	virtual void calcGirth() {
		cout << "Girth : empty" << endl;
	}
	virtual void calcArea() {
		cout << "Area : empty" << endl;
	}

protected:
	int mPoint;
	double mLength;

};

class Triangle : public Polygon {
public:
	Triangle() : Polygon() {}
	Triangle(int point, float length) :
		Polygon(point, length) {}
	~Triangle() {};

	void calcGirth() override {
		cout << "Girth : " << mPoint * mLength << endl;
	}
	void calcArea() {
		cout << "Area : " << sqrt(3) /4  * mLength * mLength << endl;
	}

};

class Circle : public Polygon {
public:
	Circle() : Polygon() {}
	Circle(int point, float length) :
		Polygon(point, length) {}
	~Circle() {};

	void calcGirth() override {
		cout << "Girth : " << 2 * 3.14  * mLength << endl;
	}
	void calcArea() {
		cout << "Area : " << (3.14)*mLength * mLength << endl;
	}

};


class Rectangle : public Polygon {
public:
	Rectangle(): Polygon(){}
	Rectangle(int point, float length) :
		Polygon(point, length){}
	~Rectangle() {};

	void calcGirth() override {
		cout << "Girth : " << mPoint * mLength << endl;
	}
	void calcArea() {
		cout << "Area : " << mLength * mLength << endl;
	}

};

int main() {
	Triangle tri(3, 10);  
	Rectangle rec(4, 10);  
	Circle cir(0, 5);

	cout << "--- Triangle class ---" << endl; 
	tri.calcGirth();  
	tri.calcArea();  
	cout << "--- Rectangle class ---" << endl;  
	rec.calcGirth();  
	rec.calcArea();  
	cout << "--- Circle class ---" << endl;  
	cir.calcGirth();  
	cir.calcArea();

	return 0;
}