ComputerProgrammingwithGNUSmalltalk:3.7

From 흡혈양파의 번역工房
Jump to: navigation, search

변수

스몰토크에서의 변수는, 수학에서의 변수와 매우 흡사합니다. 이 주제를 읽는 동안 마음 속에 기억해두면, 이 개념을 쉽게 상상할 수 있을 것입니다.


프로그램을 작성하는 동안, 수많은 객체를 씁니다. 객체를 생성하고, 다루고, 파괴합니다. 그러나 객체를 생성한 후, 프로그램의 어떤 부분에서 참조하려 할 때 어떻게 해야 하겠습니까? Human 클래스(스몰토크에서 제공하는 클래스가 아니라, 가상의 클래스라고 생각하시면 됩니다.)를 가지고 있다고 가정하겠습니다. 이 클래스로부터 새로운 객체를 만들 것입니다. 실제 세계의 인간처럼, 각각의 객체는 이름이 있어야, 우리가 그들과 대화할 수 있을 것입니다. 우리가 메시지를 전달하여 대화를 할 것입니다. 메시지를 전달하기 전에 메시지를 받길 원하는 객체를 지정해야 할 것입니다. 객체를 반환하는 표현식이나 객체의 이름으로 그것을 할 수 있습니다.


Human 인스턴스 Carl을 가지고 있다고 가정하겠습니다. 우리는 그에게 이렇게 메시지를 보낼 수 있습니다.

Carl tellUsYourLastName


여기서 Carl은 Human 인스턴스를 참조합니다.


객체에 이름 지어주는 것을 지정assignment이라고 합니다. 그리고 지어준 이름을 프로그래밍 용어로 변수variables라고 합니다. (변할 변자를 쓰는) 변수라는 용어를 쓰는 이유는, 한 객체만을 참조할 수 있지만, 그것이 언제든지 프로그램의 다른 객체를 가리킬 수 있기 때문입니다. 객체에 이름을 어떻게 지정하는지 배우기 전에, 먼저 왜 그러한 것을 원하게 되는지 얘기해보겠습니다. human 객체를 만들었던 위의 예제같은 경우에는, 아마도 그 변수가 다른 객체를 참조하도록 바꾸길 원치 않을 것입니다. 그러나 다른 예제로, 하루에 식당에 방문한 사람들의 수를 추적하는 프로그램을 가지고 있다고 가정했을 때, 손님이 올 때마다 숫자는 증가할 것입니다. 그렇게 하려면 어떻게 해야 되겠습니까? 먼저 객체 0을 참조하는 변수를 생성합니다. 그리고 손님이 올 때마다 변수를 호출하여, 그 변수가 가리키는 객체를 가져다가, 1을 더하여 변수가 그것을 가리키게합니다. 따라서 매회 손님들이 올 때마다 변수는 다른 객체를 참조할 것입니다.


이제 변수 할당 문법을 알아볼 시간입니다. 할당을 하기 전에, 변수를 만들어야 합니다. 변수를 만드는 기본 구조는 다음과 같습니다.

| aVariable anotherVariable andAnotherVariable |

여기 aVariable, anotherVariable 그리고 andAnotherVariable 이라고 이름 붙여진 세 개의 변수를 생성하였습니다. 우리는 파이프 문자 사이에 만들기 원하는 변수 이름을 두었습니다. 변수 이름은 빈 칸으로 구분하였고, 우리가 원하는 만큼 변수를 생성할 수 있습니다. 변수 지정은 다음과 같이 할 수 있습니다.

aVariableName := anObject


지정 연산자assignment operator라고 부르는 연산자는 콜론과 등호 기호를 빈칸 없이 연결하여 구성합니다. 이 연산자는 우측 변의 객체를 좌측 변의 변수에 할당합니다.


모든 객체는 컴퓨터 메모리의 공간을 차지하도록 생성하며, 변수의 역할은 실제로 객체의 메모리 주소를 가지고 있는 것입니다.