본문 바로가기
정보처리기사/기출문제풀이(정보처리기사)

[정보처리기사 기출문제] 객체에 대한 설명으로 틀린 것은?

by VisionAchiever 2025. 4. 29.
728x90
SMALL

 

11. 객체에 대한 설명으로 틀린 것은?
 객체는 상태, 동작, 고유 식별자를 가진 모든 것이라 할 수 있다.
  객체는 공통 속성을 공유하는 클래스들의 집합이다.
 객체는 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 독립된 존재이다.
 객체의 상태는 속성값에 의해 정의된다.

정답은 ②입니다.

각 보기 설명

객체는 상태, 동작, 고유 식별자를 가진 모든 것이라 할 수 있다. (맞음)

  • 객체지향 프로그래밍에서 객체는 데이터(상태)와 그 데이터를 조작하는 기능(동작)을 묶어 놓은 실체입니다. 또한, 각 객체는 메모리 상에서 유일하게 식별될 수 있는 고유한 식별자를 가집니다.

객체는 공통 속성을 공유하는 클래스들의 집합이다. (틀림)

  • 객체는 특정 클래스의 인스턴스(instance)입니다. 클래스는 객체의 설계도 또는 템플릿 역할을 하며, 공통적인 속성(attribute)과 동작(behavior)을 정의합니다. 여러 객체는 동일한 클래스로부터 생성될 수 있으며, 이 경우 공통적인 구조를 갖지만, 각각 독립적인 상태와 식별자를 가집니다. 객체는 클래스의 집합이 아니라, 클래스를 기반으로 생성된 개별적인 실체입니다.

객체는 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 독립된 존재이다. (맞음)

  • 객체는 데이터를 저장하기 위한 자료 구조(속성)와 이 데이터에 대해 수행할 수 있는 함수(메소드 또는 동작)를 포함하는 독립적인 단위입니다. 캡슐화의 개념과 관련하여, 객체는 자신의 데이터를 스스로 관리하고 외부의 직접적인 접근을 제한할 수 있습니다.

객체의 상태는 속성값에 의해 정의된다. (맞음)

  • 객체의 상태는 객체가 가지고 있는 속성들의 현재 값으로 표현됩니다. 시간이 지남에 따라 객체의 속성값이 변경되면 객체의 상태도 변하게 됩니다.

주요 개념 정리

  • 객체 (Object): 객체지향 프로그래밍의 기본적인 단위로, 데이터(속성)와 그 데이터를 처리하는 기능(메소드)을 묶어 놓은 실체입니다.
  • 클래스 (Class): 객체를 생성하기 위한 설계도 또는 템플릿입니다. 객체의 속성과 메소드를 정의합니다.
  • 인스턴스 (Instance): 클래스를 기반으로 메모리에 생성된 실제 객체입니다. 하나의 클래스로부터 여러 개의 인스턴스를 생성할 수 있습니다.
  • 상태 (State): 객체가 특정 시점에 가지고 있는 데이터의 값으로, 객체의 속성들에 의해 정의됩니다.
  • 동작 (Behavior): 객체가 수행할 수 있는 기능 또는 메소드입니다. 객체의 상태를 변경하거나 다른 객체와 상호작용하는 데 사용됩니다.
  • 고유 식별자 (Identity): 메모리 상에서 각 객체를 유일하게 구별할 수 있는 ID입니다.
  • 캡슐화 (Encapsulation): 객체의 데이터와 메소드를 하나로 묶고, 외부로부터 데이터의 직접적인 접근을 제한하여 정보 은닉을 구현하는 개념입니다.

유사한 문제 5가지

문제 1: 객체지향 프로그래밍의 특징이 아닌 것은?

① 상속 (Inheritance)

② 다형성 (Polymorphism)

③ 절차적 실행 (Procedural Execution)

④ 캡슐화 (Encapsulation)

 

정답: ③ 절차적 실행 (Procedural Execution)

설명: 절차적 실행은 프로그램이 순서대로 명령을 실행하는 방식이며, 객체지향 프로그래밍은 객체 간의 상호작용을 중심으로 프로그램을 구성합니다. 상속, 다형성, 캡슐화는 객체지향 프로그래밍의 주요 특징입니다.

 

문제 2: 클래스와 객체의 관계에 대한 설명으로 옳은 것은?

① 객체는 클래스의 정의이며, 클래스는 객체의 실체이다.

② 클래스는 객체의 타입이며, 객체는 클래스의 인스턴스이다.

③ 객체와 클래스는 동일한 개념이다.

④ 클래스는 프로그램의 실행 단위이며, 객체는 데이터 저장 단위이다.

 

정답: ② 클래스는 객체의 타입이며, 객체는 클래스의 인스턴스이다.

설명: 클래스는 객체를 만들기 위한 설계도와 같은 역할을 하며, 객체는 이 설계도에 따라 실제로 메모리에 생성된 실체입니다. 객체의 타입은 그것을 생성한 클래스에 의해 결정됩니다.

 

문제 3: 다음 중 객체의 속성(attribute)에 대한 설명으로 가장 적절한 것은?

① 객체가 수행할 수 있는 동작 또는 기능이다.

② 객체의 상태를 나타내는 데이터의 특정 측면이다.

③ 다른 객체와의 관계를 정의하는 연결이다.

④ 객체를 생성하기 위한 템플릿이다.

 

정답: ② 객체의 상태를 나타내는 데이터의 특정 측면이다.

