본문 바로가기
프로그래밍 패러다임/객체 지향 프로그래밍

OOP.2.추상화와 캡슐화 - 2

by 시니성 2023. 7. 6.

이번 주제는 캡슐화 입니다. 

저번 글에서 캡슐화 부분을 간단히 언급하고 넘어갔기 때문에 자세히 살펴보려 합니다.

 

 

먼저 캡슐화의 기본 개념은 객체를 추상화해 나온 정적 특성과 동적 특성을 한데 묶어 관리하는 것 입니다.

 

캡슐화로 얻어지는 효과는 두 가지가 있습니다.

 

데이터 보호와 절차 은닉입니다

 

데이터 보호는 정적 모델링을 통해 추출된 Field 데이터 접근 권한을 클래스 내부로 제한함으로써, 외부에서 데이터 조작이 불가능 하도록 보호합니다.

데이터 조작은 오직 공개된 Method를 통해서만 가능합니다.

또 클래스 외부에서 Method를 단순 호출하여 사용하므로 내부에서 어떤 절차로 메소드가 작동하는지 절차적 은닉이 가능해집니다. 이것을 절차 은닉이라고 부릅니다.

 

Java에서는 Access Modifier를 통해 데이터에 대한 접근 권한을 부여함으로써 데이터를 보호할 수 있습니다.

public, default, protected, private 총 4종류의 접근제어자가 있습니다.

각각의 권한이 미묘하게 다르지만 주로 쓰이는 public과 private 두 가지만 짚고 넘어 가겠습니다.

 

먼저 public은 '공공의'라는 영단어의 뜻에 걸맞게 누구나 접근가능하도록 하는 접근 제어자입니다.

반대로 private은 클래스 내부에서만 접근할 수 있도록 하는 접근제어자 입니다.

 

때문에 일반적으로 모든 field는 앞서 설명드린 데이터 보호를 위해 private 접근제어자를 사용해 선언되게 됩니다.

그렇다면 클래스 외부에서 데이터를 조작하기 위해 사용되는 method가 일반적으로 public으로 선언되는 이유는 어찌보면 당연하게 되는것이겠죠.