C++/공부내용

C++ Classes - Encapsulation

HappyFrog 2022. 6. 29. 18:20


 

 

 

캡슐화

캡슐화의 의미는 "민감한"데이터를 유저들로부터 확실히 숨기는 것입니다. 이것을 하기 위해서 당신은 반드시 클래스의 변수/속성을  private 으로 선언해야 합니다. 만약 당신이 private멤버의 값을 다른 이가 읽고 수정할 수 있도록 하고 싶다면, 당신은 public으로 getset메서드를 제공할 수 있습니다.

 

 

 


Private 멤버에 접근하기

private 속성에 접근하기 위해선 public인 'get'과 'set' 메서드를 사용해야 합니다:

 

 

예시

#include <iostream>

using namespace std;

class Employee {
private:
	// private 속성
	int salary;

public:
	// 설정하기
	void setSalary(int s) {
		salary = s;
	}
	
	// 얻어오기
	int getSalary() {
		return salary;
	}
};

int main() {
	Employee myObj;
	myObj.setSalary(10000);
	cout << myObj.getSalary();
	return 0;
}

 

예시 설명

 salary 속성은 접근이 제한되는  private 입니다.

 

public인  setSalary()  메서드는 매개변수를 ( s ) 취하며 이것을  salary  속성에 할당합니다. (salary = s)

 

public인 getSalary()  메서드는 private인  salary 속성의 값을 반환합니다.

 

 main() 의 내부에서 우리는  Empoyee  클래스의 객체를 생성했습니다. 우리는 지금  setSalary()  메서드를 사용하여 private 속성에  50000 이라는 값을 할당했습니다. 그리고 이것을  getSalary()  메서드를 통해 값을 받아올 수 있습니다.

 

 

 


왜 캡슐화를 할까요?

  • 당신의 클래스의 멤버를 가능한 자주 private으로 선언하는 것은 좋은 연습이 됩니다. 당신이 코드의 한 부분을 다른 부분에 영향없이 변경할 수 있게하기 때문에 캡슐화는 당신의 데이터에 대해 더 나은 제어를 보장합니다.
  • 데이터의 보안 수준이 증가합니다.