<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>정샘의 블로그 3.0</title>
		<link>http://jeongsam.net/</link>
		<description>테터툴즈에서 텍스트큐브로 갈아타다.</description>
		<language>ko</language>
		<pubDate>Fri,  7 Nov 2008 09:48:28 +0900</pubDate>
		<generator>Textcube 1.7.4 : Risoluto</generator>
		<image>
		<title>정샘의 블로그 3.0</title>
		<url>http://jeongsam.net/attach/1/1360982431.gif</url>
		<link>http://jeongsam.net/</link>
		<width>100</width>
		<height>100</height>
		<description>테터툴즈에서 텍스트큐브로 갈아타다.</description>
		</image>
		<item>
			<title>다차원 배열의 크기 알아내기</title>
			<link>http://jeongsam.net/entry/%EB%8B%A4%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4%EC%9D%98-%ED%81%AC%EA%B8%B0-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0</link>
			<description>자바스크립트는 느슨한 타입(loosely type)과 늦은 바인딩(late binding)을 지원하는 언어이다. 그 덕분에 자유도가 매우 높은 배열 구조를 제공하고 있다.&lt;BR&gt;&lt;BR&gt;다음은 자바스크립트의 배열 선언과 초기화 방법이다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;var arry = new Array();&lt;BR&gt;arry[0] = 123;&lt;BR&gt;arry[1] = &quot;Hello&quot;;&lt;/code&gt;&lt;/pre&gt;위와 같이 자바스크립트는 배열에 다양한 타입의 리터럴을 저장할 수 있으며, 배열의 크기는 리터럴을 추가할 때마다 자동으로 증가한다.&lt;BR&gt;배열을 초기화하는 방법으로는 다음과 같이 대괄호 연산자&#039;[ ]&#039;를 사용하여 리터럴을 대입하는 방법이 있다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;var a = [123, &quot;Hello&quot;];&lt;/code&gt;&lt;/pre&gt;위 두가지 코드는 같은 결과를 보여준다.&lt;BR&gt;&lt;BR&gt;배열을 사용하는 가장 일반적인 방법은 인덱스를 이용한 접근 방법이다. 배열내의 리터럴을 사용하기 위해서는 인덱스를 이용해야 하며,&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>JavaScript</category>
			<category>JavaScript</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/20</guid>
			<comments>http://jeongsam.net/entry/%EB%8B%A4%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4%EC%9D%98-%ED%81%AC%EA%B8%B0-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0#entry20comment</comments>
			<pubDate>Fri, 12 Sep 2008 19:10:06 +0900</pubDate>
		</item>
		<item>
			<title>Oracle XE에서 관리 포트 바꾸기</title>
			<link>http://jeongsam.net/entry/Oracle-XE%EC%97%90%EC%84%9C-%EA%B4%80%EB%A6%AC-%ED%8F%AC%ED%8A%B8-%EB%B0%94%EA%BE%B8%EA%B8%B0</link>
			<description>&lt;P&gt;오라클 10g Express 버전을 사용해보면 Application Express를 이용하여 웹 기반의 관리툴을 제공하고 있다. 그런데 이 관리툴은 8080 포트를 사용하는데 웹서비스에서 이 포트를 사용할 일이 생기면 충돌로 문제가 발생한다. 그래서 설정 파일을 뒤져서 변경을 해보려고 했지만 어디에도 포트를 변경하는 항목은 없었고 결국 검색엔진의 힘을 빌어 외국의 어느 오라클 프로그래머의 블러그에서 해답을 찾았다.&lt;BR&gt;일단 관리툴에 sys 권한으로 로그인을 한 뒤, SQL 명령 입력 창에 다음과 같이 입력한 후 실행한다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;begin&lt;BR&gt;dbms_xdb.sethttpport(&#039;1080&#039;);&lt;BR&gt;end;&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;실행후 결과는 1080 포트로 리턴되기 때문에 한참 지연시간이 흐른후 &#039;Internal Error&#039;를 표시하게 된다. 웹브라우저 창의 URI 포트를 변경값으로 바꾼후 다시 접속하면 정상적으로 사용할 수 있게 된다. 변경 결과는 저장되므로 다시 시작하더라도 변경된 포트를 유지하게 된다.&lt;BR&gt;혹은 이렇게 실행해도 된다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;exec dbms_xdb.sethttpport(&#039;1080&#039;);&lt;/code&gt;&lt;/pre&gt;&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Oracle DBMS</category>
			<category>Oracle 10g Express</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/18</guid>
			<comments>http://jeongsam.net/entry/Oracle-XE%EC%97%90%EC%84%9C-%EA%B4%80%EB%A6%AC-%ED%8F%AC%ED%8A%B8-%EB%B0%94%EA%BE%B8%EA%B8%B0#entry18comment</comments>
			<pubDate>Wed,  3 Sep 2008 20:05:58 +0900</pubDate>
		</item>
		<item>
			<title>{자바-기초} 문법 노트 (4) 원시 타입</title>
			<link>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EB%85%B8%ED%8A%B8-4-%EC%9B%90%EC%8B%9C%EB%B3%80%EC%88%98%EC%9D%98-%ED%83%80%EC%9E%85</link>
			<description>&lt;P&gt;이번 시간에는 Java에서 사용되는 원시 타입에 대해 살펴보도록 하겠다. Java는 아래와 같은 총 8개의 원시 타입을 제공한다.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;원시 타입 (primitive type)&lt;BR&gt;&lt;FONT size=2&gt;부울과 문자&lt;/FONT&gt;&lt;BR&gt;&lt;/STRONG&gt;boolean - true 혹은 false를 값으로 가짐&lt;BR&gt;char - 유니코드 한 글자를 저장 (16bit)&lt;BR&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;숫자&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;STRONG&gt;정수&lt;/STRONG&gt;&lt;BR&gt;byte - 8bit 크기&amp;nbsp; -128~127&lt;BR&gt;short - 16bit 크기 -32768~32767&lt;BR&gt;int - 32bit 크기 -2&lt;SUP&gt;32&lt;/SUP&gt; ~ (2&lt;SUP&gt;32&lt;/SUP&gt; - 1)&lt;BR&gt;long - 64bit 크기&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;부동소수점 (실수)&lt;/STRONG&gt;&lt;BR&gt;float - 32bit &lt;BR&gt;double - 64bit&lt;BR&gt;&lt;BR&gt;변수는 앞서 설명한 것처럼 값을 담아두기 위한 그릇이다. 그 그릇에 담는 값을 Java에서는 리터럴 혹은 상수라고 한다. 여기서는 Java Tutorial의 표기에 따라 리터럴(literal)이라고 부르겠다. 각 타입에 따른 리터럴 표현 방법과 변수의 선언 방법은 다음과 같다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;package exam.fundamental;&lt;/P&gt;
&lt;P&gt;public class Variables {&lt;BR&gt; public static void main(String[] args) {&lt;BR&gt;  boolean b; // 논리(boolean) 타입의 변수 선언&lt;BR&gt;  char c; // 문자 타입의 변수 선언&lt;BR&gt;  byte bt; // Byte 타입의 변수 선언&lt;BR&gt;  short sd; // Short 타입의 변수 선언&lt;BR&gt;  int i; // 정수 타입의 변수 선언&lt;BR&gt;  long ld; // Long 타입의 변수 선언&lt;BR&gt;  float f; // 실수 타입의 변수 선언&lt;BR&gt;  double d; // Double 타입의 변수 선언&lt;BR&gt;  &lt;BR&gt;  b = true; // 논리 타입의 리터럴 할당&lt;BR&gt;  &lt;BR&gt;  c = &#039;A&#039;; // 문자 타입의 리터럴 할당&lt;BR&gt;  c = 65; // 정수형 타입의 리터럴 할당. 아스키 코드값으로 저장되어 문자로 표현&lt;BR&gt;  c = &#039;\u0041&#039;;  // Unicode escape 표현식 16진수로 표시 &lt;BR&gt;  System.out.println(&quot;c : &quot; + c);&lt;BR&gt;  &lt;BR&gt;  bt = 127; // byte 타입의 리터럴 할당&lt;BR&gt;  sd = -32768; // short 타입의 리터럴 할당&lt;BR&gt;  i = 2147483647; // int 타입의 리터럴 할당&lt;BR&gt;  i = 0xFF; // 16진수 리터럴 할당 &#039;0x&#039;로 시작&lt;BR&gt;  i = 0376; // 8진수 리터럴 할당 &#039;0&#039;으로 시작&lt;BR&gt;  ld = -9223372036854775808L; // long 타입의 리터럴 할당. &#039;L&#039;, &#039;l&#039;을 붙임.&lt;BR&gt;  f = 3.1415F; // float 타입의 리터럴 할당. &#039;F&#039;, &#039;f&#039;를 붙임.&lt;BR&gt;  d = 3.1415; // double 타입의 리터럴 할당. 디폴트 타입.&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;디폴트 값&lt;/STRONG&gt;&lt;BR&gt;클래스의 필드로 선언된 변수의 경우 인스턴스가 될 때 자동으로 초기값이 부여된다.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD align=left&gt;&lt;STRONG&gt;Data Type&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD align=left&gt;&lt;STRONG&gt;Default Value (for fields)&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;byte&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;short&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;int&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;long&lt;/TD&gt;
&lt;TD&gt;0L&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;float&lt;/TD&gt;
&lt;TD&gt;0.0f&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;double&lt;/TD&gt;
&lt;TD&gt;0.0d&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;char&lt;/TD&gt;
&lt;TD&gt;&#039;\u0000&#039;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;String (or any object) &amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;null&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;boolean&lt;/TD&gt;
&lt;TD&gt;false&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;public class DefaultValues {&lt;BR&gt; boolean b; // 논리(boolean) 타입의 변수 선언&lt;BR&gt; char c; // 문자 타입의 변수 선언&lt;BR&gt; byte bt; // Byte 타입의 변수 선언&lt;BR&gt; short sd; // Short 타입의 변수 선언&lt;BR&gt; int i; // 정수 타입의 변수 선언&lt;BR&gt; long ld; // Long 타입의 변수 선언&lt;BR&gt; float f; // 실수 타입의 변수 선언&lt;BR&gt; double d; // Double 타입의 변수 선언&lt;/P&gt;
&lt;P&gt; public static void main(String[] args) {&lt;BR&gt;  DefaultValues dv = new DefaultValues();&lt;BR&gt;  System.out.println(&quot;boolean : &quot; + dv.b);&lt;BR&gt;  System.out.println(&quot;char : &quot; + dv.c);&lt;BR&gt;  System.out.println(&quot;byte : &quot; + dv.bt);&lt;BR&gt;  System.out.println(&quot;short : &quot; + dv.sd);&lt;BR&gt;  System.out.println(&quot;int : &quot; + dv.i);&lt;BR&gt;  System.out.println(&quot;long : &quot; + dv.ld);&lt;BR&gt;  System.out.println(&quot;float : &quot; + dv.f);&lt;BR&gt;  System.out.println(&quot;double : &quot; + dv.d);&lt;BR&gt;  System.out.println(&quot;String : &quot; + new String());&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;변수에 값을 넣을 경우 자동확장(promotion)이 되어 작은 유형의 값을 큰 유형의 변수에 넣을 수 있다.&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Fundamental</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/15</guid>
			<comments>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EB%85%B8%ED%8A%B8-4-%EC%9B%90%EC%8B%9C%EB%B3%80%EC%88%98%EC%9D%98-%ED%83%80%EC%9E%85#entry15comment</comments>
			<pubDate>Mon, 18 Aug 2008 16:50:50 +0900</pubDate>
		</item>
		<item>
			<title>{자바-기초} 문법 노트를 작성하며... 참고 자료들 소개</title>
			<link>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EB%85%B8%ED%8A%B8%EB%A5%BC-%EC%9E%91%EC%84%B1%ED%95%98%EB%A9%B0-%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C%EB%93%A4-%EC%86%8C%EA%B0%9C</link>
			<description>Java라는 프로그래밍 언어 대해 공부를 해오면서 이런 저런 책들과 이런 저런 사이트들을 보았지만 이거다 싶은 책이나 사이트가 딱히 눈에 띄지 않았다. 거의 대부분이 천편일률적으로 데이터 타입, 조건문, 반복문, 연산자, 클래스, 상속 등을 소개한 후 util 패키지, 그리고 Swing이나 입출력 관련 패키지, 네트워크 관련 패키지를 소개하는 것으로 마무리가 되었다.&lt;BR&gt;책이란게 본디 자습(自習)을 위해 쓰여졌건만 사실 책만으로 프로그래밍 언어를 익힌다는게 그리 쉽지는 않은게 사실이다.&lt;BR&gt;특히 Java는 객체지향 언어라고 하는 독특한 특징을 가지고 있건만, 클래스와 상속, 인터페이스를 아무리 문법적으로 익혀본들 객체지향이라는 특징을 어떻게 살려야하는지 내가 짜고 있는 프로그래밍 과연 객체지향적으로 작성이 되었는지 알수가 없었다.&lt;BR&gt;그러던 중 &#039;Head First Design Patterns&#039;라는 책을 읽으면서 객체지향적인 프로그래밍이 무엇인가를 조금 느껴볼 수 있었고 Java 문법 구조를 바라보는 눈도 이전과는 조금 달라졌다.&lt;BR&gt;그래서 객체지향언어로써의 Java를 다시금 익히는 마음으로 문법 노트를 작성해 보려고 한다. 아울러 이 글을 쓰며 참고한 자료도 지속적으로 소개할까 한다.&lt;BR&gt;&lt;BR&gt;*** 참고 자료 ***&lt;BR&gt;8. Java&lt;SUP&gt;&lt;FONT size=-2&gt;TM&lt;/FONT&gt;&lt;/SUP&gt; Platform, Standard Edition 6 API 스펙 (&lt;A href=&quot;http://xrath.com/javase/ko/6/docs/ko/api/index.html&quot;&gt;http://xrath.com/javase/ko/6/docs/ko/api/index.html&lt;/A&gt;)&lt;BR&gt;&lt;BR&gt;7. &lt;A class=OutsideLink href=&quot;http://java.sun.com/javase/6/docs/index.html&quot; target=_blank&gt;&lt;U&gt;&lt;FONT color=#0066cc&gt;Java SE Development Kit 6 (JDK&lt;FONT size=-2&gt;&lt;SUP&gt;TM&lt;/SUP&gt;&lt;/FONT&gt; 6) documentation&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;6. The Java&lt;SUP&gt;TM&lt;/SUP&gt; Tutorials (&lt;A href=&quot;http://java.sun.com/docs/books/tutorial/index.html&quot;&gt;http://java.sun.com/docs/books/tutorial/index.html&lt;/A&gt;)&lt;BR&gt;&lt;BR&gt;
&lt;DIV class=ttbReview&gt;5.
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8956742170&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://image.aladdin.co.kr/coveretc/book/covermini/8956742170_1.jpg&quot; border=0&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot; align=left&gt;&lt;A class=aladdin_title href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8956742170&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;INS&gt;초보자를 위한 UML 객체지향 설계&lt;/INS&gt;&lt;/A&gt; - &lt;IMG alt=10점 src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=0&gt;&lt;BR&gt;조셉 슈멀러 지음, 곽용재 외 옮김/정보문화사&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=ttbReview&gt;4.
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979145446&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://image.aladdin.co.kr/coveretc/book/covermini/8979145446_1.jpg&quot; border=0&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot; align=left&gt;&lt;A class=aladdin_title href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979145446&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;INS&gt;다이어그램으로 쉽게 배우는 UML&lt;/INS&gt;&lt;/A&gt; - &lt;IMG alt=10점 src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=0&gt;&lt;BR&gt;이노우에 타케시 지음, 이영희 옮김/한빛미디어&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=ttbReview&gt;3.
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8955508468&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://image.aladdin.co.kr/coveretc/book/covermini/8955508468_1.jpg&quot; border=0&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot; align=left&gt;&lt;A class=aladdin_title href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8955508468&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;INS&gt;Thinking in JAVA&lt;/INS&gt;&lt;/A&gt; - &lt;IMG alt=10점 src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=0&gt;&lt;BR&gt;Bruce Eckel 지음, 심재철.최정국 옮김/사이텍미디어(희중당)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=ttbReview&gt;2.
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979143710&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://image.aladdin.co.kr/coveretc/book/covermini/8979143710_1.jpg&quot; border=0&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot; align=left&gt;&lt;A class=aladdin_title href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979143710&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;INS&gt;Head First Java&lt;/INS&gt;&lt;/A&gt; - &lt;IMG alt=10점 src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=0&gt;&lt;BR&gt;케이시 시에라 외 지음, 서환수 옮김/한빛미디어&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=ttbReview&gt;1,
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979143400&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://image.aladdin.co.kr/coveretc/book/covermini/8979143400_1.jpg&quot; border=0&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot; align=left&gt;&lt;A class=aladdin_title href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979143400&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;INS&gt;Head First Design Patterns&lt;/INS&gt;&lt;/A&gt; - &lt;IMG alt=10점 src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=0&gt;&lt;BR&gt;에릭 프리먼 외 지음, 서환수 옮김/한빛미디어&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Fundamental</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/16</guid>
			<comments>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EB%85%B8%ED%8A%B8%EB%A5%BC-%EC%9E%91%EC%84%B1%ED%95%98%EB%A9%B0-%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C%EB%93%A4-%EC%86%8C%EA%B0%9C#entry16comment</comments>
			<pubDate>Mon, 18 Aug 2008 15:36:18 +0900</pubDate>
		</item>
		<item>
			<title>{자바-기초} 문법 노트 (3) 원시변수와 객체참조</title>
			<link>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EA%B0%95%EC%A2%8C-3-%EC%9B%90%EC%8B%9C%EB%B3%80%EC%88%98%EC%99%80-%EA%B0%9D%EC%B2%B4%EC%B0%B8%EC%A1%B0</link>
			<description>&lt;P&gt;이번 시간에는 변수에 대해서 알아보겠다. 변수란 리터럴(값)을 담는 일종의 그릇이다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1282309985.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;229&quot; width=&quot;248&quot; /&gt;&lt;/div&gt;&amp;nbsp;Java는 다양한 타입의 리터럴을 사용할 수 있으며 엄격한(strict) 타입의 언어이기 때문에 리터럴을 담을 그릇인 변수의 타입도 리터럴과 일치해야만 올바로 담을 수 있다.&lt;BR&gt;변수에 리터럴을 담는 것을 &#039;할당&#039; 혹은 &#039;대입&#039;이라고 하며, &#039;=&#039; 연산자가 이 기능을 한다. 그래서 &#039;=&#039; 연산자를 &#039;할당연산자&#039; 혹은 &#039;대입연산자&#039;라고 한다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;int i = 79;&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;위의 코드는 정수 타입의 변수 &#039;i&#039;를 선언하여 &#039;79&#039;라는 정수 리터럴을 할당하고 있다.&lt;BR&gt;변수에는 원시 변수(primitve varlable)와 객체 참조(object reference)가 있다. 원시 변수란 Java에서 제공하는 원시 타입의 리터럴을 할당할 수 있는 변수를 말하며 객체 참조는 지난 강의에 보았듯이 인스턴스(객체)를 지정하기 위해 사용하는 변수이다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1328707375.png&quot; alt=&quot;클릭하면 원래 크기로 보입니다.&quot; height=&quot;179&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;원시 변수와 객체 참조&lt;/p&gt;&lt;/div&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;public class DiffVariable {&lt;/P&gt;
&lt;P&gt; public static void main(String[] args) {&lt;BR&gt;  int i = 75; // 원시 변수&lt;BR&gt;  Dog d = new Dog(); // 객체 참조&lt;BR&gt;  &lt;BR&gt;  System.out.println(&quot;원시 변수 &#039;i&#039;의 리터럴 : &quot; + i);&lt;BR&gt;  System.out.println(&quot;객체 참조 &#039;d&#039;의 리터럴 : &quot; + d);&lt;BR&gt; }&lt;/P&gt;
&lt;P&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;위의 코드를 실행하면 다음과 같은 결과가 출력된다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;원시 변수 &#039;i&#039;의 리터럴 : 75&lt;BR&gt;객체 참조 &#039;d&#039;의 리터럴 : Dog@1fb8ee3&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;원시 변수 &#039;i&#039;는 75라는 정수 값을 할당했기 때문에 당연히 75가 출력된다. 하지만 객체 참조인 &#039;d&#039;는 출력 모양이 별스럽다. Java는 인스턴스를 만들면 해당 인스턴스를 메모리의 특정 위치에 저장하는데 이때 저장된 주소가 바로 16진수 숫자값으로 표시되는 주소이고 이 값은 그때 그때 달라진다. 그리고 Dog는 클래스 이름이라는 것은 눈치챘을 것이다. 이렇게 출력된 값은 아무 의미가 없기 때문에 보통 toString()이라는 메서드를 추가하여 인스턴스의 값을 출력하게 한다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/**&lt;BR&gt; * 클래스명 : Dog&lt;BR&gt; * @author 정승용 (&lt;A href=&quot;mailto:jeongsy10@empal.com&quot;&gt;jeongsy10@empal.com&lt;/A&gt;)&lt;BR&gt; * @version 1.01&lt;BR&gt; */&lt;BR&gt;class Dog {&lt;BR&gt; String kind; // 품종&lt;BR&gt; int age; // 나이&lt;BR&gt; String name; // 이름&lt;BR&gt; String size; // 크기&lt;BR&gt; String color; // 털 색깔&lt;BR&gt; &lt;BR&gt; void seat() { System.out.println(&quot;앉는다.&quot;); } // 앉다&lt;BR&gt; void standUp() { System.out.println(&quot;일어선다.&quot;); } // 일어서다&lt;BR&gt; void run() { System.out.println(&quot;달린다.&quot;); } // 달린다&lt;BR&gt; void stop() { System.out.println(&quot;멈춘다.&quot;); } // 멈춘다&lt;BR&gt; void bark() { System.out.println(&quot;짖는다.&quot;); } // 짖는다&lt;BR&gt;// toString() 메서들를 이용하여 개이름을 출력하도록 함&lt;BR&gt; public String toString() {&lt;BR&gt;  return name;&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;toString()에 대해서는 &#039;상속&#039;이라는 개념을 설명할 때 다시 설명하도록 하겠다. 여기서는 toString() 메서드의 역할만 살펴보도록 하자. toString()은 인스턴스의 리터럴을 출력할 수 있도록 해준다. 실행 코드를 조금 변경하여 다시 실행해보자.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;public class DiffVariable {&lt;/P&gt;
&lt;P&gt; public static void main(String[] args) {&lt;BR&gt;  int i = 75; // 원시 변수&lt;BR&gt;  Dog d = new Dog(); // 객체 참조&lt;BR&gt;  d.name = &quot;바둑이&quot;; // 인스턴스의 필드 &#039;name&#039;에 &quot;바둑이&quot; 할당&lt;BR&gt;  System.out.println(&quot;원시 변수 &#039;i&#039;의 리터럴 : &quot; + i);&lt;BR&gt;  System.out.println(&quot;객체 참조 &#039;d&#039;의 리터럴 : &quot; + d);&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;인스턴스의 필드인 &#039;d&#039;에 &quot;바둑이&quot;를 추가했다. 이렇게 실행 시키면 결과는 다음과 같다.&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;원시 변수 &#039;i&#039;의 리터럴 : 75&lt;BR&gt;객체 참조 &#039;d&#039;의 리터럴 : 바둑이&lt;/code&gt;&lt;/pre&gt;toString() 메서드의 역할을 알겠는가? toString()메서드를 활용하여 객체 참조가 갖고 있는 의미없는 리터럴 대신 인스턴스 안의 의미있는 필드 값을 출력할 수 있다.&lt;BR&gt;이번 강의에서는 원시 변수와 객체 참조의 차이점을 살펴보았다. 다음 강의에서는 원시 변수의 타입에 대해서 살펴보겠다.&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Fundamental</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/14</guid>
			<comments>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EA%B0%95%EC%A2%8C-3-%EC%9B%90%EC%8B%9C%EB%B3%80%EC%88%98%EC%99%80-%EA%B0%9D%EC%B2%B4%EC%B0%B8%EC%A1%B0#entry14comment</comments>
			<pubDate>Tue, 12 Aug 2008 15:56:36 +0900</pubDate>
		</item>
		<item>
			<title>{자바-기초} 문법 노트 (2) 클래스와 객체, 필드, 메서드</title>
			<link>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EA%B0%95%EC%A2%8C-1-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EA%B0%9D%EC%B2%B4-%ED%95%84%EB%93%9C-%EB%A9%94%EC%84%9C%EB%93%9C</link>
			<description>&lt;P&gt;지난 시간에 만들었던 Dog 클래스를 완성시켜 보겠다. 일단 각 메서드(동작)들은 해당 동작을 출력하도록 간단히 작성을 하겠다. 일단 Java에서 사용할 수 있는 출력문을 살펴보겠다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;System.out.println(&quot;출력내용&quot;);&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;위의 명령은 &quot;&quot;안의 내용을 명령프롬프트 화면에 출력시키는 기능을 한다. 그러면 Dog 클래스의 완성된 모습과 함께 이 클래스를 이용하여 만든 인스턴스(객체)를 사용해보자.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/**&lt;BR&gt; * 클래스명 : Dog&lt;BR&gt; * @author 정승용 (&lt;A href=&quot;mailto:jeongsy10@empal.com&quot;&gt;jeongsy10@empal.com&lt;/A&gt;)&lt;BR&gt; * @version 1.0&lt;BR&gt; */&lt;BR&gt;class Dog {&lt;BR&gt; String kind; // 품종&lt;BR&gt; int age; // 나이&lt;BR&gt; String name; // 이름&lt;BR&gt; String size; // 크기&lt;BR&gt; String color; // 털 색깔&lt;BR&gt; &lt;BR&gt; void seat() { System.out.println(&quot;앉는다.&quot;); } // 앉다&lt;BR&gt; void standUp() { System.out.println(&quot;일어선다.&quot;); } // 일어서다&lt;BR&gt; void run() { System.out.println(&quot;달린다.&quot;); } // 달린다&lt;BR&gt; void stop() { System.out.println(&quot;멈춘다.&quot;); } // 멈춘다&lt;BR&gt; void bark() { System.out.println(&quot;짖는다.&quot;); } // 짖는다&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;위의 Dog 클래스를 사용하는 클래스도 만든다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;public class UsingDog {&lt;BR&gt; public static void main(String[] args) {&lt;BR&gt;  Dog d = new Dog();&lt;BR&gt;  d.name = &quot;바둑이&quot;; // 개에 이름을 부여함.&lt;BR&gt;  System.out.println(&quot;개의 이름은 &quot; + d.name + &quot;입니다.&quot;);&lt;BR&gt;  d.run(); // 인스턴스(객체)에게 달리도록 명령함&lt;BR&gt;  d.stop(); // 인스턴스 (객체)에게 멈추도록 명령함.&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1196730450.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;176&quot; width=&quot;253&quot; /&gt;&lt;/div&gt;&lt;BR&gt;여기서는 특별한 모양의 main() 메서드를 보게 된다. main() 메서드는 Java 프로그램의 시작 지점을 알려준다.&lt;BR&gt;이번 장에서는 다음과 같은 것들을 살펴보았다.&lt;BR&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;클래스를 구성하는 필드와 메서드 
&lt;LI&gt;필드에 리터럴(값)을 할당하는 방법 
&lt;LI&gt;메서드를 실행하는 방법 
&lt;LI&gt;인스턴스를 만들고 사용하는 방법&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;다음 시간에는 변수에 대해 살펴보도록 하겠다.&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Fundamental</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/13</guid>
			<comments>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EA%B0%95%EC%A2%8C-1-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EA%B0%9D%EC%B2%B4-%ED%95%84%EB%93%9C-%EB%A9%94%EC%84%9C%EB%93%9C#entry13comment</comments>
			<pubDate>Tue, 12 Aug 2008 15:09:42 +0900</pubDate>
		</item>
		<item>
			<title>{자바-기초} 문법 노트 (1) 클래스와 객체, 필드, 메서드</title>
			<link>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EA%B0%95%EC%A2%8C1</link>
			<description>1. 클래스 (Class)&lt;BR&gt;Java를 흔히 객체지향언어라고 한다. 객체란 무엇인가? 객체는 현실 세계에서 접할 수 있는 모든 사물과 같은 개념이다. 가령 개를 예로 들겠다. 현실 세계에서 접하는 개라는 객체는 기본적으로 속성과 행동을 갖고 있다. 물론 이런 설명이 조금은 딱딱해 보이지만 궁극적인 목표는 프로그래밍이므로 객체지향 프로그래밍 방법론에 맞춰서 설명을 해야한다.&lt;BR&gt;다시 개로 돌아가보자. 다시 한 번 얘기하지만 개는 속성과 행동을 가지고 있고 이것이 객체의 중요한 두가지 요소가 된다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;객체 (Object) = 속성 (Attribute) + 행동 (Operation)&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1068477244.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;99&quot; width=&quot;73&quot; /&gt;&lt;/div&gt;개를&amp;nbsp; 프로그래밍 언어로 표현해보겠다. 우선 가장 먼저 할 일은 개가 갖고 있는 속성과 행동을 뽑아내는 일이다. 속성은 객체의 특징을 나타내는 요소이다. 이름, 털 색깔, 꼬리 모양, 크기 등이 있을 수 있다. 행동은 여러분이 개에게 명령을 내리고 싶은 걸 표현하면 된다. 여기서 중요한 점은 개가 능동적으로 할 것 같은 행동이 아니라 개에게 명령을 내린다라는 것이다. 객체지향 프로그래밍에서는 객체끼리 서로 메세지를 주고 받는데 이 메세지가 바로 객체의 행동이 되는 것이다.&lt;BR&gt;조금 어려워졌다. 계속 진행해보자. 개를 다음과 같이 표현해보았다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1026401707.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;181&quot; width=&quot;96&quot; /&gt;&lt;/div&gt;개의 속성으로 품종, 나이, 이름, 크기, 털색깔을 지정했고, 개에게 내릴 수 있는 명령으로 앉는다, 선다, 뛴다, 멈춘다, 짖는다라고 정했다.&lt;BR&gt;Java 언어로 코딩을 하기위해서는 위의 표현을 그대로 사용해도 좋겠지만 (유니코드를 지원하기 때문에 한글 이름 사용이 가능하다) 영어로 다시 설계를 해보겠다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1013403654.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;178&quot; width=&quot;215&quot; /&gt;&lt;/div&gt;영어를 공부하는 시간이 아니므로(^^;) 비슷한 단어를 골라서 표현했다. 여기서 Java의 문법을 잠시 살펴보겠다.&lt;BR&gt;지금부터는 관례적인 표현임을 알려두겠다. 문법적으로 틀린 표현은 아니나 관례상 다음과 같이 사용한다.&lt;BR&gt;클래스 이름은 대문자로 시작한다. 속성(필드, 멤버변수) 이름은 소문자로 시작한다. 동작(메서드) 역시 소문자로 시작한다. 2개 이상 단어가 사용될 때는 띄어 쓰기를 할 수 없기 때문에 두번째 단어의 첫글자를 대문자로 시작하여 읽기 편하게 한다.&lt;BR&gt;그럼 위의 설계를 실제 Java 코드로 바꿔보겠다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/**&lt;BR&gt; * 클래스명 : Dog&lt;BR&gt; * @author 정승용 (&lt;A href=&quot;mailto:jeongsy10@empal.com&quot;&gt;jeongsy10@empal.com&lt;/A&gt;)&lt;BR&gt; *&lt;BR&gt; */&lt;BR&gt;class Dog {&lt;BR&gt; String kind; // 품종&lt;BR&gt; int age; // 나이&lt;BR&gt; String name; // 이름&lt;BR&gt; String size; // 크기&lt;BR&gt; String color; // 털 색깔&lt;BR&gt; &lt;BR&gt; void seat() { } // 앉다&lt;BR&gt; void standUp() { } // 일어서다&lt;BR&gt; void run() { } // 달린다&lt;BR&gt; void stop() { } // 멈춘다&lt;BR&gt; void bark() { } // 짖는다&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;이제 개의 설계도가 완성되었으니 개를 만들어 보겠다. 당연히 여기서 만들어지는 개는 컴퓨터의 메모리상에 존재하며 메모리상에 만들어진 개를 가리킬 변수가 필요하다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/* 메모리상의 개를 가리키는 참조변수 사용 */&lt;BR&gt;Dog d = new Dog();&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;&#039;d&#039;는 메모리상에 실제로 만들어진 개(객체; Object)를 가리키는 객체참조 (object reference)이다. &#039;d&#039;의 타입은 Dog 클래스와 같은 타입으로 선언한다. 메모리에 개를 만드는 명령은 &#039;new&#039; 연산자 이다. 결론적으로 위의 명령은 다음과 같다. 
&lt;BLOCKQUOTE&gt;Dog 클래스 구조로 객체를 만들고, 이 객체를 Dog 타입의 d라는 이름의 객체참조로 가리킨다.&lt;/BLOCKQUOTE&gt;이제부터 우리는 d라는 이름의 객체참조를 이용하여 Dog 객체를 사용할 수 있게 된다.&lt;BR&gt;그럼 개에게 이름을 지어줘야겠다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt; /* 개에게 이름짓기 */&lt;BR&gt;d.name = &quot;바둑이&quot;;&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;d가 가리키는 객체의 필드(멤버변수)인 &#039;name&#039;에 &#039;바둑이&#039;라는 문자열을 할당한다.&lt;/BLOCKQUOTE&gt;Java 문법책에는 멤버변수와 필드라는 이름이 사용된다. 여기서는 필드라고 부르겠다. 필드는 변수이다. 변수란 값을 저장하는 기억공간이며 그릇이다. 결국 name이라는 이름의 그릇에 &#039;바둑이&#039;라는 값을 할당(대입)한 것이다.&lt;BR&gt;이번에는 개 객체(?)에게 짖도록 명령을 내려보겠다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/* 객체가 짖도록 명령을 내림 */&lt;BR&gt;d.bark();&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;bark()는 메서드라고 하며 위의 문장은 다음과 같은 뜻을 갖는다.&lt;BR&gt;
&lt;BLOCKQUOTE&gt;d가 가리키는 객체에게 &#039;bark()&#039;라는 메세지(message)를 전달한다.&lt;/BLOCKQUOTE&gt;bark() 메세지를 전달하기 위해서는 bark() 메서드를 호출(call)하면 된다.&lt;BR&gt;(계속...)&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Fundamental</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/11</guid>
			<comments>http://jeongsam.net/entry/%EC%9E%90%EB%B0%94-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EA%B0%95%EC%A2%8C1#entry11comment</comments>
			<pubDate>Fri,  8 Aug 2008 16:36:43 +0900</pubDate>
		</item>
		<item>
			<title>{네트워크-기초} 네트워크 관리의 계층적 모델</title>
			<link>http://jeongsam.net/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EC%B4%88-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B4%80%EB%A6%AC%EC%9D%98-%EA%B3%84%EC%B8%B5%EC%A0%81-%EB%AA%A8%EB%8D%B8</link>
			<description>네트워크를 공부하기 위해서는 네트워크의 계층적 모델을 이해하고 각 계층의 기준에 맞는 프로토콜들을 공부해나가는 것이 순서이다. 네트워크에 기반을 둔 장비나 응용프로그램들은 모두 계층적 모델의 특정 계층에서 동작하며 경우에 따라서는 여러 계층에서 동작하는 경우도 있다. 그렇기 때문에 네트워크 관리자나 방화벽과 같은 응용 프로그램을 작성하는 프로그래머는 네트워크의 각 계층의 특징을 잘 정리해둘 필요가 있다.&lt;BR&gt;다음은 널리 알려진 네트워크의 계층적 구조의 모델들이다. 시스코의 경우는 네트워크분야에서 해당 업체의 입지로 인해 표준적인 계층 모델들과 함께 다뤄진다.&lt;BR&gt;&lt;BR&gt;네트워크의 설계, 구현, 관리의 단순화를 위해 시스코(Cisco)에서는 다음과 같은 계층적 모델을 사용하여 네트워크를 표현한다.&lt;BR&gt;&lt;BR&gt;
&lt;UL&gt;
&lt;LI&gt;액세스 계층 (Access Layer) 
&lt;LI&gt;분배 계층 (Distribution Layer) 
&lt;LI&gt;코어 계층 (Core Layer)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;인터네트워킹의 설계, 구축을 위해서 국제표준협회(ISO)는 이기종 컴퓨터간의 네트워크 원을 위해 OSI 7 계층 모델을 사용한다.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;응용 계층 (Application Layer) 
&lt;LI&gt;프리젠테이션 계층 (Presentation Layer) 
&lt;LI&gt;세션 계층 (Session Layer) 
&lt;LI&gt;전송 계층 (Transport Layer) 
&lt;LI&gt;네트워크 계층 (Network Layer) 
&lt;LI&gt;데이터링크 계층 (Data link Layer) 
&lt;LI&gt;물리 계층 (Physical Layer)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;인터넷의 설계, 구축을 위해서는 ARPANET에 기반한 미국방성의 인터넷 참조 모델에 기반한 계층형 모델을 사용한다.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;어플리케이션 계층 (Process Layer or Application Layer) 
&lt;LI&gt;트랜스포트 계층 (Host-To-Host Layer or Transport Layer) 
&lt;LI&gt;인터네트워킹 계층 (Internet or Internetworking Layer) 
&lt;LI&gt;네트워크 액세스 계층 (Network Access Layer)&lt;/LI&gt;&lt;/UL&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Network</category>
			<category>네트워크</category>
			<category>네트워크 계층적 모델</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/9</guid>
			<comments>http://jeongsam.net/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EC%B4%88-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B4%80%EB%A6%AC%EC%9D%98-%EA%B3%84%EC%B8%B5%EC%A0%81-%EB%AA%A8%EB%8D%B8#entry9comment</comments>
			<pubDate>Tue,  5 Aug 2008 14:40:09 +0900</pubDate>
		</item>
		<item>
			<title>열거형 데이터의 처리</title>
			<link>http://jeongsam.net/entry/%EC%97%B4%EA%B1%B0%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%B2%98%EB%A6%AC</link>
			<description>&lt;P&gt;Java SE 5.0부터 소개된 enum 을 사용하기 이전의 코드는 열거형 데이터를 구현하기 위해 다음과 같은 방법을 써왔다.&lt;BR&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;// 정수 타입의 열거형 패턴 이용&lt;BR&gt;package exam.enums;&lt;/P&gt;// 자바 1.5 이전 형식의 코드를 사용한 요일 표현&lt;BR&gt;public class Aweekday {&lt;BR&gt;    public static final int SUNDAY = 0;&lt;BR&gt;    public static final int MUNDAY = 1;&lt;BR&gt;    public static final int TUESDAY = 2;&lt;BR&gt;    public static final int WEDNESDAY = 3;&lt;BR&gt;    public static final int THURSDAY = 4;&lt;BR&gt;    public static final int FRIDAY = 5;&lt;BR&gt;    public static final int SATURDAY = 6;&lt;BR&gt;}&lt;BR&gt;// 4계절을 표현&lt;BR&gt;public class Season {&lt;BR&gt;    public static final int SPRING = 0;&lt;BR&gt;    public static final int SUMMER = 1;&lt;BR&gt;    public static final int FALL = 2;&lt;BR&gt;    public static final int WINTER = 3;&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;통상적으로 열거형은 정수타입의 순서값을 가지고 있는 것으로 취급된다. 하지만 위의 두 클래스를 이용하여 코딩을 하면 다음과 같은 문제를 만난다.&lt;BR&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;//&lt;BR&gt;...&lt;BR&gt;if (season == Aweekday.SUNDAY) {&lt;BR&gt;...&lt;BR&gt;} else if (season == Season.SPRING) {&lt;BR&gt;...&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;계절을 나타나내는 데이터와 요일을 나타내는 데이터는 결국 모두 int 타입의 정수값이기 때문에 다른 정수값과 구별이 되지 않는다. (Not typesafe) 그리고 또다른 계절이나 요일을 나타내는 열거형이 존재할 경우 서로 구별할 방법이 없다. (No namespace)&lt;BR&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;// 두 나라의 계절 표시&lt;BR&gt;...&lt;BR&gt;public static final int KR_SPRING = 0;&lt;BR&gt;public static final int KR_SUMMER = 1;&lt;BR&gt;public static final int KR_FALL = 2;&lt;BR&gt;public static final int KR_WINTER = 3;&lt;BR&gt;public static final int JP_SPRING = 4;&lt;BR&gt;public static final int JP_SUMMER = 5;&lt;BR&gt;...&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;그리고 위의 코드로 작성된 열거형 데이터들은 컴파일시에 값이 결정되기 때문에 두 값 사이에 새로운 값을 추가해야 하는 경우나 순서를 바꿔야 하는 경우 다시 컴파일을 해야한다. (Brittleness) 마지막으로 열거 데이터는 모두 정수값이므로 정보를 표현하거나 데이터 타입을 별도로 표시하는 것도 불가능하다. (Printed values are uninformative)&lt;BR&gt;이런 문제점을 해결하기 위해 다음과 같이 typesafe enum pattern을 이용한다.&lt;BR&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;// Typesafe enum pattern을 사용한 계절 표현&lt;BR&gt;public class Season {&lt;BR&gt;    private final String name;&lt;BR&gt;&lt;BR&gt;    public static final Season SPRING = new Season(&quot;SPRING&quot;);&lt;BR&gt;    public static final Season SUMMER = new Season(&quot;SUMMER&quot;);&lt;BR&gt;    public static final Season AUTUMN = new Season(&quot;AUTUMN&quot;);&lt;BR&gt;    public static final Season WINTER = new Season(&quot;WINTER&quot;);&lt;BR&gt;    &lt;BR&gt;    private Season(String name) {&lt;BR&gt;         this.name = name;&lt;BR&gt;    }&lt;BR&gt;&lt;BR&gt;    public String toString() {&lt;BR&gt;         return name;&lt;BR&gt;    }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;여기서 눈여겨 볼 점은 생성자가 private로 선언되었다는 점이다. 생성자가 private로 선언되었다는 것은 하위 클래스에서 영향을 줄 수 없다는 얘기이다. 상수들은 접근하기 쉽도록 static으로 선언되었다.&lt;BR&gt;이렇게 선언된 열거형 객체인 Season의 인스턴스는 다음과 같이 사용할 수 있다.&lt;BR&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;&lt;BR&gt;...&lt;BR&gt;    System.out.println(Season.SUMMER);&lt;BR&gt;...&lt;BR&gt;    if (season == Season.SPRING) {&lt;BR&gt;        ...&lt;BR&gt;    } else if (season == Season.SUMMER) {&lt;BR&gt;        ...&lt;BR&gt;    }&lt;BR&gt;...&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;이제 이 소스를 확장하여 순서의 개념을 추가해보록 하겠다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;// 순서 개념이 들어간 계절 표현&lt;BR&gt;public class Season implements Comparable {&lt;BR&gt;    private final String name;&lt;BR&gt;    &lt;BR&gt;    public static final Season SPRING = new Season(&quot;SPRING&quot;);&lt;BR&gt;    public static final Season SUMMER = new Season(&quot;SUMMER&quot;);&lt;BR&gt;    public static final Season AUTUMN = new Season(&quot;AUTUMN&quot;);&lt;BR&gt;    public static final Season WINTER = new Season(&quot;WINTER&quot;);&lt;BR&gt;    &lt;BR&gt;    // 생성될 다음 Season의 순서&lt;BR&gt;    private static int nextOrdinal = 0;&lt;BR&gt; &lt;BR&gt;    // 현재 Season의 순서 할당&lt;BR&gt;    private final int ordinal = nextOrdinal++;&lt;BR&gt;    &lt;BR&gt;    private Season(String name) {&lt;BR&gt;         this.name = name;&lt;BR&gt;    }&lt;BR&gt;&lt;BR&gt;    public String toString() {&lt;BR&gt;         return name;&lt;BR&gt;    }&lt;BR&gt;&lt;BR&gt;    public int compareTo(Object o) {&lt;BR&gt;        return ordinal - ((Season)o).ordinal;&lt;BR&gt;    }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;
&lt;DIV class=ttbReview&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=0321356683&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://image.aladdin.co.kr/coveretc/book/covermini/0321356683_1.jpg&quot; border=0&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot; align=left&gt;&lt;A class=aladdin_title href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=0321356683&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;U&gt;Effective Java Programming Language Guide (Paperback)&lt;/U&gt;&lt;/A&gt; - &lt;IMG alt=10점 src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=0&gt;&lt;BR&gt;Block, Joshua/Addison-Wesley&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Java</category>
			<category>Enum</category>
			<category>Java</category>
			<category>Typesafe enum pattern</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/8</guid>
			<comments>http://jeongsam.net/entry/%EC%97%B4%EA%B1%B0%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%B2%98%EB%A6%AC#entry8comment</comments>
			<pubDate>Wed, 30 Jul 2008 16:09:42 +0900</pubDate>
		</item>
		<item>
			<title>팩토리 패턴의 소개 (2)</title>
			<link>http://jeongsam.net/entry/%ED%8C%A9%ED%86%A0%EB%A6%AC-%EB%A9%94%EC%84%9C%EB%93%9C-%ED%8C%A8%ED%84%B4%EC%9D%98-%EC%86%8C%EA%B0%9C-2</link>
			<description>&lt;DIV class=ttbReview&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979143400&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://image.aladdin.co.kr/coveretc/book/covermini/8979143400_1.jpg&quot; border=0&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot; align=left&gt;&lt;A class=aladdin_title href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979143400&amp;amp;ttbkey=ttbjeongsy102140002&amp;amp;COPYPaper=1&quot;&gt;&lt;U&gt;Head First Design Patterns&lt;/U&gt;&lt;/A&gt; - &lt;IMG alt=10점 src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=0&gt;&lt;BR&gt;에릭 프리먼 외 지음, 서환수 옮김/한빛미디어&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;지난 번 설계한 &quot;그냥피자&quot; 클래스는 단점이 있었습니다. 주문할 피자의 종류가 많아질 수록 &quot;그냥피자&quot; 클래스가 복잡해지고 매번 코딩을 추가해야한다는 점입니다. 피자 종류를 추가하거나 제거할 때마다 코드를 고쳐야하므로 재활용성은 당연히 떨어집니다.&lt;BR&gt;이러한 단점을 개선하기위해 변경이 일어나는 부분을 분리하고 피자의 종류 대로 피자 인스턴스가 만들어지도록 하겠습니다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1245017946.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;219&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;피자의 종류를 지정하는 부분을 &#039;간단한피자팩토리&#039; 클래스로 분리하였습니다. 이번 설계에서는 피자의 종류가 늘어나더라도 종류에 맞는 피자 클래스를 추가하고 &#039;간단한피자팩토리&#039; 클래스만을 변경하는 것으로 작업이 끝납니다.&lt;BR&gt;이런 설계를 간단한 팩토리(simple factory)라고 하며 객체지향 설계 방법에 충실히 따른 모습이라고 할 수 있습니다. 하지만 아직은 패턴이라고 얘기할 수있는 정도는 아닙니다.&lt;BR&gt;그럼 시퀀스 다이어그램으로 각 인스턴스가 어떤 순서로 메세지를 주고 받으면서 실행하는지 살펴보겠습니다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://jeongsam.net/attach/1/1226303613.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;333&quot; width=&quot;401&quot; /&gt;&lt;/div&gt;고객이 &#039;피자가게&#039;에 &#039;불고기피자&#039;를 주문합니다. 피자가게에서는 주방(&#039;간단한피자팩토리&#039;)에 &#039;불고기피자&#039;를 만들도록 메세지를 전달하고 주방에서는 &#039;불고기피자&#039; 인스턴스를 만들어서 &#039;피자가게&#039; 인스턴스에게 돌려줍니다. 피자가게 인스턴스는 불고기피자 인스턴스를 사용하여 피자를 내놓습니다. 이때 수퍼 클래스인 &#039;피자&#039;를 이용하여 어떤 종류의 피자도 다룰 수 있게 됩니다.(다형성)&lt;BR&gt;결국 어떤 종류의 피자를 선택할지는 간단한 피자 팩토리에서 결정을 하게 되는거죠.&lt;BR&gt;실제 코드로 구현했습니다.&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/* 피자와 그로부터 파생되어 구성된 피자들 */&lt;BR&gt;// 각각의 피자들은 굽는 방법과 같은 것들이 다를 수 있기 때문에&lt;BR&gt;// 피자는 추상 클래스로 선언합니다.&lt;BR&gt;package exam.pattern.factoryMethod;&lt;/P&gt;
&lt;P&gt;import java.util.ArrayList;&lt;BR&gt;import java.util.Iterator;&lt;/P&gt;
&lt;P&gt;public abstract class 피자 {&lt;BR&gt; String 이름;&lt;BR&gt; String 반죽방법;&lt;BR&gt; String 소스;&lt;BR&gt; @SuppressWarnings(&quot;unchecked&quot;)&lt;BR&gt; ArrayList 토핑 = new ArrayList();&lt;BR&gt; &lt;BR&gt; @SuppressWarnings(&quot;unchecked&quot;)&lt;BR&gt; public void 재료준비() {&lt;BR&gt;  System.out.print(&quot;토핑재료 : &quot;);&lt;BR&gt;  Iterator 토핑재료 = 토핑.iterator();&lt;BR&gt;  &lt;BR&gt;  while (토핑재료.hasNext()) {&lt;BR&gt;   System.out.print(토핑재료.next() + ((토핑재료.hasNext()) ? &quot;, &quot; : &quot;&quot;));&lt;BR&gt;  }&lt;BR&gt;  System.out.println();&lt;BR&gt; }&lt;BR&gt; &lt;BR&gt; public void 빵굽기() {&lt;BR&gt;  System.out.println(&quot;25분간 350도에서 굽는다...&quot;);&lt;BR&gt; }&lt;BR&gt; &lt;BR&gt; public void 자르기() {&lt;BR&gt;  System.out.println(&quot;8조각으로 자른다...&quot;);&lt;BR&gt; }&lt;BR&gt; &lt;BR&gt; public void 포장하기() {&lt;BR&gt;  System.out.println(&quot;배달용 박스로 포장한다...&quot;);&lt;BR&gt;  System.out.println(&quot;&#039;&quot; + 이름 + &quot;&#039;의 포장이 끝났습니다.&quot;);&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/* 피자가 실제로 구현된 구상 클래스 */&lt;BR&gt;package exam.pattern.factoryMethod;&lt;/P&gt;
&lt;P&gt;public class 불고기피자 extends 피자 {&lt;BR&gt; @SuppressWarnings(&quot;unchecked&quot;)&lt;BR&gt; public 불고기피자() {&lt;BR&gt;  이름 = &quot;불고기피자&quot;;&lt;BR&gt;  반죽방법 = &quot;얇은 반죽&quot;;&lt;BR&gt;  소스 = &quot;토마토 소스&quot;;&lt;BR&gt;  토핑.add(&quot;불고기&quot;);&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/* 피자가게와 간단한피자팩토리 */&lt;BR&gt;// 피자의 선택은 간단한피자팩토리에서 실행시간에 결정됩니다.&lt;BR&gt;package exam.pattern.factoryMethod;&lt;/P&gt;
&lt;P&gt;public class 피자가게 {&lt;BR&gt; private 간단한피자팩토리 factory;&lt;BR&gt; &lt;BR&gt; public 피자가게(간단한피자팩토리 factory) {&lt;BR&gt;  this.factory = factory;&lt;BR&gt; }&lt;BR&gt; &lt;BR&gt; public void 주문하기(String 종류) {&lt;BR&gt;  피자 pizza;&lt;BR&gt;  &lt;BR&gt;  pizza = factory.피자만들기(종류);&lt;BR&gt;  pizza.재료준비();&lt;BR&gt;  pizza.빵굽기();&lt;BR&gt;  pizza.자르기();&lt;BR&gt;  pizza.포장하기();&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/* Simple Factory */&lt;BR&gt;package exam.pattern.factoryMethod;&lt;/P&gt;
&lt;P&gt;public class 간단한피자팩토리 {&lt;BR&gt; public 피자 피자만들기(String 종류) {&lt;BR&gt;  피자 pizza;&lt;BR&gt;  &lt;BR&gt;  if (종류.equals(&quot;치즈피자&quot;))&lt;BR&gt;   pizza = new 치즈피자();&lt;BR&gt;  else if (종류.equals(&quot;불고기피자&quot;))&lt;BR&gt;   pizza = new 불고기피자();&lt;BR&gt;  else&lt;BR&gt;   pizza = new 보통피자();&lt;BR&gt;  &lt;BR&gt;  return pizza;&lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;/* 테스트 코드 */&lt;BR&gt;package exam.pattern.factoryMethod;&lt;/P&gt;
&lt;P&gt;public class 간단한피자팩토리테스트 {&lt;/P&gt;
&lt;P&gt; /**&lt;BR&gt;  * @param args&lt;BR&gt;  */&lt;BR&gt; public static void main(String[] args) {&lt;BR&gt;  new 피자가게(new 간단한피자팩토리()).주문하기(&quot;보통피자&quot;);;  &lt;BR&gt; }&lt;BR&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;BR&gt;이상으로 simple factory를 살펴보았습니다. 이 정도로도 상당히 객체지향적이면서 재활용성이 높은 유연한 코드가 만들어졌습니다.&lt;BR&gt;다음은 본격적으로 &#039;팩토리 메서드 패턴&#039;을 소개하도록 하겠습니다.&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>UML</category>
			<category>Java</category>
			<category>Simple factroy</category>
			<category>UML</category>
			<author>(정샘)</author>
			<guid>http://jeongsam.net/7</guid>
			<comments>http://jeongsam.net/entry/%ED%8C%A9%ED%86%A0%EB%A6%AC-%EB%A9%94%EC%84%9C%EB%93%9C-%ED%8C%A8%ED%84%B4%EC%9D%98-%EC%86%8C%EA%B0%9C-2#entry7comment</comments>
			<pubDate>Wed, 23 Jul 2008 16:53:14 +0900</pubDate>
		</item>
	</channel>
</rss>
