SIMPOLOR
단순하고 색있게
캡슐화(Encapsulation)
단순색
·
2024년 06월 26일
Java
## 캡슐화(Encapsulation)란? 캡슐화는 객체 지향 프로그래밍에서 객체의 데이터(속성)를 외부로부터 숨기고, 그 데이터에 접근하고 조작하는 방법을 제한하는 개념입니다. 이를 통해 데이터의 무결성을 유지하고, 객체 내부의 구현 세부 사항을 외부에 노출하지 않도록 합니다. ## 캡슐화의 기본 개념 ### 데이터를 private으로 선언 객체의 속성을 `private`으로 선언하여 외부에서 직접 접근할 수 없도록 합니다. ### Getter와 Setter 메서드 제공 속성에 접근하고 수정할 수 있는 `public` 메서드를 제공합니다. 이 메서드를 통해 외부에서는 데이터를 안전하게 조작할 수 있습니다. ## 캡슐화 예제 ``` public class Person { // private 필드 - 외부에서 직접 접근할 수 없음 private String name; private int age; // public 생성자 public Person(String name, int age) { this.name = name; this.age = age; } // public getter 메서드 - 외부에서 필드에 접근할 수 있게 함 public String getName() { return name; } // public setter 메서드 - 외부에서 필드를 변경할 수 있게 함 public void setName(String name) { this.name = name; } // public getter 메서드 public int getAge() { return age; } // public setter 메서드 - 나이는 0보다 큰 값으로만 설정할 수 있게 제한 public void setAge(int age) { if (age > 0) { this.age = age; } else { System.out.println("Age must be greater than 0"); } } } public class Main { public static void main(String[] args) { // Person 객체 생성 Person person = new Person("John Doe", 30); // getter 메서드를 통해 필드 값 접근 System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); // setter 메서드를 통해 필드 값 수정 person.setName("Jane Doe"); person.setAge(25); // 수정된 값 출력 System.out.println("Updated Name: " + person.getName()); System.out.println("Updated Age: " + person.getAge()); // 잘못된 나이 설정 시도 person.setAge(-5); // 출력: Age must be greater than 0 } } ``` 1. `name`과 `age` 필드는 `private`으로 선언되어 외부에서 직접 접근할 수 없습니다. 2. `getName()`, `setName()`, `getAge()`, `setAge()` 메서드를 통해 간접적으로 필드에 접근하고 수정할 수 있습니다. 3. `setAge()` 메서드는 나이를 0보다 큰 값으로만 설정할 수 있도록 제한하여, 데이터의 무결성을 유지합니다. ## 캡슐화의 장점 ### 데이터 보호 중요한 데이터가 외부로부터 보호되어 무결성을 유지합니다. ### 코드 유지보수 용이성 객체 내부 구현 변경 시, 외부 코드에 미치는 영향을 최소화할 수 있습니다. ### 응집력 증가 관련 있는 데이터와 메서드를 하나의 객체로 묶어 응집력을 높입니다. ## 캡슐화의 사용 사례 ### 은행 계좌 시스템 고객의 계좌 정보와 잔액을 캡슐화하여 보호하고, 입출금 메서드를 통해 접근합니다. ### 사용자 인증 시스템 사용자 정보와 권한을 캡슐화하여 보안성을 강화합니다. ## 마무리 캡슐화는 객체 지향 프로그래밍에서 데이터 보호와 코드 유지보수의 핵심 원칙입니다. 데이터에 대한 직접적인 접근을 제한하고, 필요한 경우에만 안전하게 조작할 수 있도록 함으로써, 시스템의 안정성과 신뢰성을 높입니다. 캡슐화를 통해 우리는 더 안전하고 유연한 코드를 작성할 수 있으며, 이는 소프트웨어 품질을 향상시키는 데 기여합니다.
연관 포스트
BigDecimal 클래스
Java jar 실행 옵션
다형성(Polymorphism)
추상화(Abstraction)
상속(Inheritance)