ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20250327_(2) Encapsulation
    Study/C# 2025. 3. 27. 18:25

     


     

     


     

    캡슐화(Encapsulation)는 객체 지향 프로그래밍(OOP)의 핵심 원칙 중 하나로, 객체의 내부 상태(필드)를 외부로부터 숨기고, 해당 상태에 대한 접근을 메서드를 통해 제한하는 것을 의미한다.

    C#에서는 일반적으로 private 접근 제어자를 통해 필드를 외부에서 직접 접근하지 못하게 하고, public 메서드 또는 property를 통해 간접적으로 접근할 수 있도록 구현한다.

     

    데이터 보호 + 접근 제어 => 캡슐화

     


    1. 캡슐화를 해야하는 이유

    캡슐화는 단순히 "데이터를 숨긴다"는 것을 넘어서 소프트웨어의 신뢰성과 유지보수성, 재사용성을 향상시키는 역할을 한다. 그 구체적인 이유는 다음과 같다.

     

    (1) 데이터 보호 (Data Hiding)

    • 외부에서 객체 내부 데이터를 직접 수정할 수 없도록 차단함으로써, 의도치 않은 오류나 부정확한 상태 변화를 방지한다.

    (2) 변경의 유연성

    • 객체의 내부 구현이 변경되더라도, 외부 인터페이스(API)가 동일하다면 외부 코드에 영향을 주지 않음.
    • 즉, "인터페이스와 구현의 분리"를 가능하게 하여 유지보수와 확장에 유리함.

    (3) 유효성 검사(Validation) 가능

    • 필드에 직접 접근하는 것이 아니라 메서드나 프로퍼티를 통해 접근하므로, 입력값에 대한 유효성 검사를 수행할 수 있음.

    (4) 객체 지향 원칙 준수

    • 객체 스스로 자신의 상태를 보호하고, 책임을 가지며, "객체는 자신의 데이터를 스스로 관리해야 한다"는 OOP 철학에 부합.

    2. C#에서 캡슐화 구현 방법

    C#에서는 다양한 접근제한자를 활용해 객체의 캡슐화를 구현한다.

    private 같은 클래스 내에서만 접근 가능 (기본적으로 필드에 사용)
    public 어디서든 접근 가능 (보통 메서드나 프로퍼티에 사용)
    protected 해당 클래스 및 파생 클래스에서만 접근 가능
    internal 같은 어셈블리 내에서 접근 가능
    protected internal 파생 클래스 또는 같은 어셈블리 내에서 접근 가능

    3. 캡슐화 vs 정보은닉 (Information Hiding)

    • 캡슐화는 기술적인 구현 기법: 데이터를 감싸서 보호하는 구조
    • 정보 은닉은 설계 원칙: 사용자에게 꼭 필요한 정보만 제공

     

    캡슐화는 정보 은닉을 실현하는 수단 중 하나라고 이해하면 된다.

     


    C#에서의 캡슐화는 단순한 구현상의 문제가 아니라, 소프트웨어 설계의 핵심 원칙이다. 올바른 캡슐화는 코드의 안정성, 유지보수성, 보안성, 재사용성을 높여주며, 객체 지향 프로그래밍의 "자율적이고 책임 있는 객체" 설계를 가능하게 한다.

    'Study > C#' 카테고리의 다른 글

    20250327_(5) Coupling & Cohension  (0) 2025.03.28
    20250327_(4) Dependency Injection, DI  (0) 2025.03.27
    202550327_(1) UML Class Diagram  (0) 2025.03.27
    20250321_(9) Vector Operation  (0) 2025.03.24
    20250321_(8) 🌟 Static  (0) 2025.03.24
Designed by Tistory.