ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형"

Transcription

1 바에 제네릭스(generics)를 도입하기 위한 연구는 이미 8년 전인 1996년부터라고 한다. 실제로 자바에 제네릭스를 도입하 는 몇 가지 방안들이 논문으로 나오기 시작한 것이 1998년 초임을 감 안하면 무려 8년이 지난 후에야 자바 5.0에 전격 채택되었다는 것은 이것이 얼마나 어려운 일이었나 하는 것을 보여준다. 자바의 스펙을 결정하는 표준화 절차인 JSR을 보면 제네릭스를 논 의하는 JSR 14가 형성된 것은 1999년이었다. 하지만 아쉽게도 자바 1.4가 나온 시점이었던 2002년까지 제네릭스를 자바에 적용할 수 없 었다. 제네릭스를 어떻게 구현할 것인가에서부터 제네릭스를 도입한 영향을 어떻게 최소화하고 기존 자바 버전과의 역방향 호환성을 유지 할 수 있을 것인가 하는 이슈에 이르기까지 제네릭스는 그야말로 뜨 거운 감자였던 것이다. 조금 뒤늦은 감이 있긴 하지만 자바 5.0이 출시된 지금도 여전히 다른 방식의 제네릭스 구현을 선호하는 그룹들이 있으며, Thinking In Java 로 유명한 브루스 에켈은 서운한 감정을 자신의 블로그에서 여과 없이 드러내고 있기도 하다. 물론 추후 자바 버전에서 다른 방식의 제네릭스 구현이 채택되지 않는다는 보장은 없을 것이다. 특히 C#이라는 만만찮은 경쟁 상대를 두게 된 현실에서는 더욱 더 그러하다. C#에서도 최근 제네릭스가 채 택되었으며 그 구현 방식은 자바와 반대이며 C++와 유사하다는 점 에서 자바와 C#의 제네릭스 성공 여부가 주목받을 것 같다. 제네릭스 사용하기 자바 제네릭스 클래스들은 java.util 패키지의 컬렉션 라이브러리 클 래스들과 밀접한 관련을 가지고 있다. 어떻게 보면 컬렉션 라이브러 리를 사용할 때 자료형 안정성을 좀 더 보장할 방법이 없을까 하는 용 도로 만든 것이 자바 제네릭스가 아닐까 생각될 정도이다. 자바 5.0의 컬렉션 라이브러리 클래스들은 모두 제네릭스를 사용 하도록 다시 정의되었다. 따라서 컬렉션 라이브러리를 사용할 때 제 네릭스는 분명한 효용성을 보인다. <리스트 1>은 간단하지만 자바 5.0을 처음 접하는 자바 프로그래머 라면 몇 가지 어색한 점을 발견했을 것이다. 제네릭스 외에 사용된 자 바 언어의 2가지 새로운 기능은 오토박싱/언박싱(autobox/unbox), foreach 스타일의 for 반복문이다. 202

