-
20250327_(2) EncapsulationStudy/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