캡슐화 Encapsulation
OOP의 4대 특성
* 캡슐화는 OOP(Object Oriented Programming)의 4대 특성 중 하나로
주류 OO언어에 꼭 들어가는 개념이다.
* 캡슐화는 데이터와 함수를 클래스라는 개념으로 묶은 것이다.
또한 접근제어자를 통해 다른 사람들이 클래스를 사용할 때
선택적으로 제한함으로써 클래스를 보호하는 것이다.
* 캡슐화란 사용자에게 선택적으로 제공하는 것이다.
클래스, 구조체의 발전된 버전
* 구조체란 데이터들의 묶음이었다.
* 구조체를 사용하면, 자료형이 다른 데이터들을 하나의 개념에 묶을 수 있었다.
* 구조체를 사용하면, 연관된 데이터들을 하나의 개념에 묶을 수 있었다.
* 이러한 장점들로 구조체의 사용은 사용자의 가독성과 이해를 돕는 역할을 하기도 한다.
* 클래스가 구조체의 발전된 형태라는 것은 구조체에 아쉬운 점이 있다는 뜻이다.
구조체는 연관된 데이터만을 묶을 수 있었다.
연관된 데이터들을 사용하는 연관된 함수 또한 있는데 말이다.
따라서 클래스는 (데이터 + 함수)가 되었다.
* 이러한 필요로 클래스가 만들어졌고,
클래스는 위와 같은 구조체의 장점을 이어받았다.
우리는 묶음의 개념을 통해 여러 장점을 활용할 수 있다.
클래스와 접근제어자
* 클래스만으로 캡슐화가 이루어지지는 않는다.
접근제어자를 통해 어떤 것을 누구에게 제공할지를 결정해야 캡슐화가 완성된다.
* 클래스, 변수, 함수에 접근제어자를 넣을 수 있다.
어디까지 정보를 보호해야 할까
* 캡슐화를 사용해 정보은닉을 할 수 있다.
이는 클래스나 개체가 망가지는 것을 막을 수 있다.
하지만 모든 정보를 보호할 수는 없다.
사용자가 이용을 할 수 있는 최소한의 부분은 공개를 해야 한다.
* 중요한 점은 사용자가 최소한의 정보만을 제공받아야 하는 것이다.
또한 정보 중에 잘못 사용하면 개체가 망가져버리는 일이 없어야 한다.
또한 사용자가 클래스의 내부 동작을 알아야 한 제대로 사용할 수 있는 경우를 피해야 한다.
* 즉, 클래스가 망가지지 않고 내부 동작을 알지 못하여도 잘 사용할 수만 있다면
나머지는 비공개로 하는 것이 대부분 옳다.
마지막
* 캡슐화란 클래스를 사용해
연관된 데이터와 함수를 하나의 개념에 집어넣고
접근제어자을 설정 하여
특정 데이터와 함수를 보호하거나 공개하는 등
선택적으로 정보를 제공한다.
* 이러한 정보은닉은 오히려 사용자를 편하게 한다.
모든 정보를 가지고 있는 것보다
자신이 사용하는 것만 보여주는 것이
이해와 가독성에 좋다.
귀여운 그림은 쭐어님이 그리셨습니다.
'자바 JAVA' 카테고리의 다른 글
[JAVA]자바 - 다형성 Polymorphism (1) | 2021.06.30 |
---|---|
[JAVA]자바 - 데이터 추상화 Data Abstraction (0) | 2021.06.29 |
[JAVA]자바 - 빌드와 라이브러리 (0) | 2021.06.24 |
[JAVA]자바 - 패키지 Package (0) | 2021.02.08 |
자바 JAVA (0) | 2021.02.07 |