2 ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형이 대입될 경우 자동으 로 해당하는 기본 자료형의 랩퍼 객체(wrapper object)로 변환해주 는 것을 말하며 오토언박싱은 그 반대의 일을 뜻한다. foreach 스타일의 for 반복문은 컬렉션 클래스에서 Iterator를 사 용하는 번잡함을 자바 컴파일러가 대신 수행해주는 개념으로 for 반 복문 조건식 괄호가 변수와 : 부호 그리고 컬렉션 객체로 선언될 경 우 지정된 컬렉션 객체의 Iterator를 순차하면서 그 내용이 되는 객 체를 변수에 매번 대입해주는 개념이다. 영어로는 foreach ~ in 이 라고 읽는다. 자, 이제 꺽쇠 괄호를 포함하는 리스트 선언들을 보자. 이 부분에서 바로 제네릭스가 사용되었다. UseCollection 소스코드에서 ArrayList 클래스와 List 인터페이스는 더 이상 모든 객체를 수용하 는 리스트가 아니다. slist 변수는 String 객체만 받아들이며, ilist 객 체는 Integer 객체만 받아들인다. 즉, 다음과 같이 사용한다면 자바 컴파일러가 컴파일 에러를 발생시킨다. 제네릭스를 사용하는 가장 적합하고 중요한 목적은 바로 컬렉션 클 래스들에 사용될 객체들의 자료형을 엄밀하게 제한하는 것이다. 제네릭스 만들기 지금까지는 아주 순조롭게 자바의 새로운 기능 제네릭스를 느껴볼 수 있었다. 자, 이제 제네릭스 클래스를 한 번 만들어보자. 제네릭스 클 래스를 만들기 전에 경고를 하나 해야겠다. 혹시 C++ 템플릿을 정 의해본 적이 있다면, 그 경험으로 제네릭스 클래스도 쉽게 정의할 수 있다고 생각하면 큰 오산이다. 헬로, 제네릭스 클래스는 조금 불편 public class MyVector<E> { public static final int ARRAY_SIZE = 10; private E[] elements; private int elementcount = 0; public MyVector() { elements = (E[]) new Object[ARRAY_SIZE]; // unchecked typecast warning slist.add(3); ilist.add( world! ); public void add(e value) { if (elementcount >= ARRAY_SIZE) { throw new IndexOutOfBoundsException( element count reached max size ); import java.util.*; elements[elementcount++] = value; public class UseCollection { List<String> slist = new ArrayList<String>(); // String의 리스트 slist.add( hello ); slist.add( generics ); for (Object o : slist) { System.out.println( string value = + o); public E get(int index) { if (index >= elementcount) { throw new ArrayIndexOutOfBoundsException(index); return elements[index]; MyVector<Integer> vector = new MyVector<Integer>(); List<Integer> ilist = new ArrayList<Integer>(); // Integer의 리스트 ilist.add(1); ilist.add(2); for (int i = 0; i < 10; i++) { vector.add(i); for (Object o : ilist) { System.out.println( integer value = + o); for (int i = 0; i < 10; i++) { System.out.println( [ + i + ]th value : + vector.get(i)); 203

3 한 경험이 될 것이다. 먼저 MyVector 클래스 선언을 살펴보자(<리스 트 2>). 최대한 간단하게 구현하기 위해 크기가 항상 10으로 고정된 벡터 클래스를 상정하였다. 일단 클래스 선언에서 제네릭 자료형인 E를 선언하고 있다. 그리고 멤버 필드로 선언된 elements의 자료형이 역 시 제네릭 자료형인 E, add 메쏘드의 인자도, get 메쏘드의 반환 유 형도 모두 E로 선언되어 깔끔한 듯이 보인다. C++ 개발자였다면 여기까지 당연하게 받아들이면서 자바 언어 는 역시 조금이라도 더 간단한 구문으로 제네릭스를 지원하려니 하고 술술 넘어갔을 수도 있다. 그런데 가만히 보면 생성자 내용이 조금 이 상하다. elements = (E[]) new Object[ARRAY_SIZE]; Object 배열 자료형에서 제네릭 자료형인 E의 배열 자료형으로 명 시적인 형 변환이 일어났다. 자바 제네릭스의 비밀을 모른다면 당연 히 다음과 같이 시도했을 것이다. elements = new E[ARRAY_SIZE]; 자바 컴파일러는 무심하게도 이 코드를 generic array creation 이라는 에러로 처리한다. 자바의 제네릭 자료형은 객체를 생성할 수 없다!!! 즉, 제네릭 자료형 이름이 T라면 new T()를 할 수 없다. 즉, 선언 은 할 수 있지만 객체 인스턴스를 만들 수 없는 유령 자료형이라는 것 이다. 자바 소스코드의 제네릭 자료형이 컴파일시까지만 존재하고 실 제 컴파일된 바이트코드에는 존재하지 않기 때문에 실행 시간에 해당 하는 제네릭 자료형의 인스턴스를 만드는 것은 원천적으로 불가능하 다. 마찬가지 이유로 제네릭 자료형의 배열도 생성할 수가 없다. 생성 자에서 컴파일러 에러가 난 이유는 제네릭 자료형의 배열을 생성하려 고 시도했기 때문이다. 불쾌함은 약간 더 지속되는데 MyVector.java 소스코드를 컴파일 해 보면 생성자 부근에서 컴파일러 경고가 나타난다. 컴파일러 경고 내용을 보려면 -Xlint:unchecked 옵션을 사용해야 한다. javac -Xlint:unchecked MyVector.java MyVector.java:29: warning: [unchecked] unchecked cast found : java.lang.object[] required: E[] elements = (E[]) new Object[ARRAY_SIZE]; 1 warning 이 경고 메시지는 물론 실제로는 Object 배열인 elements 멤버 필 드를 제네릭 자료형인 E 자료형의 배열로 강제 형 변환을 했을 때, 형이 맞지 않아서 발생하는 일을 컴파일러는 책임질 수 없다는 뜻이 다. 하지만 자바가 실행 시간에는 제네릭 자료형 정보를 가지고 있지 않고, 또 MyVector 클래스는 제네릭 자료형이 String이든 Integer 이든 실행 시간에는 모두 동일한 클래스로 간주되므로, 실제로 멤버 필드인 elements의 자료형은 모든 객체의 부모 클래스인 Object 배 열로 처리된다. 여기에 대해서는 다시 설명할 것이다. 따라서 첫 번째 제네릭 클래스인 MyVector 클래스는 제네릭스에 관한 한 최선을 다 해 정확하게 선언된 셈이다. 제네릭스 들여다보기 자료형 지우기 자바 제네릭스는 앞에서 살펴본 대로 만들어진 클래스를 사용하기에 는 코드에서 강제 형 변환을 많이 사라지게 하고, 버그의 가능성을 줄 여주는 멋진 친구이지만, 직접 만들어 사용하기에는 상당히 불편한 녀석이다. 이것은 제네릭스의 구현 방법과 무관하지 않은데, 자바 제 네릭스는 자료형 지우기(type erasure)라는 접근 방법으로 구현되었 다. 자료형 지우기는 간단하게 표현하자면 컴파일러가 컴파일시에 제 네릭 자료형에 대한 정보를 모두 검사하고 이를 통과할 경우 제네릭 자료형 정보가 전혀 없는 바이트코드를 생성하는 방식이다. 따라서 다음은 true 를 출력한다. List<String> list1 = new ArrayList<String>(); List<Integer> list2 = new ArrayList<Integer>(); List list3 = new ArrayList(); System.out.println(list1.getClass() == list2.getclass() && list2.getclass() == list3.getclass()); 클래스는 모두 공유하지만 실제 클래스의 제네릭 자료형 변수 값은 각 객체 인스턴스별로 달라질 수 있으므로 같은 클래스 내에서 공유 되는 static 문맥에서는 클래스에 선언된 제네릭 자료형을 참조할 수 가 없다. 즉, static 변수, static 초기화 블럭, static 메쏘드 등에서 클래스에 선언된 제네릭 자료형을 사용할 수가 없다. 마찬가지 이유 로 다음 표현식은 컴파일 에러를 발생시킨다. List<String> list = new ArrayList<String>(); 204

4 System.out.println(list instanceof ArrayList<String>); // 컴파일 에러 즉, 실행시에는 제네릭 자료형에 대한 정보가 없으므로, instan ceof 연산자를 제네릭 자료형에 대해 실행할 수 없는 것이다. 자료형 지우기와 반대의 구현 방법으로는 흔히 구상화(reification)라고 부르 는 방법으로 바이트코드에 제네릭 자료형에 관련된 정보를 실제로 생 성하는 방법이 있다. C#이 이러한 방식으로 1.1 버전에서 제네릭스 를 구현했다고 하며, 자바에서는 기존 애플리케이션이나 라이브러리 와의 호환성을 최우선으로 고려하여 자료형 지우기 방식을 채택했다 고한다. 제네릭스 와일드카드 자바 제네릭스가 C++의 템플릿과 유사하다고 생각했던 사람들에 게 또 하나의 일탈을 느끼게 해주는 것이 바로 이 와일드카드 제네릭 자료형일 것이다. 와일드카드 자료형은 제네릭 자료형을 선언할 때 제네릭 자료형을 임의의 자료형 혹은 클래스 상속 계층 구조상의 특 정 범위를 지정할 수 있게 해준다. 자바 제네릭스에서 와일드카드는? 문자로 표시된다. 다음과 같 이 와일드카드인? 문자로 표시된 제네릭 자료형은 임의의 모든 자 료형을 가리킨다. 쏘드를 호출하지 않는다는 점이다. 실제 wclist 변수 안에 String 리 스트가 대입되어 있다고 하더라도, 컴파일러는 add() 메쏘드의 시그 너처가 원래 add(e)였으므로, E가?로 적용되어 있으므로 add(?)로 간주하고 입력된 인자의 자료형이? 이기를 기대한다.? 은 임의의 객체이므로 자바 컴파일러는 String을 받아들일 수 있다는 확신을 하 지 못한다. 만약 입력될 수 있는 객체 자료형의 범위가 String이거나 String의 부모 클래스로 제한된다면, 자바 컴파일러는 이 경우 String을 받아들일 수 있다고 판단한다. // add 메쏘드가 입력 변수로 제네릭 변수를 받으므로 하한 경계의 와일드카드를 사용함 List<String> slist = new ArrayList<String>(); List<? super String> wclist = slist; wclist.add( wild ); wclist.add( card ); for (Object o : wclist) { // iterator()의 결과값은 Object로만 처리 System.out.println( value = + o); 일반적으로 자바 컴파일러는 입력 변수로 주어진 제네릭 자료형에 대해서는 와일드카드의 하한 경계를 지정함으로써 자료형의 제약을 풀 수 있고, 반환 유형으로 주어진 제네릭 자료형에 대해서는 와일드 List<?> wclist = new ArrayList<String>(); List<?> wclist2 = new ArrayList<Integer>(); import java.util.*; <리스트 3>은 와일드카드를 사용한 List의 예이다. 와일드카드로 표현된 제네릭 자료형을 가진 wclist 변수는 String 리스트와 Integer 리스트를 모두 받을 수 있다. 자바 제네릭스의 와일드카드는 임의의 객체를 표현할 뿐만 아니라 클래스 상속 계층 구조상의 경계를 지정할 수 있다. 이를 위해 super 와 extends라는 두 예약어를 사용한다. public class WildcardList { List<String> slist = new ArrayList<String>(); slist.add( hello ); slist.add( world ); List<Integer> ilist = new ArrayList<Integer>(); ilist.add(1); ilist.add(2); List<? extends Number> List<? super Integer> extends를 사용하는 와일드카드는 흔히 와일드카드의 상한을 지 정한다고 하는데, 그 의미는 extends 다음에 나오는 클래스를 포함하 여 그 자식 클래스들이 제네릭 자료형으로 올 수 있음을 나타낸다. super를 사용하는 와일드카드는 그 반대로 와일드카드의 하한을 지정하는데, 그 의미는 super 다음에 나오는 클래스를 포함하여 그 부모 클래스들이 제네릭 자료형으로 올 수 있음을 나타낸다. 앞의 소스코드에서 눈여겨 볼 점은 wclist 변수에서 직접 add() 메 List<?> wclist = slist; for (Object o : wclist) { System.out.println( value = + o); wclist = ilist; for (Object o : wclist) { System.out.println( value = + o); 205

5 카드의 상한 경계를 지정함으로써 자료형의 제약을 풀 수 있다. // iterator 메쏘드가 반환 변수로 제네릭 변수를 주므로 상한 경계의 와일드카드를 사용함 List<? extends String> wclist2 = slist; for (String s : wclist2) { // 상한 경계 덕분에 String 사용 가능 System.out.println( string = + s); extends와 super를 사용하여 와일드카드의 경계를 정하는 것에서 한 가지 유추해볼 만한 사실은 다음이다. 앞에서 List<String> 변수에 ArrayList<String> 변수를 대입하는 것은 자연스러웠다. 즉, ArrayList<String>은 List<String>의 자식 자료형이며 List<String>으로 취급할 수 있다. ArrayList 클래스가 List 인터페이스를 구현하고 있으므로(자식 자료형이므로) 이것은 합리적이다. 하지만 ArrayList<String> 변수에 ArrayList<Object> 변수를 대입하는 것은 에러가 발생한다. 즉 ArrayList<String>은 ArrayList<Object>의 자식 자료형이 아니며 ArrayList<Object>로 취급할 수 없다는 것이다. 그렇기 때문에 ArrayList<String>과 ArrayList<Object>를 모두 취급 가능한 제네릭스 형태는 ArrayList<Object>가 아니라 ArrayList<? super String>이 되는 것 이다. 제네릭 메쏘드 자바 제네릭스는 클래스나 인터페이스와 같은 자료형을 선언할 때 클 래스나 인터페이스의 변경 가능한 자료형 변수로 지정하는 경우 외에 도 메쏘드에서도 사용할 수 있다. 클래스와 인터페이스에서 제네릭 자료형 변수를 사용할 때와 메쏘 드에서 사용할 때에는 조금 의미가 다르다. 앞에서 MyVector 클래스 를 선언할 때 MyVector 클래스에서 사용하는 제네릭 자료형 변수인 E가 멤버 필드나 멤버 메쏘드에 사용될 때, 이 E 자료형은 모두 동일 한 자료형을 뜻하였다. 즉, 제네릭 자료형에 대입된 실제 클래스가 String이면 멤버 필드의 E 자료형도 String으로 간주되고, 멤버 메쏘 드의 인자나 반환 유형으로 사용된 E 역시 String으로 간주되었다. 이 점을 유념하면서 제네릭 메쏘드를 알아보자. 제네릭 메쏘드는 메쏘드를 선언할 때 메쏘드 시그너처 앞 부분에 꺾쇠괄호 안에 제네릭 자료형 변수를 선언한다. 만약 제네릭 메쏘드 에 사용된 제네릭 자료형 변수가 와일드카드라면 별도로 선언할 필요 가 없다. 다음 예에서는 T가 제네릭 자료형 변수로 선언되었다. public static <T> T genericmethod(t a, Collection<T> b) { //... <리스트 4>는 두 개의 제네릭 메쏘드 getone()과 getone Element()를 예시하고 있다. getone() 메쏘드의 경우, 제네릭 자료형 타입인 T가 두 개의 인자 와 반환 유형 세 군데서 사용되고 있다. 이 경우 각 인자 T에 적용되 는 자료형이 반드시 같은 필요는 없는데, 자바 컴파일러는 실제 이 메 쏘드를 호출하는 곳에서 인자들의 자료형을 확인해서 제네릭 자료형 타입 변수에 들어갈 실제 자료형을 유추하는 기능을 제공한다. 예제의 경우, getone() 메쏘드에 사용된 두 개의 인자가 하나는 List<String> 자료형이고, 다른 하나는 Set<Integer> 자료형이다. 자 바 컴파일러는 이 두 자료형의 공통 부모 클래스인 Collection을 유추 해내고, 또 String과 Integer를 모두 처리할 수 있는 와일드카드인? 를 해당 Collection의 제네릭 자료형으로 유추해낸다. 즉, 이 경우 에는 T가 Collection<?>으로 결정된다. 결과 값 역시 T 자료형이므로 getone() 메쏘드를 호출한 결과값을 Collection<?> 자료형의 객체에 import java.util.*; public class PolymorphicMethod { private static boolean toggle = false; List<String> list = new ArrayList<String>(); list.add( hello ); list.add( world ); Set<Integer> set = new HashSet<Integer>(); set.add(1); set.add(2); Collection<?> col = getone(list, set); System.out.println(col); Object el = getoneelement(list, set); System.out.println(el); static <T> T getone(t a, T b) { toggle =!toggle; return toggle? a : b; static <T, U> Object getoneelement(list<t> a, Set<U> b) { toggle =!toggle; return toggle? a.get(0) : b.iterator().next(); 206

6 저장하면 아무런 경고 없이 컴파일된다. 두 번째 제네릭 메쏘드인 getoneelement() 메쏘드는 여러 개의 제네릭 자료형 타입을 선언하는 예를 보여주고 있다. 제네릭스와 배열 배열은 자료형 중에서 조금 특이하면서도 까다로운 존재이다. 코드에 서 보는 대로 현재 자료형이 비록 Object 배열로 선언되어 있다 하더 라도 배열을 생성할 때 String의 배열로 생성하였다면, 배열의 원소 로 String이 아닌 Object 객체를 넣을 수가 없다. Object[] objarray = new String[1]; objarray[0] = new Object(); // 실행 시간 에러! 이러한 배열의 특성 때문에 자바 제네릭스에서 배열의 컴포넌트 자 료형만을 제네릭 자료형 변수로 사용할 수가 없다. 즉, 다음은 허용되 지 않는다. 다만 컴포넌트 자료형에 상하한 제약 없는? 와일드카 드를 쓰는 것은 허용된다. List<String>[] list = new List<String>[10]; // 제너릭 자료형 객체의 배열. 허용 안됨. List<?>[] list = new List<?>[10]; // 제약 없는 와일드카드 제너릭 자료형 객체의 배열. 허용됨. public <T> T[] toarray(t[] a) { // 제너릭 자료형 배열. 허용됨 형태의 자바 메쏘드이다. 브리지 메쏘드는 오버라이드한 메쏘드가 부 모 클래스와 동일한 메쏘드 시그너처를 가지고 있지만 반환 자료형이 다를 경우에 발생한다. <리스트 5>에서 CoB 클래스는 CoA 클래스를 상속하면서 crea te() 메쏘드를 오버라이드한다. 이때, 반환 유형이 부모 클래스와 달 리 CoA가 아닌 CoB를 반환하도록 선언하였다. 이 코드를 컴파일한 후 역컴파일해 보면 CoB 클래스에는 부모로 부터 물려받은 CoA를 리턴하는 create() 메쏘드가 여전히 존재함을 볼 수 있다. 이 상속받은 create() 메쏘드는 자식 클래스에서 재정의 한 CoB를 리턴하는 create() 메쏘드를 호출해주는 다리 역할만을 수 행한다. CoB 클래스 파일 포맷을 분석해 보면 소스코드에는 없었던 이 브 리지 메쏘드에 대한 플래그 값이 0x40, 0x1000 값이 설정되어 있음 을 볼 수 있다. 0x40은 브리지 메쏘드를 표현하는 플래그이며 0x1 000은 소스코드에는 없이 인위적으로 생성한 메쏘드(synthetic method)임을 표현하는 플래그이다. 브리지 메쏘드 역시 자바 5.0에서만 지원되는 개념이며, 자바 컴파 일러에 의해 자동으로 생성된다. 또, 오버라이드한 메쏘드에서 반환 자료형을 부모 클래스의 반환 자료형보다 좀 더 엄밀한 자료형, 즉 자 식 자료형으로 정의하는 것도 자바 5.0 이후 버전에서만 지원되는 기 능이다. 언뜻 생각하기에 자료형 안정성 검사를 컴파일시에 강화하는 자바 제네릭스의 취지에 비추어 이러한 배열의 자료형 검사 문제에 대해서 도 개선이 있을 듯도 하지만, 적어도 자바 5.0의 제네릭스는 별다른 해법을 제시하지 않는다. 브리지 메쏘드 브리지 메쏘드는 제네릭스를 구현하는 방법에 의해 사용되는 독특한 javap -c CoB <엔터> Compiled from CovariantReturn.java class CoB extends CoA{ CoB(); Code: 0: aload_0 1: invokespecial #1; //Method CoA. <init> :()V 4: return class CoA { public CoA create() { return new CoA(); class CoB extends CoA { public CoB create() { return new CoB(); public CoB create(); Code: 0: new #2; //class CoB 3: dup 4: invokespecial #3; //Method <init> :()V 7: areturn public CoA create(); Code: 0: aload_0 1: invokevirtual #4; //Method create:()lcob; 4: areturn 207

7 이 기능은 Iterator 인터페이스의 next() 메쏘드처럼 제네릭 자료 형으로 반환 자료형이 선언되어 있는 경우, 구현 Iterator 클래스들 의 상속 관계와 무관하게 정확한 제네릭 자료형을 반환하도록 선언해 야 하는 필요성에 의해 채택되었다. 런타임 제네릭스 실행 시간에 아무런 제네릭 자료형 정보를 남기지 않는 자료형 지우 기 방식의 특성 때문에 자바 제네릭스의 접근 방식에 대해 비난과 조 롱이 적지 않았다. 예를 들어, 제네릭 자료형을 사용하여 객체를 생성하거나 제네릭 자료형을 컴포넌트 자료형으로 가지는 배열을 생성하거나 하는 일은 C++ 템플릿에 익숙해진 프로그래머에게는 너무나 당연한 일이지 만, 자바 제네릭스로는 어려운 일이 된다. 이에 대한 자바 5.0이 내놓 은 해법은 java.lang.class 클래스를 활용하는 것이다. 제네릭스가 적용된 자바 5.0의 클래스들은 대부분 컬렉션 라이브 러리 클래스들이지만, Class 클래스를 포함하여 ThreadLocal, WeakReference 등이 추가로 있다. Class 클래스는 자바 5.0의 제네 릭스에서 좀 독특한 역할을 수행하는데, 이 정보는 실행 시간까지 살 아 있게 된다는 점이 다른 제네릭스와 크게 다른 점이다. Class<T>와 같이 제네릭스 방식으로 표현된 인자가 String.class를 넘겨 받으면 T는 String이 된다. 즉, 다음과 같이 객체를 생성할 수 있다. public static <T> T createobject(class<t> clazz) throws Exception { return clazz.newinstance(); 켜고 컴파일을 하는 것이 현명할 것이다. Note: Recompile with -Xlint:unchecked for details. 제네릭스는 직접 제네릭스를 지원하는 자료 구조를 만들려고 하지 않는다면 기쁘게 사용하면 되는 선물일지도 모른다. 하지만, 프로그 래밍이라는 것이 어느 한쪽 켠에만 숨어지내게 하지 않는다. 결국 제 네릭스의 깊은 부분, 어쩌면 자바 제네릭스의 어두운 부분과 맞닥뜨 릴일이있을것이다. 자바 5.0은 놀라운 수행 성능 개선을 보이면서 멋지게 다가왔다. 제네릭스가 온통 유쾌한 언어 기능이 아닐지는 모르지만, 자바 5.0의 멋진 면모를 보여주는 중요한 요소임에 분명하다. 기대에 조금 못 미 치는 면도 있고, 사실 불필요하게 어려워진 부분도 있지만, 도구는 결 국 활용하는 사람에 의해 그 가치가 드러나는 법이므로 자바 5.0이라 는 도구를 최대한 활용하여 좋은 소프트웨어를 만들고, 또 다음 버전 에는 더 나은 기능들이 채택될 수 있도록 노력하면 될 것이다. 정신없이 바쁘게 살다보니 벌써 한 해가 저문다. 코더로서, 소프트 웨어 엔지니어로서 살아가는 게 정말 녹녹한 일이 아니다. 개인적으 로는 XML과 웹 서비스, 비즈니스 프로세스의 수많은 스펙들과 또 수많은 구현들과 씨름한 한 해였다. 여러 오픈소스 프로젝트들에서 볼 수 있듯이, 능력 뛰어난 한두 명의 헌신에 따라 수많은 소프트웨어 가 명멸하였다. 독자 제위들도 한 해 잘 마무리하고 내년 한 해도 좋 은 소프트웨어를 만들길 빈다. a m o s 유사한 방법으로 배열도 생성할 수 있다. 이 경우에는 Array 클래 스의 newinstance() 메쏘드가 Object를 리턴하기 때문에 경고를 피 할 수 없다는 것이 단점이다. generics.zip public static <T> T[] createobjectarray(class<t> clazz, int length) throws Exception { return (T[]) java.lang.reflect.array.newinstance(clazz, length); 유쾌, 불쾌 뒤섞인 제네릭스 자바 5.0을 사용하면서 제네릭스는 전면에 와닿는 문제이다. 코드의 상당 부분에 꺾쇠괄호가 채워지게 될 것이고, 또 컴파일할 때마다 강 화된 자료형 검사에 당황하게 될 것이다. 그리고 자바 5.0으로 개발 을 하는 동안 결코 유쾌하지 않은 경고 메시지와 종종 만나게 될 것이 다. 이 경고 메시지는 실제 잘못된 형 변환을 지적할 수도 있으므로 쉽게 무시해서는 안 된다. 가능하면 -Xlint:unchecked 기능을 항상 Generics in the Java Programming Language, Gilad Bracha, July Java Specification Requests 14 : Add Generic Types To The JavaTM Programming Language Puzzling Through Erasure, Bruce Eckel, Sep., Puzzling Through Erasure : answer section, Neal Gafter, Sep., Proposed Changes to the Java Virtual Machine Specification, chapter 4 The class file format 208

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사) Java Program Performance Tuning ( ) n (Primes0) static List primes(int n) { List primes = new ArrayList(n); outer: for (int candidate = 2; n > 0; candidate++) { Iterator iter = primes.iterator(); while

More information

비긴쿡-자바 00앞부속

비긴쿡-자바 00앞부속 IT COOKBOOK 14 Java P r e f a c e Stay HungryStay Foolish 3D 15 C 3 16 Stay HungryStay Foolish CEO 2005 L e c t u r e S c h e d u l e 1 14 PPT API C A b o u t T h i s B o o k IT CookBook for Beginner Chapter

More information

5장.key

5장.key JAVA Programming 1 (inheritance) 2!,!! 4 3 4!!!! 5 public class Person {... public class Student extends Person { // Person Student... public class StudentWorker extends Student { // Student StudentWorker...!

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

자바 프로그래밍

자바 프로그래밍 5 (kkman@mail.sangji.ac.kr) (Class), (template) (Object) public, final, abstract [modifier] class ClassName { // // (, ) Class Circle { int radius, color ; int x, y ; float getarea() { return 3.14159

More information

Java ~ Java program: main() class class» public static void main(string args[])» First.java (main class ) /* The first simple program */ public class

Java ~ Java program: main() class class» public static void main(string args[])» First.java (main class ) /* The first simple program */ public class Linux JAVA 1. http://java.sun.com/j2se/1.4.2/download.html J2SE 1.4.2 SDK 2. Linux RPM ( 9 ) 3. sh j2sdk-1_4_2_07-linux-i586-rpm.bin 4. rpm Uvh j2sdk-1_4_2_07-linux-i586-rpm 5. PATH JAVA 1. vi.bash_profile

More information

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공 메신저의새로운혁신 채팅로봇 챗봇 (Chatbot) 입문하기 소 이 메 속 : 시엠아이코리아 름 : 임채문 일 : soulgx@naver.com 1 목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper

More information

Week5

Week5 Week 05 Iterators, More Methods and Classes Hash, Regex, File I/O Joonhwan Lee human-computer interaction + design lab. Iterators Writing Methods Classes & Objects Hash File I/O Quiz 4 1. Iterators Array

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

A Tour of Java IV

A Tour of Java IV A Tour of Java IV Sungjoo Ha March 25th, 2016 Sungjoo Ha 1 / 35 Review First principle 문제가생기면침착하게영어로구글에서찾아본다. 타입은가능한값의집합과연산의집합을정의한다. 기본형이아니라면이름표가메모리에달라붙는다. 클래스로사용자정의타입을만든다. 프로그래밍은복잡도관리가중요하다. OOP 는객체가서로메시지를주고받는방식으로프로그램을구성해서복잡도관리를꾀한다.

More information

01....b74........62

01....b74........62 4 5 CHAPTER 1 CHAPTER 2 CHAPTER 3 6 CHAPTER 4 CHAPTER 5 CHAPTER 6 7 1 CHAPTER 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

More information

(291)본문7

(291)본문7 2 Chapter 46 47 Chapter 2. 48 49 Chapter 2. 50 51 Chapter 2. 52 53 54 55 Chapter 2. 56 57 Chapter 2. 58 59 Chapter 2. 60 61 62 63 Chapter 2. 64 65 Chapter 2. 66 67 Chapter 2. 68 69 Chapter 2. 70 71 Chapter

More information

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾ Chapter 1 Chapter 1 Chapter 1 Chapter 2 Chapter 2 Chapter 2 Chapter 2 Chapter 2 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 4 Chapter 4

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

FileMaker ODBC and JDBC Guide

FileMaker ODBC and JDBC Guide FileMaker 13 5 5 5 6 6 6 7 7 8 8 8 8 9 9 10 10 11 11 12 12 12 12 12 12 13 13 14 14 16 16 18 4 19 19 20 20 21 21 21 23 23 23 23 25 26 26 26 26 27 28 28 28 28 29 31 31 32 33 33 33 33 34 34 35 35 35 36 1

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

11장.key

11장.key JAVA Programming 1 GUI 2 2 1. GUI! GUI! GUI.! GUI! GUI 2. GUI!,,,!! GUI! GUI 11 : GUI 12 : GUI 3 4, JComponent 11-1 :, JComponent 5 import java.awt.*; import java.awt.event.*; import javax.swing.*; public

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

FileMaker ODBC and JDBC Guide

FileMaker ODBC and JDBC Guide FileMaker 14 5 5 5 5 6 6 6 7 7 7 8 8 8 9 9 10 10 11 11 12 12 12 12 12 13 13 14 15 16 17 18 18 19 19 20 20 20 21 21 21 22 22 22 22 23 24 24 24 24 25 27 27 28 29 29 29 29 30 30 31 31 31 32 1 1 1 1 1 1 1

More information

A Tour of Java V

A Tour of Java V A Tour of Java V Sungjoo Ha April 3rd, 2015 Sungjoo Ha 1 / 28 Review First principle 문제가생기면침착하게영어로구글에서찾아본다. 타입은가능한값의집합과연산의집합을정의한다. 기본형이아니라면이름표가메모리에달라붙는다. 클래스로사용자정의타입을만든다. 프로그래밍은복잡도관리가중요하다. OOP 는객체가서로메시지를주고받는방식으로프로그램을구성해서복잡도관리를꾀한다.

More information

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for 2003 Development of the Software Generation Method using Model Driven Software Engineering Tool,,,,, Hoon-Seon Chang, Jae-Cheon Jung, Jae-Hack Kim Hee-Hwan Han, Do-Yeon Kim, Young-Woo Chang Wang Sik, Moon

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - PL_03-04.pptx Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8

More information

Microsoft PowerPoint - 14주차 강의자료

Microsoft PowerPoint - 14주차 강의자료 Java 로만드는 Monster 잡기게임예제이해 2014. 12. 2 게임화면및게임방법 기사초기위치 : (0,0) 아이템 10 개랜덤생성 몬스터 10 놈랜덤생성 Frame 하단에기사위치와기사파워출력방향키로기사이동아이템과몬스터는고정종료버튼클릭하면종료 Project 구성 GameMain.java GUI 환경설정, Main Method 게임객체램덤위치에생성 Event

More information

2

2 2 3 4 12TH ANNIVERSARY NEXT G-BUSINESS 5 6 7 12TH ANNIVERSARY NEXT DEVICE 1 8 9 NEXT DEVICE2 10 11 VS NEXT DEVICE3 12TH ANNIVERSARY 12 13 14 15 16 17 18 19 20 1 2 3 21 22 Check List Check List Check List

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float Part 2 31 32 33 106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float f[size]; /* 10 /* c 10 /* f 20 3 1

More information

1부

1부 PART 1 2 PART 01 _ SECTION 01 API NOTE SECTION 02 3 SECTION 02 GPL Apache2 NOTE 4 PART 01 _ SECTION 03 (Proyo) 2 2 2 1 2 2 : 2 2 Dalvik JIT(Just In Time) CPU 2~5 2~3 : (Adobe Flash) (Air) : SD : : : SECTION

More information

ePapyrus PDF Document

ePapyrus PDF Document 프로그래밍 콘테스트 챌린징 for GCJ, TopCoder, ACM/ICPC, KOI/IOI 지은이 Takuya Akiba, Yoichi Iwata, Mastoshi Kitagawa 옮긴이 박건태, 김승엽 1판 1쇄 발행일 201 1년 10월 24일 펴낸이 장미경 펴낸곳 로드북 편집 임성춘 디자인 이호용(표지), 박진희(본문) 주소 서울시 관악구 신림동 1451-15

More information

화판_미용성형시술 정보집.0305

화판_미용성형시술 정보집.0305 CONTENTS 05/ 07/ 09/ 12/ 12/ 13/ 15 30 36 45 55 59 61 62 64 check list 9 10 11 12 13 15 31 37 46 56 60 62 63 65 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

More information

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++, Level 1은객관식사지선다형으로출제예정 1. 다음은 POST(Post of Sales Terminal) 시스템의한콜레보레이션다이어그램이다. POST 객체의 enteritem(upc, qty) 와 Sale 객체의 makellineitem(spec,qty) 를 Java 또는 C ++, C # 언어로구현하시오. 각메소드구현과관련하여각객체내에필요한선언이있으면선언하시오.

More information

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp 2015년도 국가직 9급 컴퓨터 일반 문 1. 시스템 소프트웨어에 포함되지 않는 것은? 1 1 스프레드시트(spreadsheet) 2 로더(loader) 3 링커(linker) 4 운영체제(operating system) - 시스템 소프트웨어 : 운영체제, 데이터베이스관리 프로그램,, 컴파일러, 링커, 로더, 유틸리티 소프트웨 어 등 - 스프레드시트 : 일상

More information

Microsoft PowerPoint - JavaPrimer.ppt [호환 모드]

Microsoft PowerPoint - JavaPrimer.ppt [호환 모드] Linux 용 JAVA 설치 1. http://java.sun.com/javase/downloads/index.jsp 에서 JDK 6u1 의 Download 를 선택하여해당플랫폼의 JDK 6u1 를다운받는다 2. Linux용 RPM버전 1) sh jdk-6u1-linux-i586-rpm.bin 2) rpm Uvh jdk-6u1-linux-i586-rpm 3)

More information

소구분 : 조건문 / 반복문 / 연산자 ( 단답형 ) 난이도 : 하 [Q2] 다음반복테스트 (loop test) 클래스의실행결과를적으시오. public class ForLoop { int total = 0; for( int i=1; i<=5; i++ ) { for( i

소구분 : 조건문 / 반복문 / 연산자 ( 단답형 ) 난이도 : 하 [Q2] 다음반복테스트 (loop test) 클래스의실행결과를적으시오. public class ForLoop { int total = 0; for( int i=1; i<=5; i++ ) { for( i 과목명총문항수 O/X 문제형 4 지선다형 5 지선다형단답형서술형 JAVA( 필기테스트 ) 20 문항 0 문항 10 문항 0 문항 10 문항 0 문항 대구분 : Java API 소구분 : Object class/string class/stringbuffer/wrapper ( 단답형 ) [Q1] 다음프로그램은간단한회원정보를포함하고있는클래스를작성한것이다. 실행결과를적으시오.

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Microsoft PowerPoint - 18-DataSource.ppt

Microsoft PowerPoint - 18-DataSource.ppt 18 장 : JDBC DataSource DataSource JDBC 2.0의 javax.sql 패키지에포함되어도입됨 DataSource 인터페이스는데이터베이스커넥션을만들거나사용하는데좀더유연한아키텍처를제공하기위해도입됨 DataSource를이용할경우, 클라이언트코드는한줄도바꾸지않고서도다른데이터베이스에접속할수있도록해줌 즉 DataSource 는커넥션상세사항들을캡슐화

More information

2힉년미술

2힉년미술 제 회 Final Test 문항 수 배점 시간 개 00 점 분 다음 밑줄 친 부분의 금속 공예 가공 기법이 바르게 연결된 것은? 금, 은, 동, 알루미늄 등의 금속을 ᄀ불에 녹여 틀에 붓거나 금속판을 ᄂ구부리거나 망치로 ᄃ두들겨서 여러 가지 형태의 쓸모 있는 물건을 만들 수 있다. ᄀ ᄂ ᄃ ᄀ ᄂ ᄃ 조금 단금 주금 주금 판금 단금 단금 판금 주금 판금 단금

More information

2

2 GLOBAL 2 3 4 12TH ANNIVERSARY NEXT G-BUSINESS 5 6 7 SPECIAL GLOBAL1 12TH ANNIVERSARY 8 9 SPECIAL GLOBAL 2 10 11 SPECIAL GLOBAL 3 12TH ANNIVERSARY 12 13 14 15 12TH ANNIVERSARY SPECIAL GLOBAL4 16 17 2006

More information

歯2000-09-Final.PDF

歯2000-09-Final.PDF Design Pattern - API JSTORM http://www.jstorm.pe.kr -1- java API 2000-08-14 Public 2000-08-16 Draft (dbin@handysoft.co.kr), (pam@emotion.co.kr) HISTORY (csecau@orgio.net) 2001/2/15 9 10 jstorm

More information

2007_2_project4

2007_2_project4 Programming Methodology Instructor: Kyuseok Shim Project #4: external sort with template Due Date: 0:0 a.m. between 2007-12-2 & 2007-12-3 Introduction 이프로젝트는 C++ 의 template을이용한 sorting algorithm과정렬해야할데이터의크기가

More information

Microsoft PowerPoint - 07-C#-2-기초문법.ppt [호환 모드]

Microsoft PowerPoint - 07-C#-2-기초문법.ppt [호환 모드] 기본자료형 연산자와제어문 배열 컬렉션과반복자 순천향대학교컴퓨터학부이상정 1 기본자료형 순천향대학교컴퓨터학부이상정 2 C# 자료형 C# 은.NET 프레임워크가제공하는 CTS(Common Type System) 자료형을사용 CTS는닷넷기반의여러언어에서공통으로사용되는자료형 CTS 는값 (value) 형과참조형 (reference) 형지원 CTS가제공하는모든데이터형은

More information

슬라이드 1

슬라이드 1 Hadoop Tutorial - 설치및실행 2008. 7. 17 한재선 (NexR 대표이사 ) jshan0000@gmail.com http://www.web2hub.com H.P: 016-405-5469 Brief History Hadoop 소개 2005년 Doug Cutting(Lucene & Nutch 개발자 ) 에의해시작 Nutch 오픈소스검색엔진의분산확장이슈에서출발

More information

Microsoft Word - EEL2 Lab4.docx

Microsoft Word - EEL2 Lab4.docx EEL2 LAB Week 4: Inheritance 1. 다음을만족하는클래스 Employee를작성하시오.(1에서 4번까지관련된문제입니다.) 클래스 Employee 직원는클래스 Regular 정규직와 Temporary 비정규직의상위클래스 필드 : 이름, 나이, 주소, 부서, 월급정보를필드로선언 생성자 : 이름, 나이, 주소, 부서를지정하는생성자정의 메소드 printinfo():

More information

KYO_SCCD.PDF

KYO_SCCD.PDF 1. Servlets. 5 1 Servlet Model. 5 1.1 Http Method : HttpServlet abstract class. 5 1.2 Http Method. 5 1.3 Parameter, Header. 5 1.4 Response 6 1.5 Redirect 6 1.6 Three Web Scopes : Request, Session, Context

More information

UML

UML Introduction to UML Team. 5 2014/03/14 원스타 200611494 김성원 200810047 허태경 200811466 - Index - 1. UML이란? - 3 2. UML Diagram - 4 3. UML 표기법 - 17 4. GRAPPLE에 따른 UML 작성 과정 - 21 5. UML Tool Star UML - 32 6. 참조문헌

More information

강의자료

강의자료 Copyright, 2014 MMLab, Dept. of ECE, UOS Java Swing 2014 년 3 월 최성종서울시립대학교전자전기컴퓨터공학부 chois@uos.ac.kr http://www.mmlab.net 차례 2014년 3월 Java Swing 2 2017-06-02 Seong Jong Choi Java Basic Concepts-3 Graphical

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

?

? 이날 회의에서는 우리농협 정관 개정(안)과 함께 2012년 사업계획 및 수지예산 변경승인, 2011년도 &$%& අ ᇜ ᆡᅴᒂ ዊ 감사의 감사보고 및 결산보고, 임원보수 및 실비변상 규약 개정, (주)영주농산물유통농업사회법인 외 경영관리본부 부출자가 원안대로 승인되었다. 우리농협은 2월 29일, 재적 대의원 198명(의장포함) 중 197명이 참석한 가운데 군위에

More information

2

2 2 3 4 12TH ANNIVERSARY NEXT G-BUSINESS 5 6 ONLINE SPECIALIST 1 7 12TH ANNIVERSARY ONLINE SPECIALIST 2 8 ONLINE SPECIALIST 3 9 12TH ANNIVERSARY ONLINE SPECIALIST4 10 ONLINE SPECIALIST 5 11 12TH ANNIVERSARY

More information

1

1 04단원 컴퓨터 소프트웨어 1. 프로그래밍 언어 2. 시스템 소프트웨어 1/10 1. 프로그래밍 언어 1) 프로그래밍 언어 구분 각종 프로그래밍 언어에 대해 알아보는 시간을 갖도록 하겠습니다. 우리가 흔히 접하는 소프트웨어 들은 프로그래밍 언어로 만들어지는데, 프로그래밍 언어는 크게 2가지로 나눌 수 있습니다. 1 저급어 : 0과 1로 구성되어 있어, 컴퓨터가

More information

IKC43_06.hwp

IKC43_06.hwp 2), * 2004 BK21. ** 156,..,. 1) (1909) 57, (1915) 106, ( ) (1931) 213. 1983 2), 1996. 3). 4) 1),. (,,, 1983, 7 12 ). 2),. 3),, 33,, 1999, 185 224. 4), (,, 187 188 ). 157 5) ( ) 59 2 3., 1990. 6) 7),.,.

More information

No Slide Title

No Slide Title Copyright, 2001 Multimedia Lab., CH 3. COM object (In-process server) Eun-sung Lee twoss@mmlab.net Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea 0. Contents 1.

More information

VOL.76.2008/2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

VOL.76.2008/2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph 인터그래프코리아(주)뉴스레터 통권 제76회 비매품 News Letters Information Systems for the plant Lifecycle Proccess Power & Marine Intergraph 2008 Contents Intergraph 2008 SmartPlant Materials Customer Status 인터그래프(주) 파트너사

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 9 장생성자와접근제어 이번장에서학습할내용 생성자 정적변수 정적메소드 접근제어 this 클래스간의관계 객체가생성될때초기화를담당하는생성자에대하여살펴봅니다. 생성자 생성자 (contructor): 객체가생성될때에필드에게초기값을제공하고필요한초기화절차를실행하는메소드 생성자의예 class Car { private String color; // 색상

More information

Microsoft PowerPoint - 4-UI 애플리케이션

Microsoft PowerPoint - 4-UI 애플리케이션 UIApplication 클래스 UIApplicationDelegate 프로토콜 순천향대학교 컴퓨터공학과 이 상 정 1 UIApplication 클래스 순천향대학교 컴퓨터공학과 이 상 정 2 UIApplication 클래스 개요 이 장에서는 UIApplication 클래스를 기본으로 하여 아이폰 프 로그램 동작 과정을 이해 인터페이스 빌더를 사용하지 않는 아이폰

More information

2

2 2013 Devsisters Corp. 2 3 4 5 6 7 8 >>> import boto >>> import time >>> s3 = boto.connect_s3() # Create a new bucket. Buckets must have a globally unique name >>> bucket = s3.create_bucket('kgc-demo')

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - Lect04.pptx OBJECT ORIENTED PROGRAMMING Object Oriented Programming 이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Class 와 object Class 와객체 클래스의일생 메소드 필드 String Object Class 와객체 3 클래스 클래스의구성 클래스 (l (class): 객체를만드는설계도 클래스로부터만들어지는각각의객체를특별히그클래스의인스턴스

More information

Java Programing Environment

Java Programing Environment Lab Exercise #7 Swing Component 프로그래밍 2007 봄학기 고급프로그래밍 김영국충남대전기정보통신공학부 실습내용 실습과제 7-1 : 정규표현식을이용한사용자정보의유효성검사 (ATM 에서사용자등록용도로사용가능 ) 실습과제 7-2 : 숫자맞추기게임 실습과제 7-3 : 은행관리프로그램 고급프로그래밍 Swing Component 프로그래밍 2

More information

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

Microsoft PowerPoint - 13_UMLCoding(2010).pptx LECTURE 13 설계와코딩 최은만, CSE 4039 소프트웨어공학 설계구현매핑 UML 설계도로부터 Java 프로그래밍언어로의매핑과정설명 정적다이어그램의구현 동적다이어그램의구현 최은만, CSE 4039 소프트웨어공학 2 속성과오퍼레이션의구현 Student - name : String #d department t: String Sti packageattribute

More information

Mars OS 1.0.2 System Administration Guide

Mars OS 1.0.2 System Administration Guide Mars OS 1.0.2 시스템 관리 가이드 NetApp, Inc. www.netapp.com/kr 부품 번호:215-09731_A0 2015년 2월 4일 수요일 2 목차 목차 Mars OS 정보 12 Mars OS의 기능 13 고성능 13 업계 최고의 스토리지 효율성 13 시스템 모니터링 13 비휘발성 메모리를 사용하여 안정성 및 성능 향상 13 클러스터링

More information

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx 과목명: 웹프로그래밍응용 교재: 모던웹을 위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch19. node.js 기본 2014년 1학기 Professor Seung-Hoon Choi 19 node.js 기본 이 책에서는 서버 구현 시 node.js 를 사용함 자바스크립트로 서버를 개발 다른서버구현기술 ASP.NET, ASP.NET

More information

A Tour of Java III

A Tour of Java III A Tour of Java III Sungjoo Ha March 18th, 2016 Sungjoo Ha 1 / 30 Review First principle 문제가생기면침착하게영어로구글에서찾아본다. 타입은가능한값의집합과연산의집합을정의한다. 기본형이아니라면이름표가메모리에달라붙는다. 클래스로사용자정의타입을만든다. 프로그래밍은복잡도관리가중요하다. OOP 는객체가서로메시지를주고받는방식으로프로그램을구성해서복잡도관리를꾀한다.

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

Microsoft Word - CL5000,5500_KOR_UM_20110321_.doc

Microsoft Word - CL5000,5500_KOR_UM_20110321_.doc 2 차 례 1. 주의 사항... 8 1.1 취급주의... 8 2. Specification... 10 2.1 소개... 10 2.2 규격... 12 3. 명칭과 기능... 14 3.1 CL 5000 - P Type... 14 3.2 기본 설치... 18 3.3 표시부... 19 3.4 기능키... 20 3.5 라벨롤의 설치... 24 4. PROGRAMMING...

More information

<30392DB9CCB1B9BEE7C7E3C7A55F28C7D1B1DB2C2030363330292E786C73>

<30392DB9CCB1B9BEE7C7E3C7A55F28C7D1B1DB2C2030363330292E786C73> [번역] 부속서 2-나 미합중국 양허표 HTS 8 품목명 기준세율 유형 01011000 말, 당나귀, 노새, 나귀(순수종의 번식용) 01019010 말(순수종의 번식용 이외) 01019020 당나귀(순수종의 번식용 이외) 6.8% D 01019030 노새와 나귀(도살용으로 수입된것) 01019040 노새와 나귀(도살용으로 수입된것 이외) 4.5% 01021000

More information

HWP Document

HWP Document 만델브로트 집합은 이주 간단한 복소수 점화식 (정확히 표현하면 이나 프로그래밍 편의상 간단히 로 표현하는 것으로 한다)에서 출발한다. 에서 의 초기값을 로 하여 점화식을 계속 반복하여 계산한다. 그 결과 는 값에 따라 하나의 값으로 수렴하기도 하고, 여러 값 사이를 순환적으로 왔다 갔다 하기도 하고 카오스적인 값이 반복되기도 한다. 만델브로트 집합에서도 기본

More information

PowerSHAPE 따라하기 Calculate 버튼을 클릭한다. Close 버튼을 눌러 미러 릴리프 페이지를 닫는다. D 화면을 보기 위하여 F 키를 누른다. - 모델이 다음과 같이 보이게 될 것이다. 열매 만들기 Shape Editor를 이용하여 열매를 만들어 보도록

PowerSHAPE 따라하기 Calculate 버튼을 클릭한다. Close 버튼을 눌러 미러 릴리프 페이지를 닫는다. D 화면을 보기 위하여 F 키를 누른다. - 모델이 다음과 같이 보이게 될 것이다. 열매 만들기 Shape Editor를 이용하여 열매를 만들어 보도록 PowerSHAPE 따라하기 가구 장식 만들기 이번 호에서는 ArtCAM V를 이용하여 가구 장식물에 대해서 D 조각 파트를 생성해 보도록 하겠다. 중심 잎 만들기 투 레일 스윕 기능을 이용하여 개의 잎을 만들어보도록 하겠다. 미리 준비된 Wood Decoration.art 파일을 불러온다. Main Leaves 벡터 레이어를 on 시킨다. 릴리프 탭에 있는

More information

01_피부과Part-01

01_피부과Part-01 PART 1 CHAPTER 01 3 PART 4 C H A P T E R 5 PART CHAPTER 02 6 C H A P T E R CHAPTER 03 7 PART 8 C H A P T E R 9 PART 10 C H A P T E R 11 PART 12 C H A P T E R 13 PART 14 C H A P T E R TIP 15 PART TIP TIP

More information

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관 Hanbit ebook Realtime 30 C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 Safe C++ 블라디미르 쿠스퀴니르 지음 / 정원천 옮김 이 도서는 O REILLY의 Safe C++의 번역서입니다. BACK TO THE BASIC C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 BACK TO THE BASIC C++ 버그 헌팅 버그를

More information

#KM-250(PB)

#KM-250(PB) PARTS BOOK FOR 1-NEEDLE, STRAIGHT LOCK-STITCH MACHINE SERIES KM-250AU-7S KM-250AU-7N KM-250A-7S KM-250A-7N KM-250B-7S KM-250B-7N KM-250BH-7S KM-250BH-7N KM-250BL-7S KM-250BL-7N KM-250AU KM-250A KM-250B

More information

161호_내지(2도)

161호_내지(2도) www.lisa.or.kr 161 2011 07 07 www.lisa.or.kr July 161 2011.07 2011 July 2011 July 2011 July 2011 July 2011 July 2011 July 2011 July 2011 July 2011 July 2011 July 2011 July 4,950,000 4,950,000

More information

#KM-235(110222)

#KM-235(110222) PARTS BOOK KM-235A/B INFORMATION A. Parts Book Structure of Part Book Unique code by mechanism Unique name by mechanism Explode view Ref. No. : Unique identifcation number by part Parts No. : Unique Product

More information

Week3

Week3 2015 Week 03 / _ Assignment 1 Flow Assignment 1 Hello Processing 1. Hello,,,, 2. Shape rect() ellipse() 3. Color stroke() fill() color selector background() 4 Hello Processing 4. Interaction setup() draw()

More information

06Àå

06Àå Chapter 5 Chapter 6 Chapter 7 chapter 6 Part 1 6.1 Part 2 Part 3 145 146 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 147 148 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 149 150 Chapter 5

More information

1229_¶È¶ÈÇÑÀÎÁöÇൿġ·áº»¹®.PDF

1229_¶È¶ÈÇÑÀÎÁöÇൿġ·áº»¹®.PDF 41 Chapter. 3 Chapter. 3 42 43 Chapter. 3 44 45 Chapter. 3 46 47 Chapter. 3 brilliant 48 49 Chapter. 3 brilliant 50 51 Chapter. 3 brilliant 52 53 Chapter. 3 54 brilliant 55 Chapter. 3 56 57 Chapter. 3

More information

5.스택(강의자료).key

5.스택(강의자료).key CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.

More information

목 차 1. 안전을 위한 주의사항 2. 사 전에 2-1. 제품 특징 2-2. 제품 구성 2-3. 각 부분의 명칭 2 4 5 6 7 3-11. 전 뷰어 / 뷰어 설정 3-12. 전 뷰어 / 환경 설정 3-13. 환경설정 본 값 3-14. 재생방법 (블랙박스) 3-15.

목 차 1. 안전을 위한 주의사항 2. 사 전에 2-1. 제품 특징 2-2. 제품 구성 2-3. 각 부분의 명칭 2 4 5 6 7 3-11. 전 뷰어 / 뷰어 설정 3-12. 전 뷰어 / 환경 설정 3-13. 환경설정 본 값 3-14. 재생방법 (블랙박스) 3-15. 사설명서 http://www.innopix.kr 목 차 1. 안전을 위한 주의사항 2. 사 전에 2-1. 제품 특징 2-2. 제품 구성 2-3. 각 부분의 명칭 2 4 5 6 7 3-11. 전 뷰어 / 뷰어 설정 3-12. 전 뷰어 / 환경 설정 3-13. 환경설정 본 값 3-14. 재생방법 (블랙박스) 3-15. 재생방법 (일반 동영상 플레이어) 3-16.

More information

Microsoft PowerPoint - java

Microsoft PowerPoint - java Java John Mitchell & Byeong-Mo Chang Outline Language Overview History and design goals Classes and Inheritance Object features Encapsulation Inheritance Types and Subtyping Primitive and ref types Interfaces;

More information

Preliminary spec(K93,K62_Chip_081118).xls

Preliminary spec(K93,K62_Chip_081118).xls 2.4GHz Antenna K93- Series KMA93A2450X-M01 Antenna mulilayer Preliminary Spec. Features LTCC Based designs Monolithic SMD with small, low-profile and light-weight type Wide bandwidth Size : 9 x 3 x 1.0mm

More information

Microsoft PowerPoint - CSharp-2-기초문법

Microsoft PowerPoint - CSharp-2-기초문법 2 장. C# 기초문법 자료형 제어문 배열 연산자 순천향대학교컴퓨터학부이상정 1 자료형 순천향대학교컴퓨터학부이상정 2 CTS CTS(Common Type System) 닷넷기반의여러언어에서공통으로사용되는자료형 언어별로서로다른자료형을사용할때발생할수있는호환성문제를해결 값 (Value) 형과참조 (Reference) 형을지원 CTS가제공하는모든자료형은 System.Object를상속받아구현

More information

DeepDive_ R_1±³

DeepDive_ R_1±³ IDG Deep Dive part 1 1 IT World IT World 2 setwd( ~/mydirectory ) setwd( C:/Sharon/Documents/RProjects ) install.packages( thepackagename ) installed.packages() library( thepackagename ) 3 IT World update.packages()

More information

KDIans2009가을호 표지

KDIans2009가을호 표지 2009년 10월 26일 발행 통권 제12호 130-868 서울특별시 동대문구 회기로 49 Tel 02-958-4114 Fax 02-960-0652 발행처 KDI 편집인 KDI 기획조정실장 홈페이지 www.kdi.re.kr 기획 및 편집 대외협력팀(Tel 958-4030) 디자인 디자인 신지 인쇄처 경희정보인쇄 Public and Private Infrastructure

More information

Jwplayer 요즘 웹에서 동영상 재생을 목적으로 많이 쓰이는 jwplayer의 설치와 사용하기 입니다. jwplayer홈페이지 : http://www.longtailvideo.com 위의 홈페이지에 가시면 JWplayer를 다운 받으실 수 있습니다. 현재 5.1버전

Jwplayer 요즘 웹에서 동영상 재생을 목적으로 많이 쓰이는 jwplayer의 설치와 사용하기 입니다. jwplayer홈페이지 : http://www.longtailvideo.com 위의 홈페이지에 가시면 JWplayer를 다운 받으실 수 있습니다. 현재 5.1버전 Jwplayer Guide Jwplayer 요즘 웹에서 동영상 재생을 목적으로 많이 쓰이는 jwplayer의 설치와 사용하기 입니다. jwplayer홈페이지 : http://www.longtailvideo.com 위의 홈페이지에 가시면 JWplayer를 다운 받으실 수 있습니다. 현재 5.1버전까지 나왔으며 편리함을 위해서 아래를 링크를 걸어둡니다 [다운로드]

More information

2 x10 목 차 1. 일반 정보 1. 점검 사항 2. 주의 및 관리 3. 방수 4. 배터리 충전하기 2. 순토 X10 사용 방법 1. 화면과 버튼 (1) 모드 표시 (2) 배터리 용량 표시 (3) 알람 심볼 (4) GPS 수신 표시 2. 메뉴 (1) 기본 메뉴 구조

2 x10 목 차 1. 일반 정보 1. 점검 사항 2. 주의 및 관리 3. 방수 4. 배터리 충전하기 2. 순토 X10 사용 방법 1. 화면과 버튼 (1) 모드 표시 (2) 배터리 용량 표시 (3) 알람 심볼 (4) GPS 수신 표시 2. 메뉴 (1) 기본 메뉴 구조 SUUNTO X10 한글 사용 설명서 x 이 사용 설명서는 순토 X10 패키지에 들어있는 영문설명서 부분을 한 글화 한 것입니다. x 영문을 한글로 번역하는 과정에서 기술적인 전문성의 결여로 인해 발생 할 수 있는 오역의 가능성이 있음을 알려드리며, 사용 시 이 점을 감안하 여 주실 것을 당부 드립니다. x 보다 자세한 기술적인 설명에 대한 지원이 필요하신

More information