WIPIVERSE

객체 (컴퓨터 과학)

정의
객체는 객체지향 프로그래밍(Object-Oriented Programming, OOP) 패러다임에서 핵심 개념으로, 데이터와 해당 데이터를 조작하는 메서드(함수)를 하나의 단위로 결합한 논리적 실체이다. 객체는 클래스라는 설계도에 의해 생성되며, 클래스가 정의한 속성(필드)과 행위(메서드)를 실제 메모리 상에 구현한다.

특징

특징 설명
캡슐화 (Encapsulation) 객체는 내부 상태를 외부에서 직접 접근할 수 없도록 보호하고, 공개된 인터페이스(메서드)를 통해서만 데이터를 읽고 수정한다.
상속 (Inheritance) 객체는 상위 클래스(부모 클래스)의 속성과 메서드를 물려받아 재사용 및 확장이 가능하다.
다형성 (Polymorphism) 같은 인터페이스를 구현하는 객체들이 상황에 따라 서로 다른 구현을 수행하도록 허용한다.
동적 바인딩 메서드 호출 시점에 실제 실행될 메서드가 객체의 실제 타입에 따라 결정된다.

구성 요소

  1. 속성(필드, 멤버 변수)

    • 객체가 보유하는 상태를 나타내는 데이터. 예: Person 클래스의 name, age 등.
  2. 메서드(멤버 함수)

    • 객체의 행동을 정의하는 함수. 예: Person 클래스의 walk(), introduce() 등.
  3. 식별자(Identity)

    • 동일한 속성 값을 가진 객체라도 서로 구별되는 고유성을 갖는다. 일반적으로 메모리 주소나 내부 식별자를 통해 구현된다.

생성 과정

  1. 클래스 정의 – 속성과 메서드를 선언하여 객체의 청사진을 만든다.
  2. 인스턴스화 – new 연산자(또는 언어별 생성 메커니즘)를 사용해 클래스로부터 실제 객체를 생성한다.
  3. 초기화 – 생성자(constructor)를 통해 초기 상태를 설정한다.

주요 언어별 구현 예시

  • Java

    class Car {
        private String model;
        private int year;
    
        public Car(String model, int year) {
            this.model = model;
            this.year = year;
        }
    
        public void drive() {
            System.out.println(model + " is driving.");
        }
    }
    
    Car myCar = new Car("Tesla", 2023);
    myCar.drive();  // 출력: Tesla is driving.
    
  • Python

    class Car:
        def __init__(self, model, year):
            self.model = model
            self.year = year
    
        def drive(self):
            print(f"{self.model} is driving.")
    
    my_car = Car("Tesla", 2023)
    my_car.drive()   # 출력: Tesla is driving.
    
  • C++

    class Car {
    private:
        std::string model;
        int year;
    public:
        Car(const std::string& m, int y) : model(m), year(y) {}
        void drive() const {
            std::cout << model << " is driving." << std::endl;
        }
    };
    
    Car myCar("Tesla", 2023);
    myCar.drive();  // 출력: Tesla is driving.
    

관계 개념

  • 클래스: 객체를 생성하기 위한 설계도. 객체는 클래스의 인스턴스이다.
  • 인스턴스: 특정 클래스에 의해 구체화된 객체 자체를 가리키는 용어.
  • 메서드: 객체 내부에 정의된 함수이며, 객체의 행위를 구현한다.
  • 속성: 객체가 보유하는 데이터 요소로, 클래스에서 선언된 변수와 대응한다.

활용 분야

  • 소프트웨어 설계: 객체지향 설계 원칙에 따라 시스템을 모듈화하고 유지보수성을 향상시킨다.
  • 그래픽 UI: 화면 요소(버튼, 창 등)를 객체로 모델링하여 이벤트 처리와 상태 관리가 용이해진다.
  • 데이터베이스 ORM(Object-Relational Mapping): 테이블 행을 객체에 매핑하여 객체 중심의 데이터 접근을 지원한다.

역사적 배경 및 어원

'객체'라는 용어는 영어 object를 번역한 것으로, 라틴어 objectum(‘놓여진 것’, ‘대상’)에서 유래한다. 객체지향 프로그래밍 개념은 1960년대 Simula 언어에서 초기 형태가 나타났으며, 1980년대에 Smalltalk, C++, Java 등에서 본격화되었다. 한국어에서는 컴퓨터 과학 분야에서 1990년대 이후 널리 사용되기 시작했다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기