Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 은닉성 본문
#include <iostream>
using namespace std;
// 객체지향 (OOP Object Oriented Programming)
// - 상속성
// - 은닉성 = (캡슐화)
// - 다형성
// 은닉성(Data Hiding) = 캡슐화(Encapsulation)
// 몰라도 되는 것을 숨긴다
// 숨기는 이유?
// - 1) 정말 위험하고 건드리면 안되는 경우
// - 2) 다른 경로로 접근하길 원하는 경우
// ex) 자동차
// - 핸들
// - 페달
// - 엔진
// - 문
// - 각종 전기선
// 일반 구매자 입장에서 사용하는 것?
// - 핸들/페달/문
// 몰라도 되는 부분 (오히려 건드리면 큰일남)
// - 엔진, 각종 전기선
// public(공개적) protected(보호받는) private(개인의)
// - public : 누구에게나 공개
// - protected : 나의 자손들한테만 허락
// - private : 나만 사용 << class Car 내부에서만 사용 가능
// 상속 접근 지정자 : 다음 세대한테 부모님의 유산을 어떻게 물려줄지?
// 부모님한테 물려받은 유산을 꼭 나의 자손들한테도 똑같이 물려줘야 하지는 않음
// - public : (실질적으로 거의 이것만 사용) 공개적 상속? 부모님의 설계 그대로 - (public -> public, protected -> protected)
// - protected : 보호받은 상속? 내 자손들한테만 물려줄 것. 보호 레벨을 올리는 개념 - (public -> protected, protected -> protected)
// - private : 개인적인 상속? 나까지만 사용하고 자손에게는 상속 X - (public -> private, protected -> private)
// 다만, 부모 멤버에서 private 였던 요소는 말 그대로 부모 멤버에서만 사용되므로 상속 자체가 X
class Car
{
public: // (멤버) 접근 지정자
void MoveHandle() { }
void PushPedal() { }
void OpenDoor() { }
void TurnKey()
{
// ...
RunEngine();
}
protected:
void DisassembleCar() { } // 차를 분해한다
void RunEngine() { } // 엔진을 구동시킨다
void ConnectCircuit() { } // 전기선 연결
public:
// 핸들
// 페달
// 엔진
// 문
// 각종 전기선
}
class SuperCar : public Car // 상속 접근 지정자 -> public 지정 안할 시 기본값은 private
{
public:
void PushRemoteController()
{
RunEngine();
}
}
// 캡슐화
// 연관된 데이터와 함수를 논리적으로 묶어놓은 것
class Berserker
{
public:
int GetHP() { return _hp; }
// 사양 : 체력이 50 이하로 떨어지면 광폭
// 최대한 같이 동작해야하는 로직은 하나로 묶어서 하나의 함수, 인터페이스로 만들어서 이 부분만 외부에서 사용할 수 있도록 해야함
int SetHP(int hp)
{
_hp = hp;
if (_hp <= 50)
SetBerserkerMode();
}
private:
void SetBerserkerMode()
{
cout << "광폭" << endl;
}
private:
// 결과적으로 멤버 변수를 생성하는 경우, 외부에서 직접 건들게 하는 경우는 거의 없고 getter setter와 같이 함수에 접근하도록 설계하는것이 일반적이다.
int _hp = 100;
}
int main()
{
// SuperCar car;
// // Car car;
// car.DisassembleCar(); // 접근 지정 access error
// car.RunEngine();
Berserker b;
b.SetHP(20);
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] 초기화 리스트 (0) | 2022.10.05 |
---|---|
[C++] 다형성 #1 ~ 2 (0) | 2022.09.28 |
[C++] 상속성 (0) | 2022.09.20 |
[C++] 생성자와 소멸자 #1 ~ 2 (0) | 2022.09.07 |
[C++] 객체지향의 시작 (0) | 2022.09.05 |