캡슐화 추상화
오늘은 내가 OOP 개념중에 해깔렸던,
캡슐화랑 추상화에 대해 자세히(?) 간단하게(?) 알아보자.
종종 업무를 하다보면, 따뜻한-아이스 아메리카노(?)를 만들어야 할때가 있는데, 뭔x소린가 싶겠지만,
소프트웨어 개발 경험이 쌓이면서 이게 무슨말인지 공감하는 날이 올수도..
내가 정의하는 캡슐화와 추상화의 차이는,
추상화란 무엇을 하는가에 대한 개념을 정리 하는거고, (인터페이스)
캡슐화란 어떻게 하는가에 대한 것을 감추는 개념인거지. (정보은닉)
내가 이 정의를 나 스스로 가지기 전까지 엄청헤깔렸었어. (혹시 다른 의견있으시면 댓글 환영)
핸드폰을 예를 들어보자.
추상화한다고 할때, 핸드폰이 뭐하는지에 대한 정의 (전화, 인터넷, 카메라(?) .. )를 내리고, 이런 추상적인 개념이 모이면 핸드폰이다라고 하는게 추상화고,
캡슐화는 전화가 어떻게 되는지 인터넷이 어떻게 되는지에 대한 구체적인내용은 안으로 숨겨서(캡슐화 되어) 있어서 외부노출하지 않는다. 이게 캡슐화인거지.
이걸 왜 하느냐...
(뭐 안해도 되. 개념을 알고 있으면 되는거고 이런 개념들이 쌓여야 좋은 프로그래머가 되는거지 꼭 추상화 캡슐화를 해야 한다는건 아니니까.)
추상화는 복잡한 시스템을 핵심만 (뭘하는지) 드러내서 이해나 설계를 쉽게 하고
캡슐화는 내부 데이터나 기능을 보호하고, 구현을 숨겨서 무결성과 보안을 유기하기 위한거야.
'소프트웨어 엔지니어 > 일반' 카테고리의 다른 글
| GPU? NVIDIA? 왜 요새 난리인가? (7) | 2024.09.26 |
|---|---|
| [소프트웨어 엔지니어] 에자일 방법론 (1) | 2024.09.19 |
| [소프트웨어 엔지니어] 깊은 복사, 얕은 복사 (0) | 2024.09.17 |
| [소프트웨어 엔지니어] 프로그램 메모리 구조 (1) | 2024.09.13 |
| [소프트웨어 엔지니어] 스탠다드 라이브러리 왜 필요할까. (1) | 2024.08.28 |