맨위로가기

객체 (컴퓨터 과학)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

객체는 객체 지향 프로그래밍에서 관련된 데이터를 묶어 조작의 대상이 되며 메시지를 수신할 수 있는 실체이다. 객체는 프로그램에서 실현하고 싶은 개념을 표현하는 데 사용되며, 마우스 커서, 윈도우 등 사용자가 보는 것들을 표현할 수 있다. 객체는 데이터뿐만 아니라 자체 및 내부 데이터에 대한 조작도 묶고 있으며, 프로그램의 가시성을 높이고 재사용성을 높이는 데 기여한다. 클래스 기반 객체 지향에서는 공통적인 특징을 가진 객체를 묶어 클래스라고 하며, 클래스에 속하는 구체적인 객체를 인스턴스라고 한다. 프로그램 실행 시 객체는 기억 장치 상의 데이터로 표현되며, 클래스는 인스턴스가 갖는 데이터 형식과 조작에 대한 정의에 해당한다.

더 읽어볼만한 페이지

  • 복합 자료형 - 레코드 (컴퓨터 과학)
    레코드는 컴퓨터 과학에서 여러 필드를 묶어 데이터를 구조화하는 개념으로, 데이터베이스의 행이나 객체의 상태를 나타내는 데 사용되며, 배열과 달리 서로 다른 데이터 유형의 필드를 가질 수 있다.
  • 복합 자료형 - 리스트 (컴퓨팅)
    리스트는 컴퓨터 과학에서 항목들을 순서대로 저장하고 관리하는 기본적인 자료 구조이며, 다양한 연산을 지원하고 연결 리스트나 동적 배열 등으로 구현되며 큐, 스택 등 다른 자료형의 기반이 된다.
  • 객체 지향 프로그래밍 - Is-a
    Is-a 관계는 객체 지향 프로그래밍에서 한 유형이 다른 유형의 하위 유형임을 나타내는 관계로, 상속, 서브타이핑, 리스코프 치환 원칙과 관련되며, C++, Python, Java 등에서 표현된다.
  • 객체 지향 프로그래밍 - 정보 은닉
    정보 은닉은 소프트웨어 설계에서 모듈 내부 구현을 숨기고 정의된 인터페이스를 통해서만 상호 작용하도록 하여 모듈 독립성을 높이고 시스템 복잡성을 관리하는 데 중요한 기법으로, 객체 지향 프로그래밍의 캡슐화와 관련된다.
  • 자료형 - 참조
    참조는 프로그래밍에서 메모리 주소나 다른 데이터를 가리키는 값으로, 데이터의 효율적인 전달과 공유를 위해 사용되며, 포인터, 파일 핸들, URL 등이 그 예시이다.
  • 자료형 - 익명 함수
    익명 함수는 이름이 없는 함수로, 람다 추상, 람다 함수, 람다 표현식, 화살표 함수 등으로 불리며, 함수형 프로그래밍 언어에서 람다식 형태로 많이 사용되고 고차 함수의 인수, 클로저, 커링 등에 활용되지만, 재귀 호출의 어려움이나 기능 제한과 같은 단점도 존재한다.
객체 (컴퓨터 과학)
컴퓨터 과학에서의 객체
기본 정보
종류추상화
분야컴퓨터 과학
관련 개념클래스
자료 구조
메서드
속성
상속
다형성
개요
설명상태
행동
식별자
상태객체의 속성 및 속성 값
행동객체가 할 수 있는 것 (메서드)
식별자객체를 다른 객체와 구별하는 방법
특징
캡슐화데이터와 코드를 하나로 묶음
추상화불필요한 세부 사항을 숨기고 중요한 정보만 노출
상속기존 클래스의 속성과 메서드를 상속받아 새로운 클래스를 생성
다형성하나의 인터페이스를 통해 여러 형태의 객체를 처리
프로그래밍에서의 객체
기본 정보
설명데이터와 코드를 묶은 실체
클래스의 인스턴스
구성 요소
속성 (필드)객체의 상태를 나타내는 변수
메서드객체의 행동을 정의하는 함수
객체 지향 프로그래밍
핵심 개념클래스
객체
상속
다형성
캡슐화
장점코드 재사용성 증가
유지 보수 용이
현실 세계 모델링 용이

2. 객체 지향 프로그래밍

객체 지향 프로그래밍 패러다임에서는 관련된 데이터와 해당 데이터를 조작하는 절차(함수, 메서드 등)를 묶어 '객체'라는 실체로 표현한다. 객체는 메시지를 수신하고 처리할 수 있으며, 복잡한 데이터 구조를 표현하는 데 사용된다.[1]

객체는 "고객", "사원", "상품", "주문서" 등 프로그램에서 실현하고 싶은 개념이나, 마우스 커서, 윈도우, 메뉴, 파일 등 컴퓨터상에서 사용자가 보는 대상을 표현하는 데 사용된다. 이를 통해 프로그램 설계를 공유하고, 가시성을 좋게 하며, 프로그래밍 효율 및 재사용성을 높이는 데 기여한다.[1]