설명: 속성은 객체가 가지는 데이터의 한 조각으로, 객체의 현재 상태를 나타냅니다. 동작은 메소드, 관계는 연관, 템플릿은 클래스에 해당합니다.

 

문제 4: 객체지향 프로그래밍에서 메시지(message) 전달이란 무엇을 의미하는가?

① 객체 간에 데이터를 직접 공유하는 것

② 한 객체가 다른 객체의 메소드를 호출하는 것

③ 객체의 상태를 외부로 직접 노출하는 것

④ 프로그램의 실행 순서를 제어하는 특별한 구문

 

정답: ② 한 객체가 다른 객체의 메소드를 호출하는 것

설명: 객체 간의 상호작용은 메시지 전달(message passing)을 통해 이루어집니다. 이는 한 객체가 다른 객체에게 특정 작업을 수행하도록 요청하는 것, 즉 메소드를 호출하는 것을 의미합니다.

 

문제 5: 다음 설명에 해당하는 객체지향 개념은 무엇인가? "현실 세계의 사물이나 개념을 프로그램 내에서 속성과 행위로 표현한 독립적인 단위"

① 클래스 (Class)

② 상속 (Inheritance)

③ 객체 (Object)

④ 인터페이스 (Interface)

 

정답: ③ 객체 (Object)

설명: 객체는 현실 세계의 사물이나 개념을 추상화하여 속성(데이터)과 행위(메소드)를 하나의 단위로 묶어 표현한 것입니다. 클래스는 이러한 객체를 만들기 위한 틀입니다.

 

객체지향 4대 특징 심화 정리


1. 캡슐화 (Encapsulation)

정의
데이터(속성)와 메소드(행동)를 하나로 묶고, 외부에 불필요한 정보는 숨기는 것.

요소내용
목표 데이터 보호, 무결성 유지
방법 접근 제어자 사용 (private, public, protected)
장점 시스템 복잡도 감소, 유지보수 용이

🔹 예시

  • private로 속성 숨기고, public 메소드로 접근
  •  
class BankAccount {
    private int balance;

    public void deposit(int amount) {
        balance += amount;
    }

    public int getBalance() {
        return balance;
    }
}

🔹 심화 개념

  • 내부 구현은 숨기고 인터페이스만 공개 → 정보 은닉(Information Hiding)

2. 상속 (Inheritance)

정의
기존 클래스(부모, 슈퍼 클래스)의 속성과 메소드를 새 클래스(자식, 서브 클래스)가 물려받는 것.

요소내용
목표 코드 재사용, 유지보수성 강화
키워드 extends (Java 기준), : (C++ 기준)
종류 단일 상속, 다중 상속(언어에 따라 다름)

🔹 예시

class Animal {
    void eat() { System.out.println("Eating..."); }
}

class Dog extends Animal {
    void bark() { System.out.println("Barking..."); }
}​

→ Dog는 Animal의 eat() 메소드도 사용 가능.

🔹 심화 개념

  • 자식 클래스는 부모의 속성과 기능을 확장(extend)하거나 변경(override) 할 수 있다.
  • 주의: "is-a" 관계 (Dog is-a Animal)

3. 다형성 (Polymorphism)

정의
같은 인터페이스를 가지고 여러 형태로 동작할 수 있는 것.

요소내용
목표 코드 유연성, 확장성 강화
방법 메소드 오버로딩(Overloading), 오버라이딩(Overriding)
필요조건 상속과 참조(또는 인터페이스 구현)

🔹 예시

class Animal {
    void sound() { System.out.println("Animal sound"); }
}

class Dog extends Animal {
    void sound() { System.out.println("Bark"); }
}

class Cat extends Animal {
    void sound() { System.out.println("Meow"); }
}

// 다형성 적용
Animal myAnimal = new Dog();
myAnimal.sound(); // "Bark"​

🔹 심화 개념

  • 컴파일 시 다형성 (Overloading): 메소드 이름 같고 매개변수 다름
  • 런타임 다형성 (Overriding): 부모 메소드를 자식이 재정의

4. 추상화 (Abstraction)

정의
필요한 기능만을 인터페이스로 정의하고, 구체적 구현은 숨기는 것.

요소내용
목표 복잡성 관리, 개발 편의성 향상
방법 추상 클래스(Abstract class)나 인터페이스(Interface) 사용
핵심 "무엇을" 할지 정의하고, "어떻게" 할지는 숨긴다.

🔹 예시

abstract class Animal {
    abstract void sound();
}

class Dog extends Animal {
    void sound() { System.out.println("Bark"); }
}​

🔹 심화 개념

  • 추상 클래스: 일부 구현 + 추상 메소드 포함
  • 인터페이스: 구현 없이 메소드 시그니처만 선언
  • 실제 구현은 하위 클래스(서브클래스)가 담당

🛠 4대 특징 한눈에 요약표

특징핵심 개념주요 효과
캡슐화 데이터 은닉 데이터 보호, 유지보수성 향상
상속 기능 상속 코드 재사용, 확장성 강화
다형성 하나의 인터페이스, 다양한 동작 유연성, 확장성
추상화 핵심만 정의, 구현은 숨김 복잡성 감소, 구조적 설계 가능

 

#객체 #Object #객체지향 #OOP #클래스 #Class #인스턴스 #Instance #상태 #State #동작 #Behavior #속성 #Attribute #메소드 #Method #캡슐화 #Encapsulation #객체지향프로그래밍

 

728x90
LIST