다섯 살도 알 수 있게 · SW공학

캡슐화·정보은닉이 뭐예요?

캡슐화와 정보은닉을, 작가가 서랍 속 메모는 숨기고 완성된 챕터만 제출함으로 건네는 이야기로 풀어봤어요.

작가의 서랍(메모·초안)제가 대신 고쳐둘게요!편집장이 작가 서랍 속 메모를 직접 꺼내 고쳐요

편집장이 작가의 서랍 속 메모를 직접 꺼내 고쳐요.서랍 속은 원래 작가만 보던 곳이에요.

메모가 자꾸 바뀌어서 뭐가 맞는지 모르겠어요서랍 속을 아무나 건드리면, 메모끼리 앞뒤가 안 맞게 꼬여요

다들 서로 서랍에 손을 대니 메모끼리 앞뒤가 안 맞아요.서랍 속을 아무나 건드리면, 메모끼리 앞뒤가 안 맞게 꼬여요.

잠긴 서랍(비공개)제출함(공개 창구)완성된 챕터캡슐화 = 서랍 속은 숨기고, 정해진 창구로만 건네줘요

캡슐화는 서랍 속은 숨기고, 정해진 창구로만 건네는 거예요.서랍 속을 바꿔도 제출함 모양만 그대로면 바깥에선 아무도 몰라요.

안을 감추기서랍은 작가만 열어요
창구로만 공개완성본만 건네요
직접 접근 막기서랍을 남이 못 열어요
안은 바꿔도 돼요창구 모양만 같으면요
잠긴 서랍 (private)끄적인 메모, 지운 문장아직 안 끝난 생각밖에선 못 봐요제출함 (public)완성된 챕터만정해진 형식으로여기로만 주고받아요안(서랍)을 바꿔도 창구(제출함) 모양만 그대로면 바깥에선 아무도 몰라요

미완성 메모는 잠긴 서랍에 두고, 완성된 챕터만 제출함에 넣어요.서랍 속을 바꿔도 제출함 모양만 같으면 바깥에선 아무도 몰라요.

서랍을 잠그면 남이 메모를 못 건드려요제출함 모양 자체를 잘못 짰다면, 그건 캡슐화가 못 막아요캡슐화는 '안을 숨기는 것'이지, '설계를 잘 짜는 것'까지 보장하진 않아요

캡슐화해도 설계 자체의 실수는 못 막아요.캡슐화는 '안을 숨기는 것'이지, 설계를 잘 짜는 것까지 보장하진 않아요.

한 줄로

캡슐화·정보은닉은 데이터와 기능을 하나로 묶어 안은 숨기고, 정해진 창구(인터페이스)로만 주고받게 하는 거예요.

캡슐화는 객체의 속성(데이터)과 메서드(기능)를 하나로 묶고, 외부에는 공개(public) 인터페이스만 노출해 내부 구현을 감추는(정보은닉) 객체지향의 핵심 원칙이에요. 내부 구조(비공개/private)를 자유롭게 바꿔도 외부 호출 방식이 그대로면 영향이 없어 변경에 강해지고, 의도치 않은 직접 조작도 막아줘요.

어른들은 이렇게 불러요

캡슐화
Encapsulation
데이터+기능을 하나로 묶기. 안은 숨기고 창구만 공개해요.
정보은닉
Information Hiding
서랍을 잠그는 것. 내부 세부를 바깥에 숨기는 설계 원칙이고, 캡슐화는 이를 이루는 대표 방법이에요.
인터페이스(공개 메서드)
Public Interface
제출함. 바깥과 주고받는 유일한 창구예요.
private 변수
Private Field
잠긴 서랍 속 메모. 바깥에서 직접 못 건드려요.
getter/setter
Getter/Setter
창구 직원이 메모를 대신 꺼내주는 손. 서랍을 열어주는 대신, 메모를 정해진 방식으로만 건네줘요.
모듈화
Modularity
서랍을 책상마다 따로 두기. 안을 잘 감춘 부품일수록 독립된 모듈로 나누기 쉬워요.
리팩토링
Refactoring
서랍 속 메모를 정리하기. 창구 모양은 그대로 두고 안만 정리해요. → 겉은 그대로, 속만 다시 다듬기
단위테스트
Unit Test
창구에 직접 넣어보는 확인. 제출함(공개 인터페이스)만 보고도 동작을 검증할 수 있어요.
다음 이야기
미리 몰려보는 가짜 독자들 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →