<?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%3APage07</id>
	<title>VisualWorksIntroduction:Page07 - 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%3APage07"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=VisualWorksIntroduction:Page07&amp;action=history"/>
	<updated>2026-05-01T20:04:51Z</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:Page07&amp;diff=2728&amp;oldid=prev</id>
		<title>Onionmixer: VisualWorksIntroduction page07 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=VisualWorksIntroduction:Page07&amp;diff=2728&amp;oldid=prev"/>
		<updated>2012-12-13T10:25:34Z</updated>

		<summary type="html">&lt;p&gt;VisualWorksIntroduction page07 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{CincomTop|{{CincomSmalltalkHeadBanner||입문서 : 슈퍼 클래스(파트 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;
| 스몰토크 언어에는 다섯가지 에약어가 있습니다. Super는 그중 하나입니다. 객체지향의 세계에 있어서 계층구조에 관계하고 있습니다.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageCertifacate}}&lt;br /&gt;
| {{CincomSmalltalkGreenBigFont|이 입문서에서는 객체지향 프로그래밍에 있어 예약어 super의 역할 및 배경정보를 토대로 설명하겠습니다.}}&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;super&amp;quot;의 의미는 무엇인가요?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|super}}는 {{HighlightBold|superclass}}의 약자이며, 매우 단순한 형태입니다. 즉, &amp;quot;지금 사용하고 있는 객체의 상위 클래스&amp;quot;입니다. 아래의 계층을 예로 들겠습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold;font-style:normal;color:blue;&amp;quot;&amp;gt;&lt;br /&gt;
동물&lt;br /&gt;
:포유동물&lt;br /&gt;
::개&lt;br /&gt;
:::진돗개&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|개}} 클래스는 {{HighlightBold|진돗개}} 클래스의 {{HighlightBold|슈퍼 클래스}}입니다. {{HighlightBold|동물}} 클래스는 {{HighlightBold|포유동물}} 클래스의 {{HighlightBold|슈퍼 클래스}}입니다. {{HighlightBold|포유동물}} 클래스는 개 클래스의 {{HighlightBold|슈퍼 클래스}}입니다. 이것으로 계층구조의 지식을 얻었습니다. 이 계층구조에 관련하여 또 한가지 용어를 설명하겠습니다. 그것은 {{HighlightBold|서브 클래스}}입니다.&lt;br /&gt;
&lt;br /&gt;
위의 예를 사용하여 설명하자면, {{HighlightBold|개}} 클래스는 {{HighlightBold|포유동물}} 클래스의 {{HighlightBold|서브 클래스}}입니다. {{HighlightBold|진돗개}} 클래스는 {{HighlightBold|개}} 클래스의 {{HighlightBold|서브 클래스}}입니다.&lt;br /&gt;
&lt;br /&gt;
계층구조가 이렇게 심플한 이유는 실제 사회 자체가 계층구조로 되어있기 때문입니다. 실제 사회에서 차용해온 이 계층구조는 객체지향의 세계에 숨겨진 또 하나의 원칙, {{HighlightBold|상속}}이라 불리우는 암묵의 특성을 지니고 있습니다. 이것이 컴퓨터 언어에 있어서 무엇을 의미하는 것일까요?&lt;br /&gt;
&lt;br /&gt;
아래의 코드로 예를 들어보겠습니다.&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;
아직 이 구문의 설명을 읽지 않으셨다면 여기서 설명을 읽어주십시오.&lt;br /&gt;
&lt;br /&gt;
:{{CincomSmalltalkGreenFont|{{HighlightBold|4}}는 숫자입니다. 좀 더 구체적으로 말하면, {{HighlightBold|Integer}}(정수)라 불리우는 수입니다. 비주얼웍스에서 정수는 {{HighlightBold|SmallInteger}}와 {{HighlightBold|LargeInteger}}로 나뉩니다. 객체지향 용어에서 {{HighlightBold|4}}는 객체입니다. 그리고 {{HighlightBold|SmallInteger}}는 그 클래스입니다. 다른 말로 {{HighlightBold|&amp;quot;4는 SmallInteger 클래스의 인스턴스입니다&amp;quot;}}가 됩니다. &amp;quot;연어는 생선입니다&amp;quot;를 바꿔 말하면 &amp;quot;연어는 생선 클래스의 인스턴스입니다&amp;quot;가 됩니다.}}&lt;br /&gt;
&lt;br /&gt;
:{{CincomSmalltalkGreenFont|비주얼웍스는 거대한 클래스 라이브러리를 제공하고 있습니다. 이 라이브러리에는 클래스에 속하는 코드(메서드)가 포함되어 있습니다. 이것들의 메서드는 컴퓨터(컴퓨터 언어)에 처리를 요구하는 기능을 가지고 있습니다. 예를들어 수치가 왔을 경우 더하기, 빼기, 곱하기, 나누기를 컴퓨터에 요구합니다. 또한 &amp;quot;squared&amp;quot;(제곱)을 계산하기 위해서는 더욱 고도의 수학적 기능을 실행하도록 요구할 것입니다.}}&lt;br /&gt;
&lt;br /&gt;
:{{CincomSmalltalkGreenFont|위의 식에서는 {{HighlightBold|4}}(SmallInteger 클래스의 인스턴스)에 squared 메시지가 송신되어 있습니다.}}&lt;br /&gt;
&lt;br /&gt;
계층구조라는 점에서 무언가와 닮았습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold;font-style:normal;color:blue;&amp;quot;&amp;gt;&lt;br /&gt;
Number&lt;br /&gt;
:Integer&lt;br /&gt;
::SmallInteger&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:normal;color:black;font-size:120%;&amp;quot;&amp;gt;여기서 질문이 있습니다 : 스몰토크 클래스 라이브러리에서 {{HighlightBold|squared}} 메서드를 찾는거죠? {{HighlightBold|SmallInteger}} 클래스인가요? {{HighlightBold|Integer}} 클래스인가요? {{HighlightBold|Number}} 클래스인가요?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|squared}} 메서드가 {{HighlightBold|SmallInteger}} 클래스에 속해있다고 가정합시다. 스몰토크는 여기서 메서드를 발견했다고 합시다. 그것은 작은 정수에 {{HighlightBold|squared}} 메시지를 송신 할 수 있다는 의미를 지닙니다. &amp;quot;squared&amp;quot;는 그 수치 자신을 곱하는 것을 의미하기에, 작은 정수에 대해서만 기능제한을 하는 것은 좋지 않습니다. 그러면 한 단계 위에 있는 {{HighlightBold|Integer}} 클래스로 메서드를 이행합시다.  이것은 정수(분수나 소수점은 포함되지 않음)에 {{HighlightBold|squared}} 메시지를 송신할 수 있다는 의미를 지닙니다. 이것 또한 좋지 않습니다. 한 단계 더 위에 있는 {{HighlightBold|Number}} 클래스로 이행합시다. 이것으로 모든 수치에 대해 {{HighlightBold|squared}} 메시지를 송신할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
여기서 그 대답을 찾아봅시다. {{HighlightBold|Smallinteger}} 클래스는 {{HighlightBold|Integer}}보다 위에 있는 모든 메서드를 상속합니다. {{HighlightBold|Integer}} 클래스는 {{HighlightBold|Number}}보다 위의 메서드를 상속합니다. 특정 클래스의 {{HighlightBold|서브 클래스}}로서 클래스를 작성했을 때, 다른 클래스나 그 슈퍼 클래스의 모든 메서드를 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
아래의 코드예제로 동작을 확인해보겠습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
^super new initialize&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
우선 맨 처음 캐롯(&amp;lt;span style=&amp;quot;font-style:normal;color:yellow&amp;quot;&amp;gt;^&amp;lt;/span&amp;gt;)입니다. 스몰토크의 메서드는 다른 언어의 서브 루틴이나 함수와 닮았습니다. COBOL 언어에서는 &amp;quot;Procedure&amp;quot; 라 불리우며, BASIC에서는 주로 &amp;quot;SUB&amp;quot;라 불리웁니다. 하지만 &amp;quot;function&amp;quot;은  일반적으로, 일련의 흐름이 있는 값을 반환하거나 돌려줄 때 사용합니다. 스몰토크에서는 무언가를 &amp;quot;돌려주고&amp;quot;싶을 때 캐럿(^) 기호를 사용합니다.&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|^ return}}을 사용한 식이 있을 경우엔 항상 맨 처음에 모든 식을 평가합니다. 실제로 &amp;quot;돌려주는&amp;quot; 작업은 맨 마지막에 일어난 것이 됩니다. 스몰토크는 왼쪽에서 오른쪽으로 처리하기 때문에 아래와 같이 됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
^super new initialize&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이것은 다음과 같이 해석됩니다. &amp;quot;어떠한 클래스이건, 그 상위 클래스로 옮겨가 {{HighlightBold|new}} 메서드를 실행한다&amp;quot;. 상속하기 때문에 상위 클래스에 {{HighlightBold|new}} 메서드가 없는 경우 한 단계 상위 클래스에 가서 {{HighlightBold|new}} 메서드를 찾습니다. 또한, 상위 클래스에 {{HighlightBold|new}} 메서드가 없는 경우 한 단계 위 클래스로 가서 {{HighlightBold|new}} 메서드를 찾습니다. 이것은 &amp;quot;상위 계층 클래스 검색&amp;quot;이라고 하며, {{HighlightBold|new}} 메서드를 찾거나, 최상위 클래스에 도달할 때 까지 반복됩니다.(최상위 클래스에서도 찾지 못할 경우, &amp;quot;메시지를 확인할 수 없습니다&amp;quot;라는 메시지가 돌아옵니다.)&lt;br /&gt;
&lt;br /&gt;
이 예문에서는, {{HighlightBold|new}} 메서드는 현재 클래스의 인스턴스를 작성합니다. 코드를 쓸 필요는 없습니다. 아래와 같이 하면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
(클래스의 인스턴스) initialize&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|Super new}}는 스몰토크가 클래스의 객체를 생성합니다. 지금 {{HighlightBold|initialize}} 메시지를 객체에 전송합니다. 스몰토크는 {{HighlightBold|initialize}}를 인스턴스 메서드 가운데서 찾습니다. 만일 찾지 못한다면 슈퍼 클래스를 찾습니다.&lt;br /&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|super new initialize}}의 식은 유저가 클래스를 정의할 때 항상 보는 메서드 중 하나입니다. 모든 객체는 {{HighlightBold|new}} 메서드를 필요로합니다. 하지만 {{HighlightBold|new}} 메서드가 이미 적혀있는데 왜 적는 것일까요?&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>