
캡슐화란 객체의 내부 구조 및 데이터를 캡슐처럼 감싸 외부에서 직접 볼 수 없게 은닉하여 보호하는 것으로 접근제어자와 함께 사용된다.
캡슐화는 중요한 데이터를 쉽게 바꾸지 못하도록 하고
사용하는 가장 큰 이유는 정보은닉에 있다.
캡슐화 == 정보 은닉 으로 주입식 암기를 하는 경우가 많다.
이는 틀린 소리는 아니지만 정보 은닉 개념에 일부분일 뿐이다.
좀더 자세히 들어가자면, 자바 프로그래밍의 정보 은닉 기법은 대표적으로 3가지 정도가 있다.
즉, 캡슐화 == 정보 은닉이 아니라, 정보 은닉 기법중 하나가 캡슐화 라는 것이다.
캡슐화를 사용하는 방법은 정보은닉이라는 목적을 달성하기 위해 접근 제한자를 이용하게 됩니다.
접근 제한자 중 private을 이용하여 변수 및 메서드들에 접근하지 못하도록 제한하고 외부에서 접근 가능한 특정 메서드들을 통해 간접적으로 접근할 수 있도록 합니다.
대표적으로 getter와 setter를 통해 데이터를 저장하거나 사용하는 것이 있습니다.
캡슐화를 사용하기 위해 설계할 때는 응집도(Cohesion), 결합도(Coupling)에 대해 생각을 해야 됩니다.
응집도라는 것은 모듈에 변경이 일어날 때 모듈 내부 요소들 간의 변경 정도를 의미하는데 자바에서 응집도는 클래스 내부의 변수와 메서드 간에 의존되어 있는 정도를 말합니다.
다른 말로는 외부에 노출시킬 메서드들을 정의할 때 클래스 내부에 선언되어 있는 변수들이 서로 관련되어 있어 많이 사용될수록 응집도가 높아진다고 생각하면 됩니다.
결합도라는 것은 모듈들 간의 의존되어 있는 정도를 의미하는데 자바에서 결합도는 클래스들 간의 의존되어 있는 정도를 말합니다.
다른 말로는 한 클래스의 노출된 메서드가 사용될 때 다른 클래스에도 영향을 미치는 정도라고 생각하면 됩니다.
가장 좋은 설계 방법은 응집도를 높게, 결합도를 낮게 설계하는 것이라고 합니다.
왜냐하면 이렇게 설계된 코드들은 유지보수할 때 이점을 가져오기 때문입니다.
좋은 설계는 낮은 응집도와 높은 결합도를 구성하는 것이다 (o,x)
답 : X
객체지향 기법에서 캡슐화에 대한 설명으로 틀린 것은?
1) 캡슐화를 하면 객체 간의 결합도가 높아진다.
2) 캡슐화된 객체들은 재사용이 용이하다.
3) 프로그램 변경에 대한 오류의 파급 효과가 적다.
4) 인터페이스가 단순해진다.
답 : 1번
캡슐화는 객체의 ( ) 와 ( ) 을 높임으로써 객체의 ( )를 지향한다.
빈칸을 채워주세요
답 : 응집도, 독립성, 모듈화
정보은닉을 위해서 객체에 있는 데이터와 함수들을 모두 은폐시켜야 한다 (o/x)
그 이유는?
답 : X
정보 은닉의 종류 중 캡슐화는 객체의 ( ) 및 ( )를 은닉하는 것이다.
답 : 필드, 메소드
멤버변수의 경우 보통 ( )접근제어자를 사용하여 외부로부터의 직접적인 접근을 막고
( )를 만들어 사용함으로써 내부 데이터에 제한적 접근을 할 수 있게 한다.
답 : private, getter/setter

1-1. Sepecial 클래스는 한 번만 생성하게끔 개발하려고 한다. 이러한 작업을 설계하는 디자인 패턴은?
1-2. 1번 이미지는 해당 디자인 패턴이 미적용된 상태이다. 수정해야할 줄번호와 수정된 코드를 쓰시오
2. class Person 이미지 참고

2-1. Person 클래스의 name을 읽기전용으로 설계한다고 했을 때 작성해야 할 메서드 이름과 접근지정자를 작성하시오
2-2. Person 클래스의 name을 쓰기전용으로 설계한다고 했을 때 작성해야 할 메서드 이름과 접근지정자를 작성하시오
답
1-1 : SingleTon
1-2 :
3번 - private static Sepecial sepecial;
5번 - private Sepecial(){}
9번 - public static getInstance(){ / 내용 / }
2-1 : public getName
2-2 : public setName