클래스와 객체

객체란?

클래스가 메모리가 올라간 상태를 말한다.


클래스란?

public class TheNewBook {}에서 class 말한다.


객체란?

TheNewBook a = new TheNewBook();처럼 new 붙은 것을 말한다.


클래스란?

객체가 new 되어 메모리에 올라가기 상태를 말한다.


자바에서 메모리에 올리는 예약 어는 가지가 있다.


static

new


이다. C++에서는 new, C에서는 malloc, calloc 기타 이를 응용한 라이브러리 함수들이겠다. 참고로 라이브러리도 API 일종이다. 위에서 말했던 int a = 1704; 예약어들이 없더라도 메모리에 공간을 확보하고 해당 값을 넣는 작업이 하부에서 진행된다. 객체지향이라는 것도 결국 메모리에 어떤 값을 만들고 그것을 이용해서 설계하는 방식의 일종일 뿐이다. 메모리에 값을 만들고 그것을 실행하면 모두 객체지향이라고 있다. 물론, 절차 지향이라고도 있다. 문제는 프로그래밍에 대한 새로운 시각으로 용어들을 없애버리고 싶다는 것이다. 장이 넘어가면 아마 절차 지향 객체지향이라는 단어를 쓰지 않아도 것이라 생각한다.


필자가 아는 프로그래밍 언어들은 CPU 메모리로 장난치데 도움을 주는 것들이다. 물론, C 자바의 메모리 모델은 다르다. 그것만 설명해도 많은 페이지를 할애해야겠으나 지금 책에서의 목표는 아니다.


클래스는 자체로 없다. C++에서 어떤 class struct 변경해도 전혀 문제가 없다. class struct 차이는 행동이 안에 들어 있느냐 없느냐 이기 때문에 적절한 변환만 준다면 동일한 것으로 수도 있게 된다. 하드디스크에 있는 프로그램이 실행이 되면 프로세스라 부르는데 뭔가를 실행하려면 메모리에 올려야 한다. 클래스는 하드디스크에 있는 프로그램이라고 보면 된다. 그러나 안에 static이나 new, malloc 메모리에 올려주는 예약 어가 있거나 생략되어 작동을 하는지에 주목할 필요가 있다는 것이다. 전공자는 앞의 용어들은 "그냥 이렇게 쓰는 갑다"라고 이해하고 다음과 같이 말아주면 좋겠다.

메모리() 컴퓨터 들었던 단어이고 내가 아는 바로 메모리다. 업그레이드에 필요하다고 들었다. CPU 컴퓨터에서 가장 중요한 부분이라고 들었는데 뭔가를 실행시켜 주는 것이다. 그리고 책은 내가 아는 CPU 메모리로 모든 프로그래밍 언어의 개념이 통한다고 말하고 있다.


두꺼운 책을 마지막까지 읽고 나면 결국 이야기를 하려고 기나긴 길을 돌아왔음을 알게 것이다.

+ Recent posts