객체와 인스턴스

빵어 ㅣ 2024. 11. 1. 00:01

객체와 인스턴스

객체

Object

 

실제로 존재하거나 추상적, 개념적인 것

(예) 자동차라는 개념 - 특정 자동차를 지칭하지 않음

 

OOP 맥락에서는 클래스를 기반으로 만들어진 데이터와 기능의 묶음이라고 표현할 수 있음

메소드(동작)와 데이터(속성)를 묶어 메모리에 존재

 

OOP에서는 주로 클래스의 인스턴스를 가리킴

class Car {...}
...
Car car1;
Car car2;

 

class - 붕어빵 틀(Car)

객체 - 붕어빵(car1, car2)

 

더보기
더보기

객체의 "클래스를 기반으로 만들어진 데이터와 기능의 묶음"이라는 설명은 주로 객체 지향 프로그래밍 맥락에서 사용되는 정의

 

객체 지향 프로그래밍이 아닌 맥락에서 보면 

모든 객체가 클래스에 기반하고 있는 것이 아니고, 메모리에 존재하는 모든 개별 데이터나 구조체, 포인터, 배열 등도 객체로 간주될 수 있음

- car1같은 클래스의 인스턴스도 객체이지만, int arr[]; 같은 정적 배열이나 vector<int> v; 같은 동적 배열도 객체로 간주될 수 있음

- int a; 같은 원시 데이터형 변수도 객체지향 프로그래밍이 아닌 맥락에서는 메모리에 존재하는 객체로 간주될 수 있음(일반적으로는 객체가 아닌걸로 간주)

 

위 내용은 객체지향 프로그래밍에서의 객체 정의와는 다소 차이가 있을 수 있으며

객체는 엄밀하게 딱 정해져 있는게 아니라 문맥과 맥락에 따라 다르게 해석될 수 있음

 

이 포스팅에서는 객체 지향 프로그래밍 맥락에서의 객체에 중점을 둠

 

 

 

인스턴스

Instance - 실체

 

특정 클래스의 실체화된 객체

인스턴스는 객체에 포함되는 개념(하위 개념)

 

객체: 일반적으로 클래스를 기반으로 만들어진 데이터와 기능의 묶음, 클래스에서 파생된 모든 개체를 포괄적으로 설명할 때 사용, 추상적인 개념까지 포함

인스턴스: 특정 클래스의 실체화된 객체를 구체적으로 지칭

 

 

인스턴스는 특정 클래스의 객체임을 강조할 때 주로 사용

 

만약 House와 Car라는 클래스가 존재하고 각각 house1, car1이라는 객체가 있다고 했을때,

car1은 "Car의 인스턴스", house1 은 "House의 인스턴스"

라고 명확하게 말할 수 있는 것

 

 

 

 

+ 객체와 인스턴스에 대해 자료를 찾아 공부하다보니 객체와 인스턴스의 차이와 정의에 대해서는 자료마다 살짝씩 다르다. 정의가 확실하게 정해져 있지 않고, 다양한 해석이 있는 듯 하다. 최대한 개념을 정리하려 했지만 이 글엔 틀린 내용이 있을 수 있다.

'취준 > 기술면접' 카테고리의 다른 글

SOLID 원칙  (0) 2024.11.08
객체지향 프로그래밍(Object-Oriented Programming, OOP)  (3) 2024.11.07
스택(Stack)과 힙(Heap) 메모리  (1) 2024.02.16
선택 정렬, 버블 정렬  (1) 2024.02.14
정렬 알고리즘  (0) 2024.02.13