12. 속성과 관련된 연산(Operation)을 클래스 안에 묶어서 하나로 취급하는 것을 의미하는 객체지향 개념은?
① Inheritance ② Class
③ Encapsulation ④ Association
객체지향 개념: 캡슐화(Encapsulation)와 틀린 선택지 분석
객체지향 프로그래밍(OOP, Object-Oriented Programming)에서는 코드를 효율적이고 안정적으로 설계하기 위한 다양한 개념이 사용됩니다.
이번 글에서는 "속성과 관련된 연산(Operation)을 클래스 안에 묶어서 하나로 취급하는 개념"이 무엇인지 설명하고, 문제에서 제시된 선택지 중 정답을 분석하겠습니다.
1. 객체지향 개념: 캡슐화(Encapsulation)란?
✅ 캡슐화(Encapsulation)의 정의
- 캡슐화는 데이터(속성, Attribute)와 이를 처리하는 연산(메소드, Operation)을 하나의 클래스 내부에 묶어 감추는 객체지향 개념입니다.
- 외부에서 객체의 내부 데이터(속성)에 직접 접근하지 못하게 하며, 대신 메소드를 통해서만 데이터를 조작하도록 제한합니다.
- **정보 은닉(Information Hiding)**을 통해 데이터의 보호와 안정성을 강화합니다.
2. 캡슐화(Encapsulation)의 특징
✅ (1) 데이터 보호 (Data Hiding)
- 외부에서 직접 객체의 데이터를 수정하는 것을 막고, 제어된 방식으로만 접근 가능하게 만듦.
- 클래스 내부의 속성(변수)은 private으로 선언하고, 외부에서는 getter와 setter 메소드를 통해 접근하도록 함.
✅ (2) 객체의 독립성 유지
- 데이터와 연산을 하나의 단위로 묶어 객체를 설계함으로써, 다른 객체와 독립적인 동작이 가능.
✅ (3) 유지보수 및 확장성 향상
- 클래스 내부의 속성 변경이 필요할 경우, 메소드만 수정하면 되므로 유지보수성이 증가.
3. 캡슐화(Encapsulation) 예제
✅ 예제 (Java)
// 캡슐화 적용 예제
class Person {
private String name; // 속성을 private으로 선언
private int age;
// 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 메소드: 외부에서 속성을 읽을 수 있도록 제공
public String getName() {
return name;
}
// Setter 메소드: 외부에서 속성을 변경할 수 있도록 제공
public void setName(String name) {
this.name = name;
}
// 나이를 증가시키는 연산 (Operation)
public void increaseAge() {
this.age++;
}
}
🔍 설명
- 속성(name, age)은 private으로 선언하여 외부에서 직접 접근할 수 없음.
- 메소드(getName(), setName(), increaseAge())를 통해서만 데이터에 접근 가능하도록 설계됨.
- 이렇게 데이터와 관련된 연산을 묶어 클래스 내부에서 하나로 취급하는 것이 바로 캡슐화(Encapsulation).
4. 문제에서 제시된 선택지 분석
✅ 정답: ③ Encapsulation (캡슐화)
- 캡슐화(Encapsulation)는 속성과 관련된 연산(Operation)을 하나의 클래스 내부에 묶어서 하나로 취급하는 객체지향 개념입니다.
- 캡슐화를 통해 데이터 보호와 접근 제어가 가능해지며, 유지보수성과 코드의 독립성이 증가합니다.
❌ 틀린 선택지 분석
① Inheritance (상속)
- **상속(Inheritance)**은 기존 클래스(부모 클래스)의 속성과 동작을 새로운 클래스(자식 클래스)가 물려받는 개념입니다.
- "속성과 연산을 하나로 묶는 것"이 아니라, 기존 기능을 재사용하는 것이 목적입니다.
- 예: class Dog extends Animal (동물 클래스를 상속받아 개 클래스가 생성됨)
② Class (클래스)
- 클래스(Class)는 객체를 생성하기 위한 설계도(blueprint)입니다.
- 캡슐화는 클래스 내에서 속성과 메소드를 묶는 개념이지만, 클래스 자체가 캡슐화 개념을 의미하는 것은 아님.
- 즉, 클래스는 캡슐화를 구현할 수 있는 도구일 뿐, 캡슐화 그 자체를 의미하지는 않음.
④ Association (연관)
- 연관(Association)은 객체들 간의 관계를 의미하는 개념입니다.
- 예를 들어, 학생(Student) 객체와 강의(Course) 객체가 연관(Association) 관계를 맺고 있다면, 학생이 강의를 수강하는 관계를 나타낼 수 있음.
- 캡슐화는 "객체 내부 속성 및 메소드를 하나로 묶는 개념"이고, 연관(Association)은 "객체 간의 관계"를 의미하므로 문제에서 요구하는 개념과 다름.
5. 정리
선택지 정답 여부 설명
① Inheritance (상속) | ❌ 틀림 | 상속은 부모 클래스의 속성과 동작을 자식 클래스가 물려받는 개념 |
② Class (클래스) | ❌ 틀림 | 클래스는 객체의 설계도이며, 캡슐화를 포함할 수 있지만 캡슐화 그 자체는 아님 |
③ Encapsulation (캡슐화) | ✅ 정답 | 속성과 관련된 연산을 클래스 안에 묶어 하나로 취급하는 객체지향 개념 |
④ Association (연관) | ❌ 틀림 | 객체들 간의 관계를 표현하는 개념 |
6. 결론
💡 객체지향 개념에서 속성과 관련된 연산(Operation)을 클래스 안에 묶어서 하나로 취급하는 개념은 "③ Encapsulation(캡슐화)"입니다.
💡 캡슐화를 활용하면 속성(데이터) 보호와 유지보수성이 향상되며, 객체의 독립성이 보장됩니다. 🚀
반응형
'기출문제 > 정보처리기사' 카테고리의 다른 글
2022년 2회 정보처리기사 기출문제 14번 (1) | 2025.02.07 |
---|---|
2022년 2회 정보처리기사 기출문제 13번 (1) | 2025.02.07 |
2022년 2회 정보처리기사 기출문제 11번 (1) | 2025.02.07 |
2022년 2회 정보처리기사 기출문제 10번 (0) | 2025.02.07 |
2022년 2회 정보처리기사 기출문제 9번 (0) | 2025.02.07 |