객체는 자체 데이터뿐만 아니라 데이터 조작(예: 주문서 객체의 상품 추가/주문 취소, 마우스 커서 객체의 이동/클릭, 파일 객체의 복사/삭제)도 묶어 표현한다.[1]

2. 1. 객체의 개념

객체 지향 프로그래밍의 패러다임에서는 관련된 데이터를 묶어 대입, 연산, 절차(함수나 메서드 등)를 통한 전달과 같은 조작의 대상이 될 수 있으며, 메시지를 수신할 수 있는 실체를 객체라고 부른다(단, 숫자 등의 기본적인 데이터형은 객체로 하지 않는 프로그래밍 언어도 많다).[1] 대부분의 경우 객체는 다른 객체를 요소로 저장할 수 있으며, 복잡한 데이터 구조를 표현할 수 있다.[1]

영어 object에는 "대상", "것"과 같은 의미가 있다.[1]

객체는 프로그램상에서 실현하고 싶은 개념(예: "고객", "사원", "과", "상품", "주문서" 등)을 메타포로 표현하는 데에도 자주 사용되며, 프로그램의 설계를 생각하거나 다른 사람과 공유하는 데 도움이 된다고 여겨진다.[1] 또한 마우스 커서, 윈도우, 메뉴, 파일, 단락 등 컴퓨터상에서 사용자가 보게 되는 것으로 이름이 붙어있는 것은 거의 객체로 표현할 수 있다.[1]

객체는 자체에 관한 데이터뿐만 아니라, 자체 및 내부 데이터에 대한 조작도 묶고 있는 경우가 많다.[1] 예를 들어, 주문서를 나타내는 객체에는 주문할 상품을 추가하는 조작이나 주문을 취소하는 조작을 준비할 수 있다.[1] 마우스 커서를 나타내는 객체에 대해서는 상하좌우로 움직이는 것, 클릭하는 것과 같은 조작이 생각될 수 있으며, 파일의 객체에 대해서는 복사, 삭제 등의 조작이 생각될 수 있다.[1] 조작 대상과 조작 자체의 정의 및 동작을 함께 표현함으로써 프로그램의 가시성을 좋게 하고, 프로그래밍 효율 및 프로그램의 재사용성을 높이는 데 기여한다고 생각된다.[1]

클래스 기반 객체 지향에서는 공통적인 특징이나 동작을 가진 객체를 묶어, 그 공통의 성질을 기술·정의한 "객체의 분류"를 클래스라고 한다(영어 class는 종류·분류의 의미가 있다).[1] 어떤 클래스에 분류되는 구체적인 객체를 그 클래스의 인스턴스라고 한다.[1] 예를 들어, "파일이라는 것"이나 "아이콘이라는 것"의 성질을 정의한 것이 클래스이며, "파일이라는 것"의 성질에 따른 개별 파일을 나타내는 것이 "파일 클래스의 인스턴스"이다.[1]

2. 2. 클래스와 인스턴스

클래스 기반 객체 지향 프로그래밍에서는 공통적인 특징이나 동작을 가진 객체들을 묶어, 그 공통의 성질을 기술·정의한 "객체의 분류"를 클래스(class)라고 한다. 그리고 어떤 클래스에 분류되는 구체적인 객체를 그 클래스의 인스턴스라고 한다. 예를 들어, "파일"이나 "아이콘"의 성질을 정의한 것이 클래스이며, "파일"의 성질에 따른 개별 파일을 나타내는 것이 "파일 클래스의 인스턴스"이다.

2. 3. 처리계에서의 객체 구현

프로그램이 실행될 때, 객체에 해당하는 실체는 기억 장치 상의 데이터이다. 클래스는 인스턴스가 갖는 데이터의 형식과 조작에 대한 정의이며, 실행 시 메모리 상의 프로그램 등이 대응된다 (더 정확하게는 언어 및 처리계에 따라 다르다). 이때, 그 객체는, '어떤 것'을 추상화하고 있다고 표현된다.

예를 들어, "회원"(어떤 한 명의 회원)을 나타내는 하나의 객체는, 처리계에서의 구현상으로는, 회원 번호나 성명 등 회원으로서의 정보, 그리고 "''회원'' 클래스에 속하는 객체라는 정보" 등을 묶은 데이터로 나타낼 수 있다. 객체에 대한 조작에 관해서는, 동종의 동작(행동)을 하는 객체를 클래스로 묶어 둠으로써, 동작을 나타내는 프로그램을 개별 회원 인스턴스에 갖게 할 필요가 없고, 클래스 측에 동작에 해당하는 프로그램(처리계에 따라서는 번역 후의 프로그램)을 갖게 하는 구현이 가능하다.

인스턴스 생성이 가능한 클래스는, 기억 장치 상에 자신의 인스턴스를 만들기 위한 절차를 갖추고 있으며, 이 절차가 어떤 형태로든(보통은 다른 객체에 의해) 호출됨으로써, 인스턴스가 생성된다.

참조

[1] 서적 Object-Oriented Analysis and Design with Applications Addison-Wesley Professional 2007-04-30
[2] 서적 SQL Demystified McGraw Hill
[3] 서적 SQL Demystified McGraw Hill



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com