컴퓨터 구조

객체지향의 프로그래밍의 3요소 - 은닉성

monstro 2024. 3. 30. 18:08
728x90
반응형

상속성 : https://monstrosite.tistory.com/17

 

객체지향 프로그래밍의 3요소 - 상속성

객체지향 프로그래밍(Object Oriented Programming) 줄여서 OOP의 3가지 요소에 대해 알아보고자 합니다. 첫 번째 시작으로, 상속성에 대해 알아보겠습니다. 위의 코드에서 Knight 클래스는 아주 간단하게

monstrosite.tistory.com

 

저번 포스팅에서는 객체지향 프로그래밍의 3요소 중 하나인 상속성에 대해 배워보았습니다.

이번 포스팅에서는 상속성에 이어 은닉성에 대해 배워보겠습니다.

 

 

1) 은닉성이란?

자동차를 샀다!

 

자동차를 구매했다고 생각해봅시다. 

자동차를 운전하기 위해서는 기본적으로 핸들, 페달, 기어 등을 알아야 합니다.

그런데 사실 자동차라는 것을 구성하는 것은 위에서 언급된 부분말고도 더 많은 부분이 포함되어 있습니다.

 

가령, 엔진의 피스톤과 전기선 같은 세세한 부품들 같은 경우입니다.

그런데, 단순한 운전자인 우리가 자동차의 세세한 부품까지 알고 있어야 할까요?

 

단순히 차를 운전하는 것 외에는 별다른 부분을 알고 있어야 할 필요는 없어 보입니다.

게다가 차의 세세한 부분을 제대로 알고 있지 않은 상태에서 건드리는 것은 잘못하면 차를 고장낼 수도 있는 일입니다.

 

이러한 개념이 프로그래밍에도 동일하게 적용됩니다.

그리고 은닉성(Data Hiding)은 접근 지정자로 구현됩니다.

 

 

2)  접근 지정자

접근 지정자는 다음으로 구성됩니다.

 

  • public
  • protected
  • private

순서대로

  • 가장 약한 보안수준(누구나 접근 가능)
  • 상속된 클래스클래스 본인 외에는 외부에서 접근 불가
  • 클래스 본인 외에는 외부에서 접근 불가

의 방식으로 사용됩니다.

 

위의 접근 지정자들로 하여 우리는 가려야 할 부분은 가리고, 공유할 부분은 공유하게끔 하여

데이터의 보안을 관리해줄 수 있습니다.

 

기사와 마법사 클래스

 

직업들이 공통적으로 가져야 하는 능력치는 public으로써 외부에서도 접근할 수 있게 설계하였고,

각 직업들과 그 계통의 직업들이 가져야 하는 데이터나 행동은

protected로 선언하여 본인과 상속된 클래스 외에는 접근을 막았습니다.

마지막으로, 직업들의 고유한 ID는 private으로 묶어 해당 클래스외에는 접근을 막게끔 해주었습니다.

 

 

3) 캡슐화(Encapsulation)

그런데, 문제가 발생했습니다. 

대격변 급 패치로, Mage의 데이터를 변경해야 하는 상황이 발생했습니다.

이러한 경우에 우리는 어떻게 외부에서 클래스 내부의 데이터에 접근해야 할까요?

 

답은 캡슐화 입니다. 

 

캡슐화는 내부의 데이터와 메소드를 하나로 묶는 방법으로,

이를 통해 데이터에 접근하는 것은 물론 수정하는 것 역시 어렵지 않게 할 수 있습니다.

 

메이지의 데이터를 수정

 

위의 캡슐화를 통해 Mage 클래스의 MP와 ID에 접근하고 또 수정할 수 있습니다.

 

은닉성을 통해 우리는 숨겨야 할 부분을 숨기고, 보여야 할 부분은 보여줌으로써 

상황에 맞게 코드 간의 구조를 맞춰줄 수 있습니다.

 

또, 캡슐화를 통해 코드 간의 연결을 수월하게 만들어 주는 것도 보았습니다.

 

다음에 이어질 포스팅에서는 객체 지행 프로그래밍의 마지막 요소인 '다형성'에 대해 알아보겠습니다.

728x90
반응형

'컴퓨터 구조' 카테고리의 다른 글

싱글톤 패턴  (1) 2024.11.12
멀티쓰레드란?  (0) 2024.07.27
객체지향의 프로그래밍의 3요소 - 다형성  (0) 2024.03.30
객체지향 프로그래밍의 3요소 - 상속성  (0) 2024.03.29
프로그래밍 개론  (0) 2024.02.18