C++프로그래밍/C++ 객체지향
은닉성(캡슐화)
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
반응형