2019. 11. 7. 11:35ㆍJAVA
객체(Object)는 소프트웨어 세계에 '구현할 대상'이고, 이를 구현하기 위한 '설계도'가 클래스(Class)이며, 이 설계도에 따라 소프트웨어 세계에 '구현된 실체'가 인스턴스(Instance)이다.
필자는 항상 프로그램 수업에서 붕어빵을 가지고 객체와 인스턴스를 배울 때 이상하다고 생각했다.
그때 당시 붕어빵과 붕어빵 틀은 이해를 했지만 실제 코딩을 시작하면 '도대체 내가 만드는 이 프로그램과 붕어빵이 무슨 상관이 있는건가' 하는 혼란을 겪었기 때문이다.
어느덧 경력 3년차... 창피하게도 나는 이 개념을 다시 공부하고 있다.
같은 프로젝트에 계신 대리님께서 위 개념을 설명하고 있는 블로그를 보여주셨는데
오늘에서야 '아 이것이었구나' 하고 드디어 납득을 한 것이다.
그래서 이제, 이해를 넘어 필자의 식대로 해석하자면
우리가 하나의 프로젝트를 수주한다면 '프로젝트'는 구현할 대상인 객체, 웹 프로그램을 만듦으로써 화면에 보여지는 하나의 완성된 형태인 '웹 사이트'는 구현된 실체 즉 인스턴스, 마지막으로 웹 사이트를 만들기 위해 수 많은 코드들로 이루어진 '소스'들은(조금은 느낌이 다를 수 있지만) 클래스로 보면 되지 않을까 하는 생각이다.
추가 내용 : 위 내용과 지금부터 쓸 내용은 모두 TISTORY의 똘똑한 그린할트 님의 cerulean85에서 가져온 것임을 밝힙니다.
코딩 시, 클래스를 생성함에 따라 메모리에 할당 된 객체인 인스턴스를 '객체'라고 부르는데, 틀린 말은 아니다.
인스턴스라고 부르면 더 정확하지만, 개념적으로 인스턴스는 객체에 포함된다고 볼 수 있다. 물론 어떤 것이 소프트웨어 세계의 구현에 가깝냐고 묻는다면 당연히 인스턴스라 할 수 있다.
하지만 위 내용은 필자의 생각과는 다르다.
나의 경우 경계의 모호함은 언제나 혼란을 일으킨다고 생각함으로, 이는 단어의 정의에 있어서도 마찬가지다.
그렇기 때문에 '객체'와 '인스턴스'는 엄연히 다르다고 말하겠다.
'JAVA' 카테고리의 다른 글
[JAVA] 03.변수와 메소드 (0) | 2019.11.08 |
---|