소개: 객체 지향 프로그래밍(OOP)에서 캡슐화와 정보 은닉은 코드의 안전성과 모듈화를 강화하는 데 중요한 역할을 합니다. 이 게시글에서는 캡슐화와 정보 은닉의 차이와 중요성에 대해 살펴보겠습니다.
1. 캡슐화(Encapsulation): 캡슐화는 OOP의 핵심 개념 중 하나로, 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어 객체를 형성하는 과정을 의미합니다. 캡슐화를 통해 코드는 모듈화되며, 객체는 자체적으로 데이터를 관리하고 외부에는 인터페이스를 통해서만 데이터에 접근할 수 있습니다.
2. 정보 은닉(Hiding): 정보 은닉은 캡슐화의 일부로, 객체의 내부 구현을 외부로부터 감추는 개념입니다. 이를 통해 외부에서 객체의 세부 구현에 직접 접근하는 것을 방지하고, 제한된 방법으로만 객체에 접근할 수 있도록 합니다.
예제코드를 보면 둘의 차이를 알 수 있습니다.
// 간단한 학생 클래스 예제
public class Student {
// 캡슐화를 통한 멤버 변수 은닉
private String name;
private int age;
// 생성자
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// 정보 은닉을 위한 getter와 setter 메서드
public String getName() {
return name;
}
public void setName(String name) {
// 여기서 유효성 검사 등을 추가할 수 있습니다.
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
// 나이에 대한 유효성 검사 등을 추가할 수 있습니다.
this.age = age;
}
// 학생 정보 출력 메서드
public void displayStudentInfo() {
System.out.println("학생 이름: " + name);
System.out.println("나이: " + age);
}
}
// 메인 클래스
public class Main {
public static void main(String[] args) {
// 학생 객체 생성
Student student1 = new Student("홍길동", 20);
// 캡슐화를 통한 정보 은닉 확인
// 외부에서 직접 접근 불가
// student1.name = "김철수"; // 에러 발생
// setter를 통한 정보 수정
student1.setName("김철수");
student1.setAge(22);
// getter를 통한 정보 읽기
System.out.println("학생 이름: " + student1.getName());
System.out.println("나이: " + student1.getAge());
// 정보 은닉을 유지하면서 학생 정보 출력
student1.displayStudentInfo();
}
}
결론: 캡슐화와 정보 은닉은 객체 지향 프로그래밍에서 중요한 원리로, 코드의 안전성과 모듈화를 향상시키는 데 결정적인 역할을 합니다. 이러한 원리를 적절히 활용함으로써 유지보수성이 높은 안정적인 코드를 작성할 수 있습니다. 객체 지향 프로그래밍에서는 이러한 원리를 적극적으로 활용하여 코드의 품질을 향상시키는 것이 중요합니다.
[자바 CS지식] 좋은 객체 지향 설계 SOLID 원칙 (0) | 2024.02.11 |
---|---|
[자바 CS지식] Call By Reference와 Call By Value의 차이점 (0) | 2024.02.11 |
[자바 CS지식] 접근 제어자의 종류와 특징 (0) | 2024.02.11 |
[자바 입문] 변수 사용해보기 (2) | 2024.02.11 |
[자바 CS지식] 스레드 안정성이란 무엇일까? (0) | 2024.02.10 |