Adventure Time - Jake 캡슐화란? 캡슐화의 장점 - 데이터 추상화, 정보 보호, 정보 은닉
본문 바로가기
Back-end/c,c++

캡슐화란? 캡슐화의 장점 - 데이터 추상화, 정보 보호, 정보 은닉

by bogyoi 2024. 1. 1.

캡슐화란?

-데이터와 데이터를 처리하는 멤버 함수를 함께 포함하는 캡슐로 만들어 사용

-멤버함수는 데이터가 항상 정상적인 범위 내에서 유지될 수 있도록 관리

 

 

멤버 데이터 : 속성,. 사용자 정보를 포함, 각 데이터에는 정상적인 범위가 지정되어있음.

멤버 함수: 데이터를 처리하는 기능을 구현.

 

Private: 내부적으로 사용(내부적으로 보호가 되면서 사용가능). 멤버 함수에게만 직접 접근이 허용. 클래스 외부에서 private 데이터를 사용하기 위해선 public으로 공개된 인터페이스를 거쳐야함.

Public: 외부적으로 사용할수 있게 허용(외부로 공개된 멤버)

Friend :클래스의 함수는 아니지만 클래스 안에 있는 정보들을 자기가 직접 접속할 수 있게 허용해주는 것. 시스템이 정의한 객체들만 사용할 수 있도록 허용되어있음(제한적)

 

외부에 있는 프로그램이 있을 때, 내부에 있는 데이터를 사용하기위해 직접 접속하는 것은 허용 x,

내부에 있는 데이터를 읽거나 사용하려면 Public 멤버함수를 통해서 전달(접근)이 되어야 함. 이렇게함으로써 데이터 멤버의 값이 항상 정상적인 범위 안에 있도록 유지해줄 수 있다.

 

, Private Date Member는 항상 외부로 공개되어있는 public member function을 통하여 접근될 수 있게 함으로써 정보를 보호하며, 내부데이터가 항상 정상적인 범위에서 유지될 수 있게 한다.

 

 

이렇게 외부 접속과 내부 구현을 분리함으로써 외부 접속은 그대로 유지한 채, 내부적인 구현 방법만 변경할 수 있게 하는 정보 은닉클래스 내부에서 데이터를 처리하는 로직은 새로운 기술이 개발됨에 따라 계속 바뀔 수 있으므로 구현기술에 대한 상세한 내용을 사용자에게 알려주지 않고 은닉시키는 것이다.

함수 이름과 파라미터는 같은데(즉, 외부적으로 드러나는 함수원형은 동일) 내부적으로 구현하는 부분만 변경한다는 것.

 

 

새로운 기술 도입이 쉽고 새로운 기술이 도입되어도 사용법에 변경이 없도록 하고, 여러 방식으로 구현되어도 기본 기능은 동일하게 하여 재사용성도 높이고 더 저렴한 비용으로 구현이 가능하게 된다는 장점이 있다.

 

정보 보호?

->Public과 private로 정보 보호를 한다.

클래스에 포함되는 사용자 데이터는 기본적으로 prevate 선언이 되어 보호 된다. 사용자가 직접 접속하는 것을 방지하며, 관련 멤버 함수를 통해서만 사용할 수 있게 하여 정보를 보호한다.

Public으로 선언되는 항목은 외부로 알려지는 사항으로, 주로 사용자들에게 제공되는 API들이 public 멤버 함수로 선언되어 공개되며, public 멤버 함수는 사용자들이 사용할 수 있도록 프로토타입 형태로 공개된다.