N° 01 — 목록
'encapsulation' (3)
-
Infra Architecture/Network FundamentalsNetwork Fundamentals - 01. OSI 7계층과 TCP/IP 모델
우편물이 봉투에 싸여 상자에 담기는 이유 — OSI 7계층과 TCP/IP 모델브라우저 주소창에 example.com을 치면 화면에 웹 페이지가 뜬다. 이 과정이 얼마나 복잡한지 — 대부분의 사람은 생각하지 않는다. 하지만 그 짧은 순간에 컴퓨터 안에서는 여러 층의 소프트웨어가 차례로 동작하며, 데이터가 한 층에서 다음 층으로 넘어가면서 포장되고, 주소가 붙고, 전송 수단이 선택된다. 마치 편지를 접어 봉투에 넣고, 주소를 쓰고, 우편번호를 적고, 배송 라벨을 붙여 택배 상자에 담는 것처럼. 이 "층(layer)"들을 체계적으로 나눈 것이 OSI 7계층 모델이고, 실제 인터넷이 쓰는 것은 그 간소화 버전인 TCP/IP 모델이다.이 글은 네트워크를 계층(layer)으로 나누어 이해하는 법을 다룬다. 왜 7개..
-
Software Architecture/PrinciplesPrinciples - 05. 캡슐화와 정보 은닉
계기판 뒤에 엔진이 있다 — 캡슐화와 정보 은닉운전자가 자동차를 몰 때 보는 건 계기판이다 — 속도계, 연료 게이지, 엔진 경고등. 엔진 내부의 실린더 배열이나 점화 타이밍은 보이지 않는다. 엔진이 터보에서 하이브리드로 바뀌어도, 계기판이 같으면 운전자는 모른다. 이것이 캡슐화(encapsulation)다 — 내부 구현을 숨기고 외부에 필요한 것만 노출한다.David Parnas는 1972년 논문에서 모듈을 나누는 기준으로 "무엇이 변할 수 있는가"를 제시했다. 변할 가능성이 있는 것을 모듈 안으로 숨기고, 변하지 않는 것만 인터페이스로 노출한다. 그러면 내부가 바뀌어도 외부(다른 모듈)가 영향을 받지 않는다.캡슐화의 두 층 — 데이터 은닉과 구현 은닉데이터 은닉은 객체의 내부 상태(필드)를 외부에서 직..
-
Backend Development/JavaJava - 05. class and object
private 필드에 public setter를 붙이면 캡슐화가 아니다 — 클래스 설계의 함정많은 Java 튜토리얼이 "캡슐화 = 필드를 private으로 하고 getter/setter를 만드는 것"이라고 가르친다. 이 설명은 틀렸다.생각해 보자: private int balance;에 public void setBalance(int b) { this.balance = b; }를 붙였다. 외부에서 balance = -1000000을 직접 못 할 뿐, setBalance(-1000000)으로 똑같이 음수 잔액을 만들 수 있다. 비밀번호를 자물쇠로 걸어두고 열쇠를 현관에 두는 것과 같다.진짜 캡슐화는 "객체가 자신의 상태를 스스로 보호하는 것"이다. 이 글은 클래스와 객체의 생성, 접근 제어, 생성자 설계를..