season97 2024. 9. 21. 10:57
728x90
반응형

※ C / C++을 이미 알고 있으나 개인적인 복습 및 공부를 위해 포스팅 하는 글이므로

C++에 대한 구체적인 정보를 담고 있지 않습니다.


 

▶ 은닉성 (캡슐화)

ㆍ 몰라도 되는 경우는 깔끔하게 숨기겠다.

 

ㆍ 연관된 데이터와 함수를 논리적으로 묶어 놓은 것

 

몰라도 되는 경우??

 

1) 정말 위험하고 건들이면 안되는 경우

class Car
{
public:
	void MoveHandle() {}
	void PushPedal() {}
	void OpenDoor() {}

	void TurnKey()
	{
		RunEngine();
	}

private:
	// ↑ 차를 사용하는 고객은 위코드를 사용할것이다. (키를 돌려 엔진구동)
	//일반적인 사용자가 아래 기능을 건들지는 않을 것이다. (차 수리할때나 쓸듯) 
	void DisassembleCar() {}//차 분해
	void RunEngine() {}		//엔진구동
	void ConnectCircuit() {}//전기선연결


};

ㆍ 아래 private로 묶어둔 함수는 일반 사용자는 필요하지 않기 때문에 묶어주었다.

 

 

2) 다른 경로로 접근하길 원하는 경우

class Berserker 
{
public:
	
	//사양 : 체력이 50이하로 떨어지면 버서커 모드 발동
	void SetBerserkerMode()
	{
		cout << "나 체력없음!! 매우강해짐!!" << endl;
	}

public:
	int _hp = 100;

};

ㆍ 나중에 신입이 갑자기 _hp를 20으로 지맘대로 바꿔버리면..? 오류가 나겠다.

class Berserker 
{
public:
	
	//사양 : 체력이 50이하로 떨어지면 버서커 모드 발동

	
	void SetHp(int hp)
	{
		_hp = hp;
		if (_hp <= 50)
		{
			SetBerserkerMode();
		}
	}

private:
	int _hp = 100;
	void SetBerserkerMode()
	{
		cout << "나 체력없음!! 매우강해짐!!" << endl;
	}
};

ㆍ 이런식으로 설계하는게 캡슐화중 다른 경로로 접근하길 원하는 경우 이다.

728x90
반응형