본문 바로가기
C++/c++수업

캡술화 private public

by sj0020 2020. 10. 19.

변수는 private , 함수는 public 으로 작성하는 것이 
캡슐화에 기반한 class 작성방법.

 

#include <iostream>
using namespace std;

class Circle {
private: //변수는 private
	int radius; 

public:	 // 함수는 외부에서 접근 가능하도록 public
	Circle(); // 기본 생성자. 생성자는 타입이 없음.
	Circle(int r); // 매개 변수 있는 생성자

	~Circle();	// 소멸자
	// getter
	double getArea();

	// setter. 
	void setRadius(int r) { 
		radius = 4;
	}
};

Circle::Circle() {
	cout << "기본 생성자 호출\n";
	radius = 1;
	cout << "반지름 " << radius << "인 원 생성" << endl;
}

Circle::Circle(int r) {
	cout << "생성자 호출\n";
	radius = r;
}

double Circle::getArea() {
	return 3.14 * radius * radius;
}

Circle::~Circle() {
	cout << "소멸자 호출" << endl;
}

int main() {
	Circle donut; //객체 생성
	//donut.radius = 7; - 으로 못씀 . 변수는 private 으로 위에 선언해줬기 때문에  캡술화에 위반됨.
	donut.setRadius(7); // donut.radius = 7 이 아닌 이 방법으로 써줘야함
	cout << "donut 면적은 " << donut.getArea() << endl;

	Circle pizza(30);
	double area = pizza.getArea();
	cout << "pizza 면적은 " << area << endl;
}