객체란 무엇일까 (내 생각)

LeeJE20·2024년 7월 3일
0

기타

목록 보기
2/3

현실 세계에서의 객체는 어떤 개념이라고 할 수 있겠다. 어떤 책에서는 모든 것이라고 표현하는데 그렇다고도 할 수 있다. 하지만 나는 처음에 '모든 것이 객체다' 라는 말이 혼란스러웠다. 초보자에게 좋은 설명은 아니라고 생각한다.
객체에 대해 좀 더 이해하기 위해서는 프로그램에서의 객체에 대해서도 생각해보면 좋겠다.

나는 프로그램에서의 객체는 메모리에 할당되는 모든 것이라고 부르고 싶다. 문법적으로 이해해본다면 관련있는 변수와 함수의 모음이라고 작게 볼 수 있다. 개념적으로 이해한다면 현실세계의 어떤 대상을 프로그램 상에서 나타내고 싶어서, 이를 변수화한 것이다.

예를 들어보자. 현실세계에 수학이라는 개념이 있다. 수학을 나타내기 위해 Math라는 클래스를 만들었고, 여기서 max 함수와 min 함수를 제공한다. 현실세계의 수학에 max와 min만 있지 않다. 하지만 프로그래머는 현실 객체의 모든 것을 표현하지 않고, 프로그램에서 필요한 만큼만 표현한다. 프로그램에서 타원의 방정식 같은 것이 필요하다면 이를 구현할 수 있겠지만, 필요하지 않다면 안 하는 것이다. 따라서 현실세계의 객체와 프로그램에서의 객체는 차이가 생긴다.

이를 잘 나타내는 용어는 추상화라고 생각한다. 추상화는 현실세계의 객체를 프로그램상의 객체로 나타내기 위해 현실 객체들의 일반되는 공통점을 찾고(그래서 추상화라는 표현을 쓰는 것 같다) 이를 프로그램의 메모리에 표현하는 활동이라고 생각한다. 따라서 프로그램에서 필요한 만큼만 표현하는게 핵심이라고 생각한다.

클래스에 대해서 설명할때 설계도, 붕어빵 틀, Car 와 같은 예제를 정말 많이 봤다. 난 이게 정말 이해가 안 갔는데 프로그램에서의 동작을 요구사항에 대한 자세한 설명 없의 현실의 대상으로만 비유해서 그런 것 같다. 예시를 들 때 Car를 하고 싶다면, 자동차 게임을 만드는 상황같은 것을 만들어 예시를 더 의미있게 한다면 초보자들도 객체에 대해 더 잘 이해할 수 있을 것이라고 생각한다.

0개의 댓글