강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

이채림님의 프로필 이미지
이채림

작성한 질문수

클린 아키텍처 책 읽는데, 캡슐화에 대해 질문 드립니다

작성

·

260

0

첫 번째로, C언어의 경우에 헤더 파일에 멤버 변수가 드러나지 않지만, C++은 헤더 파일에 멤버 변수가 드러나기 때문에 캡슐화가 깨졌다고 나옵니다. 그 멤버 변수의 존재를 알게 되는 것이 문제라는데, 알게 되면 어떤 문제가 발생할 수 있나요?

두 번째로, 자바와 C#은 헤더와 구현체를 분리하는 방식을 버려서 캡슐화가 훼손됐고, 이로 인해 클래스 선언과 정의를 구분하는 것이 불가능해졌다고 나옵니다. 클래스 선언과 정의를 구분해야 하는 이유가 뭔가요?

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

캡슐화는 객체 지향 프로그래밍에서 중요한 개념 중 하나인데, 외부에서 내부 구현을 숨기고 필요한 정보만 제공하는 것을 의미합니다. 이는 객체 간 상호작용과 유지보수성을 증가시킬 수 있습니다.

C++에서 멤버 변수가 헤더 파일에 드러나는 것은 캡슐화 규칙을 깨져 객체의 내부 구조가 외부로 노출되기 때문에 문제가 됩니다. 이는 사용자가 객체를 사용하는 방법을 자유롭게 변경할 수 있어서 객체 내부 구조에 예기치 못한 문제가 발생할 수 있고 유지보수성이 저하될 수 있습니다.

클래스를 정의할 때 선언과 구현을 분리하는 이유는 컴파일 시간과 링크 시간을 단축시키는 것인데, 선언만 해도 객체를 사용할 수 있게끔 하는 것이 목적입니다. 그러므로 선언과 구현의 분리는 캡슐화를 유지시키기 위한 방법 중 하나입니다.

이상입니다. 더 궁금한 점이 있으면 언제든지 물어보세요 :)

이채림님의 프로필 이미지
이채림

작성한 질문수

질문하기