<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=VisualWorksIntroduction%3APage08</id>
	<title>VisualWorksIntroduction:Page08 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=VisualWorksIntroduction%3APage08"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=VisualWorksIntroduction:Page08&amp;action=history"/>
	<updated>2026-04-21T11:27:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=VisualWorksIntroduction:Page08&amp;diff=2731&amp;oldid=prev</id>
		<title>Onionmixer: VisualWorksIntroduction page08 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=VisualWorksIntroduction:Page08&amp;diff=2731&amp;oldid=prev"/>
		<updated>2012-12-13T10:49:29Z</updated>

		<summary type="html">&lt;p&gt;VisualWorksIntroduction page08 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{CincomTop|{{CincomSmalltalkHeadBanner||입문서 : self(파트 1)}}}}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: none; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageOpenbook}}&lt;br /&gt;
| 스몰토크 언어에는 다섯가지 예약어가 있습니다. {{HighlightBold|self}}는 그 중 하나입니다. 객체는 자신에게 참조를 가능케 하는 &amp;quot;shortcut&amp;quot; 입니다. {{HighlightBold|Workspace}}에 코드를 쓸 때, {{HighlightBold|self}}는 전혀 필요 없습니다. 하지만 나만의 클래스 메서드를 쓰기 시작하면 {{HighlightBold|self}}없이는 살아갈 수 없을겁니다.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageCertifacate}}&lt;br /&gt;
| self라는 용어는 단순하지만, 스몰토크에 있어서는 매우 중요합니다. 이 입문서는 self의 동작과 필요성을 설명하겠습니다.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageQuestion}}&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-weight:bold;font-style:normal;color:blue;font-size:120%;&amp;quot;&amp;gt;&amp;quot;self&amp;quot;의 의미는 무엇인가요?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|self}}는 &amp;quot;현재의 객체&amp;quot;에 대한 생략이며, &amp;quot;현재 다루고 있는 모든 클래스&amp;quot;의 콘텍스트입니다. {{HighlightBold|Inspector}} 화면을 이미 보셨다면, 이 용어를 보셨을겁니다. {{HighlightBold|self}}는 항상 {{HighlightBold|Inspector}} 화면 좌측 창에 있는 최초 항목입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
4 squared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
스몰토크는 식을 평가하고, 16을 돌려줍니다. {{HighlightBold|Inspect}}는 &amp;quot;16&amp;quot;이 {{HighlightBold|SmallInteger}} 클래스의 인스턴스라는 것을 나타냅니다. 아래와 그림과 같은지 확인해 주십시오.&lt;br /&gt;
&lt;br /&gt;
[[image:cincom_tutorial1_fig23.gif|none|459px|thumb|그림 S-1. &amp;quot;16&amp;quot; 이 인스팩터에 표시되었습니다. Self에 주목해 주십시오.(-그림 2-3입니다)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
여기서 {{HighlightBold|self}}는 16의 인스턴스(객체)를 참조하고 있습니다. 믿을수 없다면 다음 작업을 해주십시오. 오른쪽 창에 {{HighlightBold|self -3}}을 입력하고, 그것을 반전시키고 {{HighlightBold|&amp;lt;오퍼레이트 클릭&amp;gt;}}후 {{HighlightBold|Print}}를 선택해 주십시오. {{HighlightBold|13}}이 표시될겁니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:cincom_introduction_figself1.gif|none|421px|thumb|그림 S-2. 인스팩터 화면이 워크스페이스 처럼 동작합니다.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:cincom_introduction_figself2.gif|none|421px|thumb|그림 S-3. Self가 &amp;quot;16&amp;quot; 을 참조하고 있는 것을 확인]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
메서드를 쓰기 시작했을 때 {{HighlightBold|self}}가 중요해집니다. 복권(lottery) 시뮬레이션 프로그램을 적읍시다. {{HighlightBold|Lottery}} 클래스를 작성하고, 48개의 숫자에서 6개의 숫자를 뽑는 시뮬레이션의 메서드를 적습니다. 아래의 메서드는 이 시뮬레이션을 실행합니다. 여섯개의 요소배열에 무작위로 추출한 6개의 숫자(1에서 48까지)를 반환합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
generateDrawing&lt;br /&gt;
	&amp;quot;Simulate a random drawing&amp;quot;&lt;br /&gt;
	| aSetOfNumbers aSetOf6 random pick computerNumber total |&lt;br /&gt;
	aSetOfNumbers := Set new.&lt;br /&gt;
	aSetOf6 := Set new.&lt;br /&gt;
	1 to: 48 do: [ :each | aSetOfNumbers add: each].&lt;br /&gt;
	total := aSetOfNumbers size.&lt;br /&gt;
        [ (aSetOf6 size) = 6] &lt;br /&gt;
	  whileFalse:&lt;br /&gt;
  	  [ &lt;br /&gt;
	   random := Random new next.&lt;br /&gt;
	   pick := (random * 100) truncated \\ total.&lt;br /&gt;
	   computerNumber := pick + 1.&lt;br /&gt;
	   aSetOf6 add: computerNumber.&lt;br /&gt;
	  ]. &lt;br /&gt;
	^aSetOf6 asArray.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
다음은 게임을 개시하는 메서드를 적습니다. 작업의 하나로서, 이 {{HighlightBold|start}} 메서드에 시뮬레이션 실행에 필요한 {{HighlightBold|generateDrawing}} 메서드를 &amp;quot;호출합니다&amp;quot;. 양쪽 메서드는 {{HighlightBold|Lottery}} 클래스의 인스턴스 메서드입니다. {{HighlightBold|start}} 메서드 안에서 {{HighlightBold|generateDrawing}}을 call/부르고/참조할 필요가 있습니다. 어떻게 하면 실현할 수 있을까요? 아래의 코드는 동작하지 않습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
| theWinningNumbers | &lt;br /&gt;
theWinningNumbers := generateDrawing.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:normal;background-color:yellow;&amp;quot;&amp;gt;코드를 실행할 수 없습니다! 유효한 스몰토크 문법은 {{HighlightBold|객체-메서드}} 형식이어야 합니다.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
따라서, {{HighlightBold|Lottery}} 객체를 참조하는 무언가, 즉 {{HighlightBold|Lottery}} 클래스의 인스턴스를 참조하는 것이 필요하게 됩니다. 여기서 {{HighlightBold|self}}가 등장합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
| theWinningNumbers | &lt;br /&gt;
theWinningNumbers := self generateDrawing.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageCertifacate}}&lt;br /&gt;
| &amp;lt;font style=&amp;quot;text-align:center;font-weight:bold; font-style: normal;font-size:110%;&amp;quot;&amp;gt;정리&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
스몰토크 구문에서 {{HighlightBold|self}}를 사용한 경우, 클래스의 인스턴스 메서드에 속합니다. {{HighlightBold|self}}는 클래스의 인스턴스를 참조하고, 같은 클래스에 있는 메서드를 반드시 100% 포함합니다.&lt;br /&gt;
|- style=&amp;quot;text-align:center;font-weight:bold; font-style: normal;font-size:120%;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&amp;lt;hr style=&amp;quot;color:black;background-color:black;height:4px;&amp;quot;&amp;gt; | 이전으로 돌아가기 |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>