프린이 입니다. 빨간 부분은 내용에 대해 제가 찾아보고 이해한 것인데 이에 대해 맞는 내용인지 답변 좀 부탁드립니다.


객체는 상태 및 동작의 소프트웨어 번들.

객채에는 상태와 동작이 존재하는데, 상태는 필드에 저장하며 메서드를 통해서 외부와 모든 상호작용을 수행함.

이때 내부 데이터를 은닉할 수 있는데 이것이 데이터 캡슐화.

메서드는 필드에 저장된 상태를 지정하고 변경할 수 있음.


객체 번들화의 이점은?

1. 모듈성 - 독립적으로 작성이 가능해 유지 관리가 쉬워 시스템 내부에 쉽게 전달이 가능.


2. 정보 은닉 - 내부 구현 정보를 숨긴채 메서드와만 상호작용을 함.

-1) Q. 그래서 정보 은닉의 이점은?

클라이언트가 내부 정보를 엑세스 할 수 없게 되어 인터페이스 내에서만 작업을 수행.

이렇게 된다면 굳이 내부 클라이언트를 수정할 필요 없이 간단히 클라이언트의 정보를 수정할 수 있음.

그렇게 되면 당연히 오류 발생도 줄일 수 있을 것 같음.


3. 코드 재사용 - 객체가 이미 존재 시 해당 객체를 사용 할 수 있어 복잡한 작업(구현/테스트/디버깅)이 가능해짐.


4. 연결 가능성 및 디버깅 용이성 : 특정 객채에 문제가 발생할 경우 그 객체만 수정, 제거, 대체가 가능.


-2) Q.데이터 캡슐화와 정보은닉(information-hiding)은 같은 것인가?

정보 은닉은 메서드가 어떻게 구현되는지 알 필요 없이 간단히 사용 가능하다는 점이고

데이터 캡슐화는 간단한 인터페이스로 구현하기 위해 사용하기 쉬운 방식으로 소프트웨어를 번들화 하는 것.

즉 두 개념은 다른 것으로 보임. 그러나 둘다 클래스를 사용하기 쉽게 하는 것이 목표라는 점에서 밀접한 연관이 있음.


-3) Q. 정보 은닉이 더 작은 단위(메서드), 데이터 캡슐화는 비교적 큰 단위(소프트웨어)로 보이는데 이게 맞는지

+클래스를 사용하기 쉽게 하는 것이 목표라고 하는데 이 뜻이 결국 메서드와 소프트웨어를 이해하기 쉽게 번들화하니

프로그래머가 프로그래밍을 할 때 클래스를 쓰는 것이 더 쉬워진다는 뜻으로 받아들이면 되는지.