관리 메뉴

JIE0025

[ C++ ] 객체지향 프로그래밍의 개념, 정보은닉과 캡슐화 본문

기타 학습/Language

[ C++ ] 객체지향 프로그래밍의 개념, 정보은닉과 캡슐화

Kangjieun11 2022. 5. 16. 14:51
728x90

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 설정하여 변경가능성을 제한시켰다.

 

 

 

캡슐화

외부로부터 중요한 데이터와 기능을 보호하고 은닉

변수와 함수간 연관성을 높이는것.. ! 

간접적으로 맴버함수(매서드)를 사용하여 접근함.

 

즉 정보은닉과 비슷한 개념인듯 하다 좀더 공부를 해봐야할것 같다.