[ C++ ] 객체지향 프로그래밍의 개념, 정보은닉과 캡슐화
Object : 사물/대상 (우리 주변에 존재하는 물건,대상)
나는 과일장수에게 두 개의 사과를 구매했다.
라는 문장 안에서 객체는
나, 과일장수, 사과 이다.
객체지향 프로그래밍은 실제 사물, 대상, 그리고 행동을 실체화 하는 형태의 프로그래밍으로
나 (객체) 는 과일장수(객체)에게 2000원을 주고 2개(data)의 사과(객체)를 구매했다(행동)]
- 하나 이상의 상태정보(data). -> 변수
- 하나 이상의 행동(기능) -> 함수
일반적인 변수로 선언
Fruit apple ;
Fruit banana;
동적할당
Fruit * p1 = new Fruit;
>> 클래스에서 접근제어 지시자 없이 선언되면 private이다.
좋은 클래스의 조건 : 정보은닉과 캡슐화!
정보은닉
안전한 형태로 멤버 변수의 접근은 유도
- 멤버 변수는 private로 선언해 임의로 값이 변경되는 것을 막기
- 멤버 변수의 값을 참조하고 저장하는 함수를 public으로 정의
int GETX() const;
bool SetX(int xpos);
int GETY() const;
bool SetY(int ypos);
>>>> 액세스 함수(Access function)
클래스 정의시 호출될 함수들 위주로 멤버함수를 구성하는게 맞지만
나중에 필요할 수 있다고 판단될 떄 도 멤버로 포함시키는 경우가 많다
여기에서 대표적인 나중에 필요할 수 있다고 판단되는 멤버함수가 엑세스 함수
const 함수 내에선 const가 아닌 함수의 호출이 제한된다
const 로 선언되지 않은 경우에 멤버변수에 저장된 값을 변경하지 않더라도 변경 할 수 있는 능력이 있다.
이때 const를 사용함으로써 변경 가능한 함수의 호출을 아예 제한할 수 있다.
int GETX 와 GETY는 값을 가져오기만 하면 되는 함수로써, const 설정하여 변경가능성을 제한시켰다.
캡슐화
외부로부터 중요한 데이터와 기능을 보호하고 은닉
변수와 함수간 연관성을 높이는것.. !
간접적으로 맴버함수(매서드)를 사용하여 접근함.
즉 정보은닉과 비슷한 개념인듯 하다 좀더 공부를 해봐야할것 같다.