기출문제/정보처리기사

2022년 2회 정보처리기사 기출문제 12번

엉클지니 2025. 2. 7. 09:04

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(캡슐화)"입니다.
💡 캡슐화를 활용하면 속성(데이터) 보호와 유지보수성이 향상되며, 객체의 독립성이 보장됩니다. 🚀

반응형