본문으로 이동

객체 복사: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
새 문서: {{분류 필요}} 객체 지향 프로그래밍에서 '''객체 복사'''(object copying)는 객체 지향 프로그램에서 말하는 데이터 단위인 기존의 객체의 사...
태그: 새 문서에 분류 없음
(차이 없음)

2019년 12월 19일 (목) 15:40 판

객체 지향 프로그래밍에서 객체 복사(object copying)는 객체 지향 프로그램에서 말하는 데이터 단위인 기존의 객체의 사본을 생성하는 것이다. 그 결과로 나오는 객체를 "객체 사본"(object copy) 또는 간단히 "사본"(copy)이라고 부른다. 복사는 기초적이지만 예민성이 있어서 상당한 부하를 일으킬 수 있다. 객체 복사에는 여러 방법이 있으며 그 중 가장 흔한 것이 복사 생성자나 복제를 통한 것이다. 사본은 수정이나 이동이 가능하며 현재 값을 보존할 수 있다. 이 중 어느 것도 불필요하다면 복사가 발생되지 않는 방식으로 원본 데이터의 참조만으로 충분하며 더 효율적이다.

객체는 일반적으로 컴포지트 데이터를 저장한다. 단순한 경우 복사는 새로운, 초기화되지 않은 객체를 할당하여 원본 객체의 모든 필드 속성을 복사함으로써 이루어지지만 복잡한 경우 이는 원하는 동작대로 결과가 나오지 않게 된다.

복사 방식

객체들 대부분의 설계적 목표는 하나의 획일적인 블록으로 만들어진 것과 유사한 것을 제공하는 것이다. 객체는 여러 부분으로 구성되므로 복사는 사소한 일이 아니다. 이 문제를 처리하기 위해 여러 전략이 존재한다.

xi 필드를 포함하는 객체 A가 있다고 가정하자. (구체적으로 말해, A가 문자열이고 xi가 문자 배열임). 여기서 A의 사본을 만들기 위한 각기 다른 전략으로 얕은 복사(shallow copy)와 깊은 복사(deep copy)가 있다. 수많은 언어는 하나의 "복사" 조작을 정의하여, 또는 개개의 "얕은 복사"와 "깊은 복사" 조작을 정의하여 이루어지는 총체적인 복사를 허용한다.[1]

얕은 복사, 깊은 복사라는 용어는 스몰토크-80으로 거슬러 올라간다.[2]

진행 중인 깊은 복사.
진행 중인 깊은 복사.
완료된 깊은 복사.
완료된 깊은 복사.

같이 보기

각주

  1. Grogono & Sakkinen 2000.
  2. Goldberg & Robson 1983, 97–99쪽. "There are two ways to make copies of an object. The distinction is whether or not the values of the object's variables are copied. If the values are not copied, then they are shared (shallowCopy); if the values are copied, then they are not shared (deepCopy)."

참고문헌