[c언어] 캡슐화와 정보 은닉

프로그래밍에서 캡슐화정보 은닉은 객체지향 프로그래밍에서 중요한 개념입니다. 이 두 가지 개념은 코드를 모듈화하고 보다 안전하고 예측 가능한 방식으로 사용할 수 있도록 도와줍니다.

캡슐화

캡슐화는 속성과 메서드를 하나로 묶어 외부에서의 접근을 제한하는 것입니다. 이것은 객체의 상태를 보호하고 유지보수를 쉽게 만들어줍니다. 즉, 객체의 데이터와 메서드를 하나로 묶어 응집력 있는 모듈로 만드는 것이라고 볼 수 있습니다.

C 언어에서는 캡슐화를 구조체를 사용하여 달성할 수 있습니다. 구조체를 선언하고 해당 구조체 내부에 변수와 함수를 함께 묶어주면, 이는 캡슐화의 예라고 할 수 있습니다.

typedef struct {
    int property;
} Encapsulation;

void setProperty(Encapsulation *encap, int value) {
    encap->property = value;
}

int getProperty(Encint`encapsulation) {
    return encapsulation->property;
}

위의 예제에서, Encapsulation 구조체 내부의 property 변수와 setProperty, getProperty 함수를 통해 정보는 캡슐화되며, 외부에서 직접적인 접근을 제한할 수 있습니다.

정보 은닉

정보 은닉은 캡슐화의 결과물로 볼 수 있습니다. 이는 객체 내부의 세부적인 동작을 숨기고 외부 모듈이 객체를 상호작용을 할 때에는 인터페이스만 이용할 수 있도록 하는 것입니다.

그러나 C 언어에서는 정보 은닉이 엄격하게 적용되지는 않습니다. 모듈의 경계를 엄격히 정의하기 어렵고, 함수와 데이터를 외부에서 제한없이 접근할 수 있기 때문입니다. 하지만, 적절한 네이밍 규칙과 주석을 통해 정보 은닉을 시뮬레이션할 수는 있습니다.

참고 자료: