<335FC0DAB9D92E687770>

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "<335FC0DAB9D92E687770>"

Transcription

1 추상 메소드와 추상 클래스 -추상 메소드(abstract method) 선언되어 있으나 구현되어 있지 않은 메소드 추상 메소드 정의 접근 지정자 abstract 반환형 메소드이름(); -ex) public abstract int getvalue(); -추상 메소드는 서브 클래스에서 오버라이딩하여 구현 -추상 클래스(abstract class) 추상 클래스를 하나라도 가지면 추상 클래스임 클래스 앞에 반드시 abstract라고 선언해야 함 추상 메소드가 하나도 없지만 클래스 앞에 abstract로 선언한 경우 추상 클래스 특성 -추상 클래스의 객체는 생성할 수 없다. -추상 클래스 필요성 계층적 상속 관계를 갖는 클래스 구조를 만들 때 설계와 구현 분리 슈퍼 클래스에서는 개념적 특징 정의, 서브 클래스에서 구체적 행위 구현 -추상 클래스의 상속 추상 클래스를 상속받아, 추상 메소드를 구현하지 않으면 서브 클래스도 추상 클래스 됨. abstract로 정의하여야 한다

2 서브 클래스에서 추상 메소드를 구현하면 서브 클래스는 추상 클래스가 되지 않는다 가지 종류의 추상 클래스 -추상 클래스의 활용 예 -예제 5-6 : 추상 클래스의 구현 다음의 추상 클래스 Calculator를 상속받는 GoodCalc 클래스를 독자 임의로 작성하라

3 -예제 5-6 정답 21. 실세계의 인터페이스와 인터페이스의 필요성 그림 자바의 인터페이스 -인터페이스(interface) 모든 메소드가 추상 메소드인 클래스 인터페이스는 상수와 메소드만 갖는다. 필드는 없음

4 -인터페이스 정의 interface 키워드로 정의된 클래스 ex) public interface SerialDriver { } -인터페이스의 특징 메소드 선언 시 abstract 키워드를 사용하지 않아도 된다. 모든 메소드는 public으로 가정, public 접근 지정자 생략 가능 객체를 생성할 수 없음 레퍼런스 변수 타입으로 사용 가능 인터페이스의 메소드 속성 public, static, final으로 가정되므로 키워드 생략 가능 -자바 인터페이스 사례 -인터페이스의 필요성 인터페이스를 이용하여 다중 상속 구현 클래스는 다중 상속 불가 인터페이스는 명세서와 같음 구현은 블랙 박스와 같아 인터페이스의 사용자는 구현에 대해 알 필요가 없음 인터페이스만 정의하고 구현을 분리하여, 작업자가 다양한 구현을 할 수 있음 그림

5 -인터페이스 상속 인터페이스 간에도 상속 가능 인터페이스 상속하여 확장된 인터페이스 작성 가능 다중 상속 허용 -인터페이스 구현 인터페이스 구현 implements 키워드 사용 여러 개의 인터페이스 동시 구현 가능 상속과 구현이 동시에 가능 -인터페이스의 다중 구현

6 -추상 클래스와 인터페이스 비교 표 5.2 제6장 패키지 개념과 자바 기본 패키지 6.1 패키지 개념과 필요성 패키지 개념과 필요성 그림 샘플의 디렉터리 관리(패키지)

7 6.1.3 자바의 패키지 (package) -패키지란 서로 관련된 클래스와 인터페이스의 컴파일된 파일들을 하나의 디렉터리에 묶어 놓은 것 -하나의 응용프로그램은 여러 개의 패키지로 구성 하나의 패키지에 모든 클래스 파일을 넣어 둘 수 있음 -패키지는 jar 파일로 압축할 수 있음 예) JDK에서 제공하는 표준 패키지는 rt.jar에 압축 JDK에서 제공되는 클래스의 패키지 그림 패키지 사용하기, import문 -다른 패키지 갖다 쓰기 import를 이용하지 않는 경우 소스 내에서 매번 전체 패키지 이름과 클래스명을 써주어야 함 import 키워드 이용하는 경우 소스의 시작 부분에 사용하려는 패키지 명시 소스 내에서 클래스 명만 명시하면 된다

8 -import 사용 특정 클래스의 경로명만 포함하는 경우 import java.util.scanner; 패키지 내의 모든 클래스를 포함시키는 경우 import java.util.*; *는 현재 패키지 내의 클래스만을 의미하며 하위 패키지의 클래스까지 포함하지 않는다 클래스 경로 -클래스의 위치(경로) 지정 클래스 탐색 경로를 지정하는 방법 2 가지 클래스 경로의 환경 변수 : 시스템 환경 변수 CLASSPATH java의 옵션 classpath 그림 6.3 그림 6.4 -실행 시 클래스 파일이 존재하는 패키지 디렉터리 정보를 -classpath 옵션에 지정

9 -CLASSPATH 지정 방법 그림 수동으로 패키지를 만드는 과정 -수동으로 패키지를 만드는 과정 1. 패키지로 사용할 디렉터리 생성 2. 자바 소스 내의 패키지 선언 package 패키지 이름; 이 소스 파일이 컴파일되면 생성된 클래스 파일이 속할 패키지 이름 선언 3. 자바 소스를 컴파일한 클래스 파일을 패키지 디렉터리에 저장 -패키지에 속한 자바프로그램 실행 main() 메소드를 가진 클래스의 정확한 경로명 지정 패키지가 포함된 디렉터리로 이동하여 경로명을 지정하여 실행하거나 임의의 디렉터리에서 java -classpath (패키지경로명) 클래스 이름으로 실행 -패키지를 포함하는 응용프로그램 개발 사례 1 -패키지 디렉터리 chapter6 생성 현재 디렉터리 C:\Temp C:\Temp\chapter6 디렉터리 생성 -소스 파일 내에 패키지 선언 -Hello.java 컴파일 C:\Temp>javac Hello.java 현재 디렉터리에서 컴파일 Hello.class 생성

10 -Hello.class 파일 복사 혹은 이동 Hello.class 파일을 C:\Temp에서 C:\Temp\chapter6로 복사 혹은 이동 -실행 C:\temp>java chapter6.hello 현재 디렉터리에서 실행 정상적으로 실행됨 -패키지를 포함하는 응용프로그램 개발 사례 2 -chapter6 디렉터리 생성하지 않음 현재 디렉터리 C:\Temp -컴파일 C:\Temp>javac -d. Hello.java 현재 디렉터리에서 컴파일 -d 옵션 : 패키지 디렉터리 자동 생성. : 현재 디렉터리를 기준으로 클래스 파일을 찾도록 지시 결과 : Hello.class 파일을 C:\Temp\chapter6에 생성 -실행 C:\ temp>java chapter6.hello 현재 디렉터리에서 실행 정상적으로 실행됨 -사례 2의 컴파일 과정 및 실행 java -d. Hello.java 로 컴파일 하면 현재 디렉터리 (.) 밑에 chapter6 디렉터리 자동 생성되고 동시에 컴파일된 클래스 파 일이 생성됨 그림

11 6.1.8 이클립스에서 쉽게 패키지 만들기 예제로 사용할 샘플 소스(5장의 예제 5-6) 프로젝트 작성(프로젝트 이름 : PackageEx) 그림

12 패키지 lib 작성 그림 패키지 app 작성 그림

13 패키지 작성이 완료된 결과 그림 클래스 Calculator 만들기 그림

14 Calculator 소스 수정 그림 6.12 그림

15 그림 프로젝트 PackageEx 실행 그림 패키지의 특징 -패키지의 특징 패키지 계층구조 클래스나 인터페이스가 너무 많아지면 관리의 어려움 관련된 클래스 파일을 하나의 패키지로 계층화하여 관리하면 관리 쉬움 패키지별 접근 제한 default로 선언된 클래스나 멤버는 동일 패키지 내의 클래스들이 자유롭게 접근하도록 허용 동일한 이름의 클래스와 인터페이스의 사용 가능 서로 다른 패키지에 이름이 같은 클래스와 인터페이스 존재 가능 높은 소프트웨어 재사용성 오라클에서 제공하는 자바 API는 패키지로 구성되어 있음 java.lang, java.io 등의 패키지들 덕분에 일일이 코딩하지 않고 입출력 프로그램을 간단 히 작성할 수 있음 자바 JDK의 패키지 구조 -JDK 패키지

16 자바에서는 관련된 클래스들을 표준 패키지로 묶어 사용자에게 제공 자바에서 제공하는 패키지는 C언어의 표준 라이브러리와 유사 JDK의 표준 패키지는 rt.jar에 담겨 있다. C:\Program Files\Java\jdk1.6.0_16\jre\lib\rt.jar 그림 자바 패키지 구조 주요 패키지 -java.lang

17 자바 language 패키지 스트링, 수학 함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 자동으로 import 됨 - import 문이 필요없음 -java.util 자바 유틸리디 패키지 날짜, 시간, 벡터, 해쉬 테이블 등과 같은 다양한 유틸리티 클래스와 인터페이스 제공 -java.io 키보드, 모니터, 프린터, 디스크 등에 입출력을 할 수 있는 클래스와 인터페이스 제공 -java.awt 자바 GUI 프로그래밍을 위한 클래스와 인터페이스 제공 -javax.swing 자바 GUI 프로그래밍을 위한 스윙 패키지 자바 API 참조 -자바 API의 상세 정보 Oracle Technology Network( 온라인으로 API 규격제공 그림 Object 클래스 -특징 java.lang 패키지에 포함 자바 클래스 계 층 구조의 최상위에 위치 모든 클래스의 수퍼 클래스 -주요 메소드 표 6.1 메소드 설명

18 protectedobject clone() 현 객체와 똑같은 객체를 만들어 반환. 오버라이딩 필요 booleanequals(objectobj) obj가 가리키는 객체와 현재 객체가 비교하여 같으면 true반환 ClassgetClass() 현 객체의 런타임 클래스를 반환 inthashcode() 현 객체에 대한 해쉬 코드 값 반환 StringtoString() 현 객체에 대한 스트링 표현을 반환 void notify() 현 객체에 대해 대기하고 있는 하나의 쓰레드를 깨운다. void notifyall() 현 객체에 대해 대기하고 있는 모든 쓰레드를 깨운다. void wait() 현 객체의 다른 쓰레드가notify() 또는 notifyall() 메소드를 호출할 때까지 현 쓰레드를 대기하게 한다 객체 속성 -객체를 문자열로 변환 -String tostring() 객체를 텍스트 형태로 표현한 문자열로 반환 반환되는 문자열 : 클래스 hash code 객체와 문자열이 + 연산이 되는 경우 객체의 tostring() 메소드를 호출

19 -새로운 tostring() 만들기 객체 비교 -객체 레퍼런스의 동일성 비교 : = 연산자 이용 -객체 내용 비교 서로 다른 두 객체가 같은 내용물인지 비교 boolean equals(object obj) 이용

20 -예제 6-1 : Rect 클래스 만들고 equals() 만들기 int 타입의 width, height의 필드를 가지는 Rect 클래스를 작성하고, 두 Rect 객체의 width, height 필드에 의해 구성되는 면적이 같으면 두 객체가 같은 것으로 판별하도록 equals()를 작성하라. Rect 생성자에서 width, height 필드를 인자로 받아 초기화한다 Wrapper 클래스 -자바 기본 데이터 타입을 클래스화한 8개 클래스 표 6.2 기본 데이터 타입 byte short int long char float double boolean Wrapper클래스 Byte Short Integer Long Character Float Double Boolean -용도 기본 데이터 타입을 사용할 수 없고 객체만 사용하는 컬렉션에 기본 데이터 타입을 Wrapper 클래스로 만들어 사용 Wrapper 객체 생성 -기본 데이터 값을 인자로 Wrapper 클래스 생성자 호출 -해당 데이터 값을 나타내는 문자열을 생성자 인자로 사용 가능 Boolean, Short, Byte, Integer, Long, Double, Float 경우

21 -Float는 double 타입의 값을 생성자의 인자로 사용 가능 주요 메소드 가장 많이 사용하는 Integer 클래스의 주요 메소드 표 6.3 메소드 staticintbitcount(inti) float floatvalue() intintvalue() long longvalue() short shortvalue() staticintparseint(string s) staticintparseint(string s, intradix) static Sting tobinarystring(inti) static Sting tohexstring(inti) static Sting tooctalstring(inti) static Sting tostring(inti) 설명 이진수 표현에서 1을 개수를 반환 float타입으로 변환된 값 반환 int타입으로 변환된 값 반환 long 타입으로 변환된 값 반환 short 타입으로 변환된 값 반환 스트링을10진 정수로 변환된 값 반환 스트링을 지정된진법의 정수로 변환된 값 반환 이진수 표현으로 변환된 스트링 반환 16진수 표현으로 변환된 스트링 반환 8진수 표현으로 변환된 스트링 반환 정수를 스트링으로 변환하여 반환 Wrapper 활용 -Wrapper 객체로부터 기본 데이터 타입 알아내기 -문자열을 기본 데이터 타입으로 변환

22 -기본 데이터 타입을 문자열로 변환 -예제 6-2 : Wrapper 클래스 활용 다음은 Wrapper 클래스를 활용하는 예이다. 다음 프로그램의 결과는 무엇인가? 박싱과 언박싱 -박싱(boxing) 기본 데이터 타입을 Wrapper 클래스로 변환하는 것 -언박싱(unboxing) 반대의 경우를 언박싱이라고 한다 Auto boxing & unboxing -JDK 5.0 이상부터 지원 -Auto boxing

23 기본 데이터 타입을 자동으로 Wrapper 클래스로 변환 -Auto unboxing Wrapper 클래스를 자동으로 기본 데이터 타입으로 변환 -예제 6-3 : 박싱 언박싱의 예 다음 코드에 대한 결과는 무엇인가? String의 생성과 특징 -String - java.lang.string String 클래스는 하나의 스트링만 표현 -String 생성자 표 6.4 생성자 설명 String() String(byte[] bytes) String(String original) String(StringBuffer buffer) 빈스트링 객체 생성 플랫폼의 기본 문자집합을 이용하여 바이트배열을 디코딩하 여스트링 객체 생성 인자로 주어진 스트링과 똑같은 스트링 객체를 생성 스트링 버퍼에 포함된 일련의 문자들을 나타내는 스트링 객 체 생성

24 스트링 리터럴과 new String() -스트링 생성 단순 리터럴로 생성, String s = "Hello"; JVM이 리터럴 관리, 응용프로그램 내에서 공유됨 String 객체로 생성, String t = new String("Hello"); 힙에 String 객체 생성 스트링 객체의 주요 특징 -스트링 객체는 수정 불가능 -==과 equals() 두 스트링을 비교할 때 반드시 equals()를 사용하여야 함 equals()는 내용을 비교하기 때문 주요 메소드 표 6.5 메소드 charcharat(int index) 설명 지정된 인덱스에 있는 문자값을 반환 intindexof(intch) ch 문자가 있는 인덱스 리턴. 없으면 -1리턴 fromindex위치부터 끝까지 문자 ch 탐색. 인덱스 리턴. 없 inindexof(intch, intfromindex) 으면 -1리턴 String concat(string str) 지정된 스트링을 현재 스트링 뒤에 덧붙인 스트링 반환 boolean contains(charsequence s) 지정된일련의 문자들을 포함하고 있으면 true 반환 intlength() 스트링의 길이 반환 String replace(charsequece target지정하는 일련의 문자들을 replacement가 지정하는 target, Charsequence 문자들로 변경한 스트링 반환 replacement)

25 String[] split(string regex) String substring(intbeginindex) String tolowercase() String touppercase() String trim() 정규식에 일치하는 부분을 중심으로 스트링 분리하여 스트 링 배열로 반환 지정된 인덱스부터 시작하는 서브 스트링 반환 스트링을 소문자로 변경한 스트링 반환 스트링을 대문자로 변경한 스트링 반환 스트링 앞뒤의 공백문자들을 제거한 스트링 반환 문자열 비교 -int compareto(string anotherstring) 문자열이 같으면 0을 리턴 비교 연산자 ==는 레퍼런스를 비교하므로 문자열 비교에는 사용할 수 없다 문자열 연결 -String concat(string str) 자바에서 스트링 연결 연산자 + 지원 + 연산에서 문자열이 인자로 포함되어 있으면 산술 연산이 아닌 문자열 연결 연산으로 간주. -객체가 문자열 연결 연산에 포함되어 있는 경우 tostring() 메소드를 호출하여 객체를 문자열로 변환한 후 문자열 연결 -기본 데이터 타입 그대로 문자열로 변환된 후에 문자열 연결 -String 클래스의 concat(string str) 메소드를 이용하여 스트링 연결 -기존 String 객체에 연결되지 않고 새로운 스트링 객체를 생성하여 리턴

26 concat()은 새로운 문자열을 생성 문자열 내의 공백 제거, 문자열의 각 문자 접근 -공백 제거 String trim() 스트링 앞 뒤 공백 문자(tab, enter, space) 제거한 스트링 리턴 -문자열의 문자 char charat(int index) 스트링에 포함된 각 문자 접근 -예제 6-4 : String 클래스 메소드 활용 String 클래스의 다양한 메소드를 활용하는 예를 보여라

27 -예제 실행 과정 StringBuffer 클래스 -java.lang.stringbuffer 스트링과 달리 객체 생성 후 스트링 값 변경 가능 append와 insert 메소드를 통해 스트링 조작 StringBuffer 객체의 크기는 스트링 길이에 따라 가변적 -생성자 표 6.6 생성자 설명 StringBuffer() 문자를 포함하고 있지 않고 초기 크기가 16인 스트링 버퍼 생성 StringBuffer(charSequenceseq)seq가지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성 StringBuffer(int capacity) 문자를 포함하고 있지 않고 지정된초기 크기를 갖는 스트링 버퍼 생성 StringBuffer(String str) 지정된 스트링으로 초기화된 스트링 버퍼 생성 주요 메소드 메소드 표 6.7 설명 StringBuffer append(string str) 지정된 스트링을스트링 버퍼에 덧붙인다

28 StringBuffer append(stringbuffersb) int capacity() StringBuffer delete(int start, int end) StringBuffer insert(int offset, String str) StringBuffer replace(int start, int end, String str) StringBuffer reverse() voidsetlength() 지정된스트링 버퍼를 스트링 버퍼에 덧붙인다. 현재 스트링 버퍼의 크기 반환 지정된서브 스트링을스트링 버퍼에서 제거 지정된스트링을스트링 버퍼의 특정 위치에 삽입 스트링버퍼 내의 서브 스트링을 지정된 스트링으 로 대치 스트링 버퍼 내의 문자들을 반대 순서로 변경 스트링버퍼 내 저장된 문자열 길이를 설정. 현재 길이보다 큰 경우 널 문자로 채우며 작은 경우는 문자열이 잘린다 StringBuffer의 메소드 활용 예 -예제 6-5 : StringBuffer 클래스 메소드 활용 StringBuffer 클래스의 메소드를 이용하여 문자열을 조작하는 예를 보여라

29 StringTokenizer 클래스 -java.util.stringtokenizer 하나의 스트링을 구분자로 분리하여 토큰 형태로 파싱 스트링을 구분할 때 사용되는 문자들을 구분 문자(delimeter)라고 함 -위의 예에서 & 가 구분 문자 -토큰(token) 구분 문자로 분리된 스트링 -String 클래스의 split 메소드를 이용하여 동일한 구현 가능 생성자와 주요 메소드 -생성자 표 6.8 생성자 설명 StringTokenizer(String str) StringTokenizer(String str, String delim) StringTokenizer(String str, String delim, booleanreturndelims) 지정된 스트링으로 초기화된 스트링토크나이저 생성 지정된 스트링과 구분 문자로 초기화된 스트링토 크나이저 생성 지정된 스트링과 구분 문자로 초기화된 스트링토 크나이저 생성. returndelims가 true이면 구분 문자로 지정된 문자도 분리된 토큰에 포함된다

30 -주요 메소드 메소드 intcounttokens() booleanhasmoretokens() String nexttoken() StringnextToken(String delim) 표 6.9 설명 스트링에남아 토큰 수 반환 스트링에 토큰이 남아 있으면 true 반환 다음 토큰 반환 지정된분리자에 대한 다음 토큰 반환 StringTokenizer 객체 생성과 문자열 파싱 -예제 6-6 : StringTokenizer 클래스 메소드 활용 홍길동/장화/홍련/콩쥐/팥쥐 문자열을 / 를 구분 문자로 하여 토큰을 분리하여 각 토큰을 출력하라

31 Math 클래스 -java.lang.math 기본적인 산술 연산을 수행하는 메소드 제공 모든 멤버 메소드는 static으로 정의됨 객체를 만들어서 사용할 필요 없음 주요 메소드 double 타입에 대한 주요 메소드 메소드 static doubleabs(double a) static double cos(double a) static double sin(double a) static double tan(double a) static double exp(double a) static double ceil(double a) static double floor(double a) 표 6.10 설명 절대값 반환 cosine 값 반환 sine 값 반환 tangent값 반환 값 반환 지정된실수보다 크거나 같은 수 중에서 가장 작은 정수를 실수 타입으로 반환 지정된실수보다 작거나 같은 수 중에서 가장 큰 정 수를 실수 타입으로 반환 static double max(double a, double b)두 수 중에서 큰 수 반환 static double min(double a, double b) 두 수 중에서 작은 수 반환 static double random() static double rint(double a) static double round(double a) static double sqrt(double a) 0.0보다 크거나 같고 1.0보다 작은 임의의 수 반환 지정된 실수와 가장근접한 정수를 실수 타입으로 반환 지정된 실수를 소수 첫째 자리에서 반올림한 정수 를 실수 타입으로 반환 제곱근을 반환 Math 클래스를 활용한 난수 발생 -난수 발생 static double random() 0.0 이상 1.0 미만의 임의의 double 값을 반환

32 위의 코드에서 round() 메소드는 Math. round(55.3)은 55.0을 리턴하며, Math. round(55.9)는 56.0을 리턴 -java.util의 Random 클래스를 이용하면 좀 더 다양한 형태로 난수 발생 가능 -예제 6-7 : Math 클래스 메소드 활용 Math 클래스의 다양한 메소드 활용 예를 보여라. 제7장 입출력 스트림 7.1 스트림 스트림이란? 데이터의 흐름 입출력 스트림은 입출력 장치와 프로그램 사이의 일련의 데이터 흐름을 의미 스트림을 통해 흘러가는 데이터의 기본 단위는 바이트 그림 7.1 -스트림의 특징 스트림은 단방향이다. 방향에 따라 입력 스트림과 출력 스트림으로 나뉜다

33 스트림은 선입선출, 즉 FIFO 구조이다. 스트림은 연결될 수 있다. 스트림은 지연될 수 있다. 입력 스트림이 흐르는 통로인 파이프가 비어 있다면, 컴퓨터는 읽어갈 데이터가 없으므 로 기다리게 되고, 반대로 출력 스트림이 흐르는 통로인 파이프에 데이터가 꽉 차 있다 면 컴퓨터는 빈 공간이 생길 때까지 기다린다. 그림 바이트 스트림 클래스 계층 구조 문자 스트림 클래스 계층 구조

34 7.1.4 바이트 스트림 -바이트 스트림 바이트 단위의 바이너리 값을 읽고 쓰는 스트림 모든 바이트 스트림은 InputStream과 OutputStream의 서브 클래스 -바이트 스트림 클래스 InputStream/OutputStream java.io 패키지에 포함 추상 클래스로서 바이트 입출력 스트림을 나타내는 모든 클래스의 수퍼 클래스 FileInputStream/FileOutputStream 파일로부터 바이트 데이터를 읽거나 파일로 저장하는 클래스 바이너리 데이터인 raw 데이터의 입출력. DataInputStream/DataOutputStream 자바의 기본 데이터 타입의 값을 바이너리 값으로 입출력 String을 바이너리 값으로 입출력 FileInputStream 사용 예 -c:\test.txt 파일로부터 바이트 단위로 읽을 수 있는 바이트 스트림 생성 -파일 전체를 읽어 화면에 출력 -예제 7-1 : System.ini 파일을 읽어 화면에 출력하기 FileInputStream을 이용하여 사용자 컴퓨터의 windows 디렉터리에 있는 System.ini 파 일을 읽고 화면에 출력하라. System.ini 파일은 텍스트 파일이다

35 7.1.6 FileOutputStream을 이용한 파일 출력 스트림 -c:\test.out 파일에 바이트 단위로 쓸 수 있는 바이트 스트림을 생성 코드 -파일에 데이터 기록 -c:\test.out 파일에 기록된 내용 -예제 7-2 : FileOutputStream과 DataOutputStream을 이용한 파일 출력 DataOutputStream을 이용하여 자바 기본 데이터 타입 값을 tmp.out 파일에 저장하고 파 일의 내부를 살펴보라. -예제 실행 결과 - 출력 파일의 내용 출력된 tmp.out 파일은 텍스트 파일이 아니므로 바이너리로 파일을 열어 16진수 형식으 로 보면 다음과 같다. -예제 7-3 : FileInputStream과 DataInputStream을 이용하여 파일로부터 기본 데이터 타

36 입 읽기 DataInputStream을 이용하여 앞의 예제에서 만든 tmp.out 파일을 읽어 값을 화면에 출 력하고 앞 예제에서 기록된 대로 읽혀졌는지 확인하라 문자 스트림 -문자 스트림 유니 코드로 된 문자 단위의 데이터가 흐르는 스트림 로컬 문자 집합으로 데이터를 자동 변환 모든 문자 스트림은 Reader과 Writer의 서브 클래스이다. -바이트 스트림과 차이점 바이트 스트림은 이미지 파일, 동영상 파일 등과 같은 바이너리 데이터 스트림 처리에 적합 문자 스트림은 문자 데이터 스트림만 처리할 수 있다. -문자 입력 스트림의 종류 Reader, InputStreamReader, FileReader 등 -문자 출력 스트림의 종류 Writer, OutputStreamWriter, FileWriter 등 -문자 스트림의 종류 Reader/Writer java.io 패키지에 포함 추상 클래스로 문자 입출력 스트림을 나타내는 모든 클래스의 수퍼 클래스 InputStreamReader/OutputStreamWriter 바이트 스트림과 문자 스트림을 연결시켜주는 브릿지 역할 지정된 문자집합을 이용하여 입력 스트림에서 바이트를 읽어 문자로 인코드 또는 문자 를 바이트로 디코드하여 출력 스트림으로 출력 FileReader/FileWriter 텍스트 파일로 문자 데이터를 입출력 한다

37 FileInputStream과 FileOutputStream을 이용하여 바이트 스트림을 문자 스트림으로 변환 -예제 7-4 : System.ini 파일 읽기 FileReader를 이용하여 사용자 컴퓨터의 windows 디렉터리에 있는 System.ini 파일을 읽고 화면에 출력하라. System.ini 파일은 텍스트 파일이다. -예제 7-5 : 문자 집합 지정이 잘못된 한글 파일 읽기 InputStreamReader의 문자 집합을 US-ASCII로 지정하여 한글 파일을 읽고 출력하라. 그림

38 -예제 7-6 : 한글 파일 읽기 예제 7-5의 인코딩을 수정하여 정상적으로 한글 파일을 읽고 출력하라 FileWriter 사용 예 -c:\test.txt 파일에 문자 출력 스트림을 생성하는 코드 -파일에 문자 출력 -예제 7-7 : 키보드 입력을 파일로 저장하기 키보드에서 입력받은 데이터를 c:\temp\test.txt 파일에 저장하는 코드를 작성하라

39 7.1.9 버퍼 입출력 스트림과 버퍼 입출력의 특징 -버퍼 입출력(Buffered I/O)이란? 버퍼 입출력은 입출력 장치와 프로그램 사이에 버퍼를 두어 효율적으로 입출력 처리 -버퍼 입출력의 필요성 프로그램의 실행 속도와 입출력 장치의 데이타 처리 속도의 불일치에 대해 대처하기 쉬움 그림 버퍼 스트림의 종류 -바이트 스트림 바이트 단위의 바이너리 데이타를 처리하는 버퍼 스트림 BufferedInputStream와 BufferedOutputStream -문자 스트림 유니코드의 문자 데이타만을 처리하는 버퍼 스트림 BufferedReader와 BufferedWriter -BufferedOutputStream 사용 예 20바이트 크기의 버퍼를 사용하고, System.out 표준 스트림에 출력하는 버퍼 스트림 생성 파일 전체를 읽어 화면에 출력 버퍼에 남아 있는 데이터 출력

40 -예제 7-8 : 버퍼 출력 이용 예제 버퍼 크기가 5인 출력 버퍼 스트림을 표준 출력 스트림과 연결하고 키보드에서 입력받은 문자를 출력 스트림에 출력하고, 입력의 끝을 알리면 버퍼에 남아 있는 모든 문자를 출력하 는 프로그램을 작성하라 File 클래스 -File 클래스의 특징 파일의 경로명을 다루는 클래스 File 클래스는 파일과 디렉터리 경로명의 추상적 표현 파일 클래스의 객체는 파일 또는 디렉터리를 다룸 File 클래스는 파일의 삭제, 디렉터리 생성 등과 같은 파일 관리 파일의 내용 읽고 쓰기 - 파일 스트림 이용 File 객체와 스트림을 연결하여 파일 접근 File 클래스 생성자와 주요 메소드 표

41 File 클래스 사용 예 -c:\test.txt 파일을 나타내는 File 객체를 생성 -파일 관리 파일 타입 구분하기, isfile()과 isdirectory() 디렉터리에 있는 파일 리스트 얻기, list() -예제 7-9 : File 클래스 활용한 파일 관리 File 클래스를 이용하여 파일의 타입을 알아내고, 디렉터리에 있는 파일들을 나열하며, 디 렉터리 이름을 변경하는 프로그램을 작성해보자

42 -예제 7-10 : 텍스트 파일 복사 문자 스트림을 이용하여 텍스트 파일을 복사하는 프로그램을 작성하라 그림 7.5 -예제 7-11 : 바이너리 파일 복사 바이트 스트림을 이용하여 바이너리 파일을 복사하는 프로그램을 작성하라 그림 7.6 제8장 제네릭과 컬렉션 8.1 컬렉션(collection)의 개념

43 8.1.1 컬렉션 -컬렉션은 요소(element)라고 불리는 가변 개수의 객체들의 모음 객체들의 컨테이너라고도 불림 -컬렉션 클래스 사례 Vector, ArrayList, Hashtable, LinkedList, HashMap, HashSet, Stack -java.util 패키지에서 제공 -다양한 객체들을 삽입, 삭제, 검색 등 관리하는데 사용됨 배열과 컬렉션의 개념 차이 그림 컬렉션을 위한 인터페이스와 클래스 그림 Vector 클래스 -Vector의 특성 java.util.vector 여러 객체들을 삽입, 삭제, 검색하는 컨테이너 클래스

44 배열의 길이 제한 단점 극복 원소의 개수가 넘쳐나면 자동으로 늘어나는 가변 길이 Vector에 삽입 가능한 것 객체만 가능 null도 삽입 가능 기본 데이터 타입은 불가능 -Wrapper 객체로 만들어 삽입 가능 Vector에 객체 삽입 벡터의 맨 뒤에 객체 추가 : 공간이 모자라면 자동 늘림 벡터 중간에 객체 삽입 : 삽입된 뒤의 객체는 뒤로 하나씩 이동 Vector에서 객체 삭제 임의의 위치에 있는 객체 삭제 가능 : 객체 삭제 후 하나씩 앞으로 자동 이동 Vector 객체의 내부 구성 그림 Vector 클래스의 주요 메소드 표 8.1 메소드 설명 boolean add(e e) 벡터의 맨 뒤에 요소 추가 void add(int index, E element) 지정된 인덱스에 지정된 객체를 삽입 int capacity() 벡터의 현재 용량 반환 booleanaddall(collection<? extends E> c) c가 지정하는 컬렉션의 모든 요소를 벡터의 맨 뒤에 추가 void clear() 벡터의 모든 요소 삭제 boolean contains(object o) 벡터가 지정된 객체를 포함하고 있으면 true 반환 E elementat(int index) 지정된 인덱스의 요소 반환 E get(int index) 지정된 인덱스의 요소 반환 intindexof(object o) 지정된 객체와 같은 첫 번째 요소의 인덱스 반환. 없으면 -1 반환 booleanisempty() 벡터가 비어있으면 true 반환 E remove(int index) 지정된 인덱스의 요소 삭제

45 boolean remove(object o) void removeallelements() int size() Object[] toarray() 지정된 객체와 같은 첫 번째 요소를 벡터에서 삭제 벡터의 모든 요소를 삭제하고 크기를 0으로 만듬 벡터가 포함하는 요소의 개수 반환 벡터의 모든 요소를 포함하는 배열을 반환 그림 컬렉션과 자동 박싱/언박싱 -JDK 1.5 이전 버전 Wrapper 클래스를 이용하여 기본 타입을 객체로 만들어 사용 컬렉션으로부터 요소를 얻어올 때도 해당 타입의 값을 얻어오는 메소드를 호출

46 -JDK 1.5부터 자동 박싱/언박싱의 기능 추가 -예제 8-1 : 벡터 내의 모든 요소 객체 출력하기 다음 코드에 대한 결과는 무엇인가? -예제 8-2 : 벡터에 있는 객체 중에서 정수 값만 모두 더하기 벡터에 있는 객체 중에서 정수 값만 모두 더하는 프로그램을 작성해보라

47 8.1.8 ArrayList 클래스 -ArrayList의 특성 java.util.arraylist 가변 크기 배열을 구현한 클래스 ArrayList에 삽입 가능한 것 객체만 가능 기본 데이타 타입은 불가능 Wrapper 객체로 만들어 삽입 가능 null도 삽입 가능 ArrayList에 객체 삽입 리스트의 맨 뒤에 객체 추가 : 공간이 모자라면 자동 늘림 리스트의 중간에 객체 삽입 : 삽입된 뒤의 객체는 뒤로 하나씩 이동 ArrayList 에서 객체 삭제 임의의 위치에 있는 객체 삭제 가능 : 객체 삭제 후 하나씩 앞으로 이동 벡터와 거의 유사하며 자동으로 스레드 동기화를 지원하지 않는 점이 가장 큰 차이 다수의 스레드가 동시에 ArrayList에 접근할 때 ArrayList는 동기화시키지 않음 ArrayList에 접근하는 곧에서 스레드 동기화를 수행하여야 함 ArrayList 객체의 내부 구성 그림 ArrayList 클래스의 주요 메소드 메소드 boolean add(e e) void add(int index, E element) 표 8.2 설명 ArrayList의 맨 뒤에 요소 추가 지정된 인덱스에 지정된 객체를 삽입 booleanaddall(collection<? E> c) void clear() boolean contains(object o) extendsc가 지정하는 컬렉션의 모든 요소를 ArrayList의 맨 뒤에 추가 ArrayList의 모든 요소 삭제 ArrayList가 지정된 객체를 포함하고 있으면 true 반환

48 E elementat(int index) E get(int index) int indexof(object o) boolean isempty() E remove(int index) boolean remove(object o) int size() Object[] toarray() 지정된 인덱스의 요소 반환 지정된 인덱스의 요소 반환 지정된 객체와 같은 첫 번째 요소의 인덱스 반환. 없으면 -1 반환 ArrayList가 비어있으면 true 반환 지정된 인덱스의 요소 삭제 지정된 객체와 같은 첫 번째 요소를 ArrayList에서 삭제 ArrayList가 포함하는 요소의 개수 반환 ArrayList의 모든 요소를 포함하는 배열을 반환 그림

49 -예제 8-3 : ArrayList 내의 모든 요소 객체 출력하기 다음 코드에 대한 결과는 무엇인가? Hashtable 클래스 -Hashtable의 특성 java.util.hashtable 삽입 및 검색이 빠른 특징 키(key)와 값(value) 사용 키와 값이 한쌍으로 삽입됨 키는 해쉬 테이블에 삽입되는 위치를 결정하는데 내부적으로 이용 값을 검색하기 위해서는 키를 반드시 이용함 키, 값 모두 객체만이 이용됨. 기본 데이터 타입은 사용할 수 없음 -Hashtable에 삽입, 검색하는 예 Hashtable의 내부 구성과 put(), get() 메소드 그림

50 Hashtable 클래스의 주요 메소드 표 8.3 메소드 void clear() boolean contains(object o) booleancontainskey(object key) booleancontainsvalue(object value) Enumeration<V> elements() V get(object key) booleanisempty() Enumeration<K> keys() V put(k key, V value) V remove(object key) int size() 설명 Hashtable의 모든 키 삭제 Hashtable의 어떤 키가 지정된 객체에 매핑되면 true 반환 Hashtable이 지정된 키를 포함하고 있으면 true 반환 Hashtable이 하나 이상의 키를 지정된 값에 매핑시킬 수 있으면 true 반환 Hashtable의 모든 값의 enumeration 반환 지정된 키에 맵핑되는 값을 반환하거나 맵핑되는 값이 없 으면 null을 반환 Hashtable에 키가 없으면 true 반환 Hashtable의 모든 키의 enumeration 반환 Hashtable에 key를 value에 매핑 지정된 키와 이에 매핑된 모든 값들을 Hashtable에서 삭제 Hashtable이 포함하는 키의 개수 반환 해쉬테이블의 조작 사례

51 그림 8.8 -예제 8-4 : Hashtable 내의 모든 값 알아내기 다음 코드에 대한 결과는 무엇인가? -예제 8-5 : Hashtable 검색 Scanner 클래스를 이용하여 이름, 전화번호를 입력받아 이름을 키로 하여 해시테이블에 저장하고 이름으로 전화번호를 검색하는 프로그램을 작성하라. 그림

52 LinkedList 클래스 -LinkedList의 특성 java.util.linkedlist List 인터페이스를 구현한 클래스 Vector, ArrayList 클래스와 매우 유사 요소 객체들은 양방향으로 연결되어 관리됨 요소 객체는 맨 앞, 맨 뒤에 추가 가능 요소 객체는 인덱스를 이용하여 중간에 삽입 가능 맨 앞이나 맨 뒤에 요소를 추가하거나 삭제할 수 있어 스택이나 큐로 사용 가능 LinkedList의 내부 구성과 put(), get() 메소드 그림 Iterator 활용 -Iterator 인터페이스 Vector, ArrayList, LinkedList와 같은 리스트 자료구조에서 요소를 순차적으로 검색할 때 Iterator 인터페이스를 사용 iterator() 메소드를 호출하면 Iterator 객체를 반환 Iterator 객체는 검색한 위치를 기억하고 있어 인덱스 없이 순차적 검색이 가능 Iterator 인터페이스 메소드 표 8.4 메소드 설명 booleanhasnext() 다음 반복에서 사용될 요소가 있으면 true 반환 E next() 다음 요소 반환 void remove() 마지막으로 반환된 요소를 제거

53 -예제 8-6 : Iterator를 이용하여 ArrayList 내의 모든 요소 객체 출력하기 다음 코드에 대한 결과는 무엇인가? Collections 클래스 활용 -Collections 클래스 java.util 패키지에 포함 컬렉션에 대해 연산을 수행하고 결과로 컬렉션을 반환 주요 메소드 컬렉션에 포함된 요소들을 소팅하는 sort() 메소드 요소의 순서를 반대로 하는 reverse() 메소드 요소들의 최대, 최소값을 찾아내는 max(), min() 메소드 특정 값을 검색하는 binarysearch() 메소드 모두 static 메소드 -예제 8-7 : Collections 클래스의 활용 Collections를 사용한 다음 코드에 대한 결과는 무엇인가?

54 JDK 1.5 이전 자바의 컬렉션 문제점 -삽입되는 원소 객체는 사실 모두 Object 타입이어야 함 int, double 등의 기본 타입 데이타는 직접 삽입될 수 없음 -객체를 컬렉션에서 꺼내올 때 다운 캐스팅 필요 Object 타입에서 실제 클래스 타입으로의 다운 캐스팅 불편 JDK 1.5 이전 버전의 Vector 클래스의 예 -JDK 1.5 이전 버전의 Vector 클래스 예제 제네릭 도입 이전에는 Object 클래스를 이용하여 모든 객체들을 참조 JDK 1.5이전 Vector는 Object를 요소로 받아 들임 3번 행의 다운 캐스팅이 반드시 필요하며 이 부분이 문제를 발생시킨다. 컴파일러는 elementat이 Object 타입을 반환할 것이라는 밖에는 알지 못하므로 프로그래 머가 명시적으로 타입을 지정하여야 한다. 규모가 큰 프로그램의 작성 시 프로그래머가 타입을 실수로 잘못 지정하는 경우에는 런타 임에 ClassCastException이 발생 제네릭을 이용하면 컴파일러가 요소의 타입을 알 수 있어 타입 불일치를 방지 제네릭의 기본 개념 -제네릭 디자인 패턴의 매개 변수화된 타입과 메소드(parameterized type and method)를 의미 JDK 1.5부터 도입 컬렉션은 다양한 타입의 객체들을 하나로 모아서 관리하므로 제네릭으로 정의되어 있음

55 제네릭 Vector를 설명하는 자바 API 그림 제네릭 컬렉션 사용하기 -제네릭 Vector 클래스 벡터는 일반 배열과는 달리 크기가 가변적인 객체의 배열을 구현 배열의 원소는 객체만 허용 기본 데이터 타입은 원소가 될 수 없음 add, remove, indexof, size, Iterator 등 메소드 이용하여 관리 -제네릭 Vector 사용하기 제네릭 Vector의 생성 제네릭 벡터에 요소 삽입 제네릭 벡터에서 요소 얻기 생성할 때 지정한 타입이 아닌 타입은 삽입 불가

56 -예제 8-8 : 제네릭 Vector 사용하기 다음 코드에 대한 결과는 무엇인가? -예제 8-9 : 제네릭 타입을 두 개 가진 제네릭 Hashtable 사용하기 다음 코드에 대한 결과는 무엇인가? 제네릭 클래스와 인터페이스 선언

57 -제네릭 클래스 작성 예 일반화된 타입(generic type) 매개 변수 T를 가진 MyClass 작성된 MyClass 타입 객체 생성 예 타입 매개 변수 -타입 매개 변수 < 과 > 사이의 문자로 표현 하나의 대문자를 타입 매개 변수로 사용 많이 사용하는 타입 매개 변수 문자 E : Element를 의미하며 컬렉션에서 요소를 표시할 때 많이 사용한다. T : Type을 의미한다. V : Value를 의미한다. K : Key를 의미 타입 매개변수가 나타내는 타입의 객체 생성 불가 ex) T a = new T(); 타입 매개 변수는 나중에 실제 타입으로 대체 된다. 어떤 문자도 매개 변수로 사용될 수 있다 제네릭 클래스, 인터페이스 사용 -변수 선언 제네릭 클래스 또는 인터페이스 타입 변수를 선언할 때는 타입 매개 변수에 실제 타입을 기입 -객체 생성 제네릭 클래스 객체를 생성할 때도 타입 매개 변수에 실제 타입을 기입

58 -예제 8-10 : 스택 스택 자료 구조를 제네릭 클래스로 선언하고, String과 Integer형 스택을 사용하는 예를 보여라 제네릭과 배열 -제네릭에서 배열의 제한 -제네릭 클래스 또는 인터페이스의 배열을 허용하지 않음 -타입 매개 변수가 나타내는 타입의 배열을 생성하는 것도 허용되지 않음 앞 예제에서는 Object 타입으로 배열 생성 후 실제 사용할 때 타입 캐스팅 -타입 매개변수가 나타내는 타입의 배열 선언은 허용 제네릭 메소드 -제네릭 메소드 정의 메소드에서도 타입 매개 변수를 이용하여 제네릭 메소드 정의 가능

59 제네릭 메소드를 호출할 때는 컴파일러가 메소드의 인자를 통해 이미 타입을 알고 있으므 로 타입을 명시하지 않아도 됨 sa는 String[], gss는 GStack<String> 타입이므로 T를 String으로 유추 -예제 8-11 : 스택의 내용을 반대로 만드는 제네릭 메소드 만들기 예제 8-10의 GStack을 이용하여 주어진 스택의 내용을 반대로 만드는 제네릭 메소드 reverse()를 작성하라 제네릭의 장점 -컬렉션과 같은 컨테이너 클래스에 유연성을 해치지 않으며 type-awareness를 첨가 -메소드에 type-awareness 첨가 -컴파일 시에 타입이 결정되어 보다 안전한 프로그래밍 가능 -개발 시 다운캐스팅(타입 캐스팅) 절차 불필요 -런타임 타입 충돌 문제 방지 -ClassCastException 방지 제9장 자바의 GUI, AWT와 Swing 9.1 자바의 GUI(Graphic User Interface) 1. GUI 목적 -GUI 목적 그래픽 이용, 사용자에게 이해하기 쉬운 모양으로 정보 제공 사용자는 마우스나 키보드를 이용하여 쉽게 입력 -자바 GUI 특징 강력한 GUI 컴포넌트 제공 쉬운 GUI 프로그래밍

60 -자바의 GUI 프로그래밍 방법 GUI 컴포넌트 이용 AWT 패키지와 Swing 패키지 AWT -java.awt 패키지 Swing -javax.swing 패키지 2. 스윙 컴포넌트 예시 그림 9.1 그림

61 그림 9.3 그림

62 3. Swing 으로 만든 GUI 프로그램 샘플 마우스를 올리면 컴포넌트 타입(예:JButton)을 표시 그림 AWT와 Swing 패키지 -AWT(Abstract Windowing Toolkit) 자바가 처음 나왔을 때 함께 배포된 GUI 라이브러리 GUI 클래스 패키지 - java.awt 패키지 Native 운영체제와 응용프로그램 사이의 연결 라이브러리 중량 컴포넌트(Heavy weight components) -AWT 컴포넌트는 native(peer)에 의존적임 -OS의 도움을 받아야 화면에 출력되며 동작하는 컴포넌트. 운영체제에 많은 부담. 오 히려 처리 속도는 빠름 -Swing(스윙) AWT 기술을 기반으로 작성된 자바 라이브러리 모든 AWT 기능 + 추가된 풍부하고 화려한 고급 컴포넌트 AWT 컴포넌트에 J자가 덧붙여진 이름의 클래스 J 자로 시작하는 클래스 순수한 자바 언어로 구현, JDK 1.1 부터 - javax.swing 패키지 Swing 컴포넌트는 native(peer)에 의존하지 않음 경량 컴포넌트(Light weight components) 5. GUI 라이브러리 계층 구조

63 그림 Swing 클래스의 특징 -클래스명 J 자로 시작 -화려하고 다양한 컴포넌트로 쉽게 GUI 프로그래밍 -스윙 컴포넌트는 2 가지 유형 JComponent는 상속받는 클래스 AWT의 Container를 상속받는 클래스 JApplet, JDialog, JFrame 등 -JComponent 매우 중요한 추상 클래스 스윙 컴포넌트의 공통적인 속성 구현 new JComponent() 인스턴스를 생성할 수 없음 AWT의 Component를 상속받음 7. 컨테이너와 컴포넌트 -컨테이너 다른 컴포넌트를 포함할 수 있는 GUI 컴포넌트 java.awt.container를 상속받아야 함 컨테이너 객체는 다른 컨테이너에 포함될 수 있는 컴포넌트 AWT 컨테이너 -Panel, Frame, Applet, Dialog, Window Swing 컨테이너 -JPanel JFrame, JApplet, JDialog, JWindow

64 -최상위 컨테이너 다른 컨테이너에 속하지 않고도 독립적으로 존재하고 화면에 출력가능한 컨테이너 JFrame, JDialog, JApplet -컴포넌트 컨테이너에 포함되어야 비로소 화면에 출력될 수 있는 GUI 객체 모든 GUI 컴포넌트의 최상위 클래스 java.awt.component 스윙 컴포넌트의 최상위 클래스 javax.swing.jcomponent 8. 컨테이너와 컴포넌트의 포함관계 그림 스윙 GUI 프로그램 만들기 1. 프레임 만들기 2. 프레임에 스윙 컴포넌트 붙이기 3. main() 함수 만들기 -스윙 프로그램을 작성하기 위한 import문 import java.awt.*; // 그래픽 처리를 위한 클래스들의 경로명 import java.awt.event.*; // AWT 이벤트 사용을 위한 경로명 import javax.swing.*; // 스윙 컴포넌트 클래스들의 경로명 import javax.swing.event.*; // 스윙 이벤트를 위한 경로명 10. 스윙 프레임 -모든 스윙 컴포넌트를 담는 최상위 GUI 컨테이너 JFrame -하나의 스윙 응용프로그램에 하나의 프레임 존재 -프레임이 닫히면 프레임 내의 모든 컴포넌트도 사멸

65 화면에서 사라짐 -스윙 프레임(JFrame) 기본 구성 그림 프레임 만들기 그림

66 12. main()의 위치 그림 프레임에 컴포넌트 붙이기 -타이틀 - 프레임 영역의 타이틀 바에 부착 -메뉴 - 메뉴바 공간, 14장에서 다룸 -스윙 컴포넌트 - 컨텐트팬(Content Pane)에 부착 컨텐트팬 알아내기 컨텐트팬에 컴포넌트 달기 컨텐트팬 변경

67 -예제 9-1 : 컴포넌트를 부착한 프레임 예 그림 스윙 응용프로그램의 종료 -프로그램에서 무조건 종료 언제 어디서나 프로그램 종료 -프레임 종료버튼(X) 클릭시 발생하는 현상 프레임을 종료하여 프레임 윈도우가 닫히게 됨. 화면에서 보이지 않게 됨 프로그램이 종료되지는 않음 -프레임 종료버튼 클릭시 프로그램이 종료 되게 하는 방법 프레임이 닫히면 자동으로 자바 프로그램도 함께 종료된다. 15. main() 메소드 종료 뒤에도 프레임이 살아 있는 이유? -main() 메소드를 실행하는 스레드 메인스레드(main 스레드) -스윙 프로그램의 생명 사이클

68 메인 스레드외에 다른 스레드가 생성되어 살아 있으면 메인 스레드가 종료되어도 자바 응 용프로그램은 종료되지 않음 -스윙 응용프로그램이 실행되면 자동으로 이벤트 처리 스레드가 보이지 않게 실행됨 메인 스레드가 종료해도 스윙 응용프로그램이 종료되지 않음 16. 컨테이너와 배치 개념 그림 배치 관리자 대표 유형 4 가지 -java.awt 패키지에 구현되어 있음 그림

69 18. 컨테이너와 배치관리자 -컨테이너의 디폴트 배치관리자 컨테이너는 생성시 디폴트 배치관리자 설정 표 9.1 AWT와 스윙의 컨테이너 디폴트 배치관리자 Window BorderLayout Frame, JFrame BorderLayout Dialog, JDialog BorderLayout Panel, JPanel FlowLayout Applet, JApplet FlowLayout -컨테이너에 새로운 배치관리자 설정 Container.setLayout(LayoutManager lm) lm을 Container의 새로운 배치관리자로 설정 19. FlowLayout -배치방법 컨테이너 공간 내에 왼쪽에서 오른쪽으로 배치 다시 위에서 아래로 순서대로 컴포넌트를 배치한다. 그림

70 -컨테이너의 크기가 변하면 재배치 그림 FlowLayout - 생성자와 속성 -생성자 FlowLayout() FlowLayout(int align) FlowLayout(int align, int hgap, int vgap) align : 컴포넌트의 정렬(5 가지중 많이 사용되는 3 가지) -FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER(디폴트) hgap : 좌우 두 컴포넌트 사이의 수평 간격, 픽셀 단위(디폴트 : 5) vgap : 상하 두 컴포넌트 사이의 수직 간격, 픽셀 단위(디폴트 : 5) 그림

71 -예제 9-2 : LEFT로 정렬되는 수평 간격이 30 픽셀, 수직 간격이 40 픽셀인 FlowLayout 사용 예 그림 BorderLayout -배치방법 컨테이너 공간을 5 구역으로 분할, 배치 East, West, South, North, Center 배치 방법 add(component comp, int index) -comp를 index의 공간에 배치 -index BorderLayout.EAST, BorderLayout.WEST, BorderLayout.SOUTH, BorderLayout.NORTH, BorderLayout.CENTER, 컨테이너의 크기가 변하면 재배치 그림 BorderLayout 생성자와 속성 -생성자 BorderLayout() BorderLayout(int hgap, int vgap) hgap : 좌우 두 컴포넌트 사이의 수평 간격, 픽셀 단위(디폴트 : 0)

72 vgap : 상하 두 컴포넌트 사이의 수직 간격, 픽셀 단위(디폴트 : 0) -BorderLayout의 사용예 그림 예제 9-3 : BorderLayout 사용 예 그림 GridLayout -배치방법

73 컨테이너 공간을 동일한 사각형 격자(그리드)로 분할하고 각 셀에 하나의 컴포넌트 배치 격자 구성은 생성자에서 행수와 열수로 지정 셀에 왼쪽에서 오른쪽으로, 다시 위에서 아래로 순서대로 배치 그림 9.21 컨테이너의 크기가 변하면 재배치 크기 재조정 24. GridLayout 생성자와 속성 -생성자 GridLayout() GridLayout(int rows, int cols) GridLayout(int rows, int cols, int hgap, int vgap) rows : 격자의 행수 (디폴트 : 1) cols : 격자의 열수 (디폴트 : 1) hgap : 좌우 두 컴포넌트 사이의 수평 간격, 픽셀 단위(디폴트 : 0) vgap : 상하 두 컴포넌트 사이의 수직 간격, 픽셀 단위(디폴트 : 0) rows x cols 만큼의 셀을 가진 격자로 컨테이너 공간을 분할, 배치 -예제 9-4 : GridLayout으로 입력 폼 만들기 그림

74 25. 배치관리자 없는 컨테이너 -배치관리자가 없는 컨테이너 개념 응용프로그램에서 컴포넌트의 절대 크기와 절대 위치를 스스로 결정 -용도 컴포넌트의 크기나 위치를 개발자 임의로 결정하고자 하는 경우 게임 프로그램과 같이 시간이나 마우스/키보드의 입력에 따라 컴포넌트들의 위치와 크기 가 수시로 변하는 경우 여러 컴포넌트들이 서로 겹치는 효과를 연출하고자 하는 경우 -컨테이너의 배치 관리자 제거 방법 Container.setLayout(null); -컴포넌트의 크기와 위치 설정 프로그램 내에서 이루어져야 함 컴포넌트들이 서로 겹치는 효과 연출 가능 다음 메소드 이용 컴포넌트 크기 설정 : Component.setSize(int width, int height); 컴포넌트 위치 설정 : Component.setLocation(int x, int y); 컴포넌트 위치와 크기 동시 설정 : Component.setBounds(int x, int y, int width, int height); -예제 9-5 : 배치관리자 없는 컨테이너에 컴포넌트 위치와 크기를 절대적으로 지정 그림

75 제10장 이벤트 처리 10.1 이벤트 기반 프로그래밍 1.이벤트 기반 프로그래밍 -이벤트 기반 프로그래밍(Event Driven Programming) 이벤트의 발생에 의해 프로그램 흐름이 결정되는 방식 이벤트가 발생하면 이벤트를 처리하는 루틴(이벤트 리스너)이 실행하는 방식 프로그램 내의 어떤 코드가 언제 실행될 지 아무도 모름, 이벤트의 발생에 의해 전적으 로 결정 반대되는 개념 : 배치 실행(batch programming) 프로그램의 개발자가 프로그램의 흐름을 결정하는 방식 -이벤트 사용자의 입력 : 마우스 드래그, 마우스 클릭, 키보드 누름 센서로부터의 입력 네트워크로부터 데이타 송수신 다른 응용프로그램이나 다른 스레드로부터의 메시지 -이벤트 기반 프로그램의 구조 프로그램에서 처리하고자 하는 이벤트의 이벤트 처리 리스너 구현 -이벤트 처리 순서 이벤트 발생(예 :마우스나 키보드의 움직임 혹은 입력) 이벤트 객체 생성 현재 발생한 이벤트에 대한 여러 정보를 가진 객체 이벤트 리스너 찾기 이벤트 리스너 호출 event 객체가 리스너에 전달됨 이벤트 리스너 실행 -이벤트의 실제 예 그림

76 자바의 이벤트 기반 GUI 응용프로그램 구성 그림 이벤트 객체 -이벤트 객체란? 이벤트가 발생하면 발생한 이벤트에 관한 정보를 가진 객체 이벤트 리스너에 전달됨 이벤트 리스에서 이벤트가 발생한 여러 상황을 파악할 수 있게 함 -이벤트 객체의 종류 그림

77 이벤트 객체에 포함된 정보 -이벤트 객체가 포함하는 정보 이벤트 종류 이벤트 소스 이벤트가 발생한 화면 좌표 이벤트가 발생한 컴포넌트 내 좌표 버튼이나 메뉴 아이템에 이벤트가 발생한 경우 버튼이나 메뉴 아이템의 문자열 클릭된 마우스 버튼 번호 마우스의 클릭 횟수 키가 눌러졌다면 키의 코드 값과 문자 값 체크박스, 라디오버튼 등과 같은 컴포넌트에 이벤트가 발생하였다면 체크 상태 -이벤트에 따라 조금씩 다른 정보 포함 ActionEvent 객체 : 액션 문자열 MouseEvent 객체 : 마우스의 위치 정보, 마우스 버튼, 함께 눌러진 키 정보 등 ItemEvent 객체 : 아이템의 체크 상태 -이벤트 소스 알아 내기 object EventObject.getSource() 발생한 이벤트의 소스 컴포넌트를 리턴한다. Object 타입으로 리턴하므로 캐스팅하여 사용하는 것을 추천한다. 모든 이벤트 객체에서 제공됨 이벤트 객체의 메소드 그림

78 이벤트 객체와 이벤트 소스 표 10.1 이벤트 객체 이벤트 소스 이벤트가 발생하는 경우 JButton 마우스로 버튼을 클릭하거나 키로 버튼을 선택한 경우 ActionEvent JList JMenuItem 리스트 아이템을 더블클릭하여 리스트 아이템을 선택한 경우 메뉴 아이템 선택을 선택한 경우 JTextField 텍스트 입력 중 <Enter> 키를 누른 경우 JCheckBox 체크박스의 선택 혹은 해제 ItemEvent JCheckBoxMenu 체크박스 메뉴 아이템이 선택 혹은해제 될 때 Item JList 리스트 아이템이 선택될 때 KeyEvent Component 모든 컴포넌트에 대해, 키가 눌러지거나 눌러진 키가 떼어질 때 MouseEvent Component 모든 컴포넌트에 대해, 마우스 버튼이 눌러지거나 떼어질 때, 클 릭될 때, 컴포넌트 위에 마우스가 올라갈 때, 올라간 마우스가 내 려올 때, 마우스가 드래그될 때, 마우스가 단순 움직일 때 FocusEvent Component 모든 컴포넌트에 대해, 컴포넌트가 포커스를 받거나 잃을 때 TextEvent TextField TextArea 텍스트가 변경될 때 텍스트가 변경될 때 WindowEvent Window AdjustmentEven JScrollBar t ComponentEven Component t ContainerEvent Container Window를 상속받는 모든 컴포넌트에 대해, 윈도우가 활성화,비 활성화, 아이콘화, 아이콘에서 복구 될 때, 윈도우가 열리거나 닫 힐 때, 윈도우가 종료될 때 등 스크롤바를 사용자가 움직였을 때 모든 컴포넌트에 대해, 컴포넌트가 사라지거나, 나타나거나, 이동 하거나 크기 변경 될 때 Container에 컴포넌트가 추가 혹은 삭제되었을 때 이벤트 리스너(Event Listener) -이벤트 리스너란? 이벤트를 처리하는 핸들러

79 -이벤트 리스너는 인터페이스(interface)이다. 개발자가 리스너 인터페이스의 모든 추상 메소드 구현 필요 이벤트가 발생하면 이미 약속된 메소드 호출 예) ActionListener 인터페이스 예) MouseListener 인터페이스 이벤트 리스너 등록 -이벤트 리스너 등록 이벤트를 받아 처리하고자 하는 컴포넌트에 이벤트 리스너 등록 -이벤트 리스너 등록시 사용되는 메소드 Component.addXXXListener(listener) xxx : 이벤트 명 listener : 이벤트 리스너 객체 예) addmouselistener(), addactionlistener(), addfocuslistener() 등 이벤트 리스너가 등록된 컴포넌트에만 이벤트 처리 가능 리스너 인터페이스와 메소드 표 10.2 리스너인터페이스 리스너메소드 메소드가호출되는경우 ActionListener actionperformed(actionevent) ActionEvent가발생하는경우 ItemListener itemstatechanged(itemevent) ItemEvent 가발생하는경우 KeyListener MouseListener keypressed(keyevent) keyreleased(keyevent) keytyped(keyevent) mousepressed(mouseevent) mousereleased(mouseevent) mouseclicked(mouseevent) mouseentered(mouseevent) mouseexited(mouseevent) 키가눌러질때 눌러진키가떼어질때 키가입력될때 마우스버튼이눌러질때 눌러진마우스버튼이떼어질때 마우스클릭될때 마우스가임의의컴포넌트위에올라올때 컴포넌트에올라온마우스가컴포넌트를벗어날때 MouseMotionListener mousedragged(mouseevent) 마우스를임의의컴포넌트위에서드래깅할때

80 mousemoved(mouseevent) 마우스를임의의컴포넌트위에서움직일때 FocusListener focusgained(focusevent) 컴포넌트가포커스를받을때 focuslost(focusevent) 컴포넌트가포커스를잃을때 TextListener textvaluechanged(textevent) 텍스트가변경될떄 windowopened(windowevent) 윈도우가생성되어처음으로보이게될때 windowclosing(windowevent) 사용자가윈도우의시스템메뉴에서윈도우닫기 를시도할때 WindowListener windowiconfied(windowevent) 윈도우가보통크기에서아이콘화될때 windowdeiconfied(windowevent) 아이콘상태의윈도우가가보통상태로복귀할때 windowclosed(windowevent) 윈도우닫기절차에의해윈도우가닫혀졌을때 windowactivated(windowevent) 윈도우가활성화윈도우로설정되어활성화될때 windowdeactivated(windowevent) 활성화상태의윈도우가비활성화될때 AdjustmentListener adjustmentvaluechanged(adjustmentevent) 스크롤바를움직였을때 componenthidden(componentevent) 컴포넌트가보이지않는상태로될때 componentshown(componentevent) 컴포넌트가보이는상태로될때 ComponentListener componentresized(componentevent) 컴포넌트의크기가변경될때 compnentmoved(componentevent) 컴포넌트의위치가변경될때 ContainerListener componentadded(containerevent) componentremoved(containerevent) 컴포넌트가컨테이너에추가될때 컴포넌트가컨테이너에서삭제될때 이벤트 리스너작성 예 그림

81 -예제 10-1 : 버튼에 Mouse이벤트를 처리하는 예제 그림 Tip : 리스너 등록 메소드가 addxxxlistener인 이유? -한 컴포넌트는 서로 다른 이벤트에 대한 리스너를 동시에 여러개 가질 수 있다. JButton.addActionListener(); // Action 리스너 JButton.addKeyListener(); // Key 리스너 JButton.addFocusListener(); // Focus 리스너 -한 컴포넌트는 한 이벤트에 대해 여러 개의 리스너를 동시에 가질 수 있다. JButton.addActionListener(new MyButtonListener1()); JButton.addActionListener(new MyButtonListener2()); JButton.addActionListener(new MyButtonListener3()); 이때, 리스너는 등록된 반대 순으로 모두 실행된다 이벤트 리스너 작성 방법 -3 가지 방법 독립 클래스로 작성 이벤트 리스너를 완전한 클래스로 작성 내부 클래스(inner class)로 작성 익명 클래스(anonymous class)로 작성

82 독립 클래스로 리스너 작성 그림 내부 클래스로 리스너 작성 그림

83 익명 클래스로 이벤트 리스너 작성 -익명 클래스란? (클래스 정의 + 인스턴스 생성)을 한번에 작성 ActionListener를 구현하는 익명의 이벤트 리스너 작성 예 -예제 10-2 : 마우스로 문자열 이동시키기 마우스 버튼을 누르면 마우스가 있는 위치로 hello 문자열을 이동시킨다. 이벤트와 리스너 : MouseEvent와 MouseListener 이벤트 소스 : JPanel 구현할 리스너의 메소드 : mousepressed() 하나

84 hello 문자열 표현 : JLabel 컨텐트 팬 : JPanel로 교체, 배치관리자 null로 설정 그림 예제 10-2의 소스 어댑터(Adapter) 클래스 -이벤트 리스너 구현에 따른 부담 리스너의 추상 메소드들을 모두 구현하여야 하는 부담 마우스 리스너에서 마우스가 눌러지는 경우(mousePressed())만 다루고자 하는 경우에 도 나머지 4 개의 메소드도 모두 구현하여야 함. -어댑터 클래스 JDK에서 제공 이벤트 리스너를 간단히 구현해 놓은 클래스

85 리스너의 모든 메소드가 단순 리턴하도록 구현됨 MouseAdapter 예 메소드를 하나만 가진 리스너는 해당 어댑터가 존재하지 않음 ActionAdapter, ItemAdapter 등은 존재하지 않음 리스너와 어댑터 클래스 표 10.3 리스너 인터페이스 ActionListener ItemListener KeyListener MouseListener MouseMotionListener FocusListener TextListener WindowListener AdjustmentListener ComponentListener ContainerListener 어댑터 클래스 없음 없음 KeyAdapter MouseAdapter MouseMotionAdapter FocusAdapter 없음 WindowAdapter 없음 ComponentAdapter ContainerAdapter 어댑터 사용 예

86 -예제 10-3: MouseAdapter 사용하기 Key 이벤트와 포커스 -키 이벤트는 키를 입력하는 다음 3 경우에 발생 키를 누르는 순간 누른 키를 떼는 순간 누른 키를 떼는 순간 + Unicode 키가 입력된 경우 -키 이벤트를 받을 수 있는 조건 키가 발생한 컴포넌트가 포커스를 가지고 있어야 함 -포커스 키 이벤트를 독점하는 권한 컴포넌트에 포커스 설정 방법 component.requestfocus(); // component가 키 이벤트를 받을 수 있게 함 -모든 컴포넌트에 대해 사용자는 키 입력 가능 키 이벤트는 모든 컴포넌트에 기본적으로 발생 가능 KeyListener의 메소드와 키 -KeyListener의 3 개의 메소드 그림

87 -컴포넌트에 키 이벤트 리스너 등록 유니코드(Unicode) -유니코드 키의 특징 국제 산업 표준 전 세계의 문자를 컴퓨터에서 일관되게 표현하기 위한 코드 체계 문자들에 대해서만 코드 값이 정의됨 A~Z, a~z, & 등 문자 키가 아닌 경우에는 통일된 키 코드 값이 없음 <Function> 키, <Home> 키, <Up> 키,<Delete> 키, <Control> 키, <Shift> 키, <Alt> 등 유니코드 키가 입력되는 경우 keypressed(), keyreleased() 만 호출됨 유니코드 키가 아닌 경우 keypressed(), keytyped(), keyreleased() 가 모두 호출됨 입력된 키 판별 -KeyEvent 객체 입력된 키 값을 가진 이벤트 객체 -KeyEvent의 메소드로 입력된 키 판별 Unicode 키의 문자 값을 판별, char KeyEvent.getKeyChar() 눌러진 키에 해당하는 문자 값 리턴 눌러진 키가 Unicode 문자 키인 경우에만 의미 있음 Unicode 문자 외 모든 키 판별, int KeyEvent.getKeyCode() 눌러진 키에 대한 정수형 키 코드 값 리턴 Unicode 문자에 관계 없이, function 키, modifier 키, Control 키, Action 키 등 모든 키에 대해 키 코드 값 리턴 운영체제나 하드웨어에 따라 키 셋은 서로 다름 입력된 키를 판별하기 위해 가상키(Virtual Key) 값과 비교하여야 함 -가상 키 값은 KeyEvent 클래스의 상수로 정의됨 -키 이름 문자열 리턴 String KeyEvent.getKeyText(int keycode) static keycode에 해당하는 키의 이름을 문자열을 리턴 -F1 키의 경우 "F1", Shift 키의 경우 "SHIFT" 등의 문자열 리턴 가상 키(Virtual Key) -가상 키는 KeyEvent 클래스에 상수로 정의되어 있음 -가상 키의 일부분 표 10.4 가상 키 설명 가상 키 설명 VK_0 ~ VK_9 0에서 9까지의 숫자키 0 ~ 9 까지의 ASCII 값과 VK_LEFT 왼쪽 방향 키

88 동일 VK_A ~ VK_Z A에서 Z까지의 문자키, A ~ VK_RIGHT 오른쪽 방향 키 Z 까지의 ASCII 값과 동일 <Function> 키 F1 ~ F24까 VK_F1~ VK_F24 지의 키 코드 VK_UP <Up>키 VK_HOME <Home>키 VK_DOWN <Down> 키 VK_END <End>키 VK_CONTROL <Control> 키 VK_PGUP <Page Up> 키 VK_SHIFT <Shift> 키 VK_PGDN <Page Down >키 VK_ALT <Alt> 키 입력된 키의 코드 값이 알 수 VK_UNDEFINED VK_TAB <Tab> 키 없음 KeyListener의 메소드와 키 그림 KeyEvent와 KeyListener의 활용 : getkeycode(), getkeychar(), getkeytext() 사용

89 실행 결과 그림

90 -예제 10-4 : F1 키를 입력받으면 바탕을 초록색으로, % 키를 입력받으면 바탕을 노란색으로 변경 -예제 10-4 실행 그림

91 -예제 10-5 : 상,하,좌,우 키로 HELLO 문자열 움직이기 -예제 실행: 상,하,좌,우 키로 텍스트 움직이기 그림

92 MouseEvent와 MouseListener,MouseMotionListener -Mouse 이벤트 사용자의 마우스 조작에 따라 발생하는 이벤트 표 10.5 Mouse 이벤트가 발생하는 리스너의메소드 경우 마우스가 컴포넌트 위에 void mouseentered(mouseevent e) 올라갈 때 마우스가 컴포넌트에서 voidmouseexited(mouseevent e) 내려올 때 리스너 MouseListener MouseListener 마우스 버튼이 눌러졌을 때 void mousepressed(mouseevent e) MouseListener 눌러진 버튼이 떼어질 때 void mousereleased(mouseevent e) MouseListener 마우스가 컴포넌트를 클릭하였을 때 void mouseclicked(mouseevent e) MouseListener 마우스가 드래그되는 동안 void mousedragged(mouseevent e) MouseMotionListener 마우스가 움직이는 동안 void mousemoved(mouseevent e) MouseMotionListener 마우스가 클릭되어 한 번 드래그될 때 메소드 호출 순서 MouseEvent 로부터 얻을 수 있는 정보 -마우스 포인터의 위치 int getx(), int gety(), Point getpoint() -입력된 마우스 버튼 short getbutton() -마우스 클릭 횟수 int getclickcount() -팝업 메뉴 클릭 boolean ispopuptrigger() MouseListener와 MouseMotionListener 사용 예

93 -실행: MouseListener와 MouseMotionListener 사용 그림

94 -예제 10-6 : 더블클릭시 컨텐트의 배경색 변경 그림 제11장 스윙 컴포넌트와 이벤트 핸들링 11.1 기초적인 스윙 컴포넌트와 상속 관계 1.기초적인 스윙 컴포넌트와 상속 관계 그림

95 2. 스윙컴포넌트의 공통 메소드. JComponent의메소드 3. 스윙 컴포넌트의 공통 메소드 확인 사례

96 4. 실행: 스윙 컴포넌트의 공통 요소 그림 JLabel, 레이블 컴포넌트 -JLabel의 용도 텍스트나 이미지를 컴포넌트화 하기 위한 목적 -레이블 컴포넌트 생성 JLabel() 텍스트나 이미지 정보가 없는 빈 레이블 컴포넌트 생성 JLabel(Icon image) 이미지만을 가진 레이블 컴포넌트 생성 JLabel(String text) 텍스트만을 가진 레이블 컴포넌트 생성 JLabel(String text, Icon image, int halignment) 텍스트와 이미지, 수평 정렬 값을 가진 레이블 컴포넌트 생성 수평정렬 값인 halignment로 사용가능한 값들. -SwingConstants.LEFT, CENTER, RIGHT, LEADING or TRAILING 6. 레이블 컴포넌트 생성 예 -단순 텍스트 만을 가진 레이블 컴포넌트 생성 -이미지를 가진 레이블 컴포넌트 생성 이미지 파일로부터 이미지 생성을 위해 ImageIcon 클래스 사용

97 출력 가능한 이미지 종류 png, gif, jpg sunset.jpg의 경로명이 "images/sunset.jpg"인 경우 -수평정렬 값을 가진 레이블 컴포넌트 생성 수평정렬 값으로 사용되는 값을 생성자의 3 번째 인자로 지정 텍스트 이미지 모두 출력하고자 하는 경우 수평정렬 값을 지정하여야 함. -예제 11-1 : JLabel 컴포넌트 생성 예 그림 JButton, 버튼 컴포넌트 -버튼 컴포넌트 버튼 모양의 컴포넌트 버튼은 클릭될 때 Action 이벤트를 발생시킴 -버튼 컴포넌트 생성 JButton() 텍스트나 이미지 아이콘를 가지지 않은 디폴트 버튼 생성 JButton(Icon icon) 이미지 아이콘만을 가진 버튼 생성 JButton(String text) 텍스트만을 가진 버튼 생성 JButton(String text, Icon icon) 텍스트와 이미지 아이콘을 모두 가진 버튼 생성 -버튼 컴포넌트 생성 예

98 hello 문자열을 가진 버튼 컴포넌트 생성 예 그림 이미지를 가진 버튼 컴포넌트 만들기 -하나의 버튼에 3 개의 이미지 연결 사용자의 마우스 접근에 따라 3 개의 이미지 중 선택 출력 -3 개의 버튼 이미지 버튼의 보통 상태 때 출력되는 이미지 : normalicon 생성자 호출 시에 주어진 이미지 아이콘 버튼 위에 마우스가 올라갈 때 출력되는 이미지 : rollovericon 이미지 설정 메소드 : JButton.setRolloverIcon(Icon); 마우스 버튼을 누른 상태 때 출력되는 이미지 : pressedicon 이미지 설정 메소드 : JButton.setPressedIcon(Icon) -이미지 아이콘 생성 new ImageIcon(이미지 경로명); new ImageIcon("images/normalIcon.gif); -예제 11-2 : 3 개의 이미지 아이콘을 가진 버튼 만들기 그림

99 9. 레이블과 버튼의 정렬(Alignment) -수평 정렬 컴포넌트 영역 내에 이미지와 텍스트의 수평상의 위치 결정 void sethorizontalalignment(int align) -수직 정렬 컴포넌트 영역 내에 콘텐츠(이미지와 텍스트)의 수직상의 위치 void setverticalalignment(int align) 그림 JCheckBox, 체크박스 컴포넌트 -체크박스 선택(selected)과 비선택(deselected)의 두 상태만을 가지는 버튼 그림 생성자 디폴트는 선택되지 않은 상태 JCheckBox () 텍스트와 이미지가 없는 토글 버튼 생성 JCheckBox(Icon icon) 이미지만 가진 토글 버튼 생성 JCheckBox(Icon icon, boolean selected) 이미지와 지정된 선택 상태로 생성 JCheckBox(String text) 텍스트 만을 가진 토글 버튼 생성 JCheckBox(String text, boolean selected)

100 텍스트와 지정된 선택 상태로 생성 JCheckBox(String text, Icon icon) 텍스트와 이미지 둘 다 가진 토글 버튼 생성 JCheckBox(String text, Icon icon, boolean selected) 텍스트와 이미지를 가지고 지정된 선택상태로 생성 11. 체크 박스 생성 -텍스트 정보만을 가진 체크 박스 생성 "사과" 텍스트를 가진 체크박스 생성 "배" 텍스트를 가지고 선택상태로 체크박스 생성 체크 박스 모양이 명료하게 출력되고 사용자는 이것을 체크 -이미지 아이콘을 가진 체크 박스 생성 예 체크 박스 모양이 출력되지 않음 따로 선택상태를 표현하는 이미지 아이콘을 설정하여야 함 cherry.jpg 이미지와 "체리" 텍스트를 가진 체크 박스 생성 예 선택 상태의 이미지를 위해 selectedcherry.jpg를 사용하였음 -예제 11-3 : 체크박스 생성 예 그림

10장.key

10장.key JAVA Programming 1 2 (Event Driven Programming)! :,,,! ( )! : (batch programming)!! ( : )!!!! 3 (Mouse Event, Action Event) (Mouse Event, Action Event) (Mouse Event, Container Event) (Key Event) (Key Event,

More information

Microsoft PowerPoint - 06-Chapter09-Event.ppt

Microsoft PowerPoint - 06-Chapter09-Event.ppt AWT 이벤트처리하기 1. 이벤트처리방식 2. 이벤트클래스와리스너 3. 이벤트어댑터 4. 이벤트의종류 이벤트 (Event) 이벤트 사용자가 UI 컴포넌트에대해취하는행위로인한사건이벤트기반프로그래밍 무한루프를돌면서사용자의행위로인한이벤트를청취하여응답하는형태로작동하는프로그래밍 java.awt.event 이벤트처리 AWT 컴포넌트에서발생하는다양한이벤트를처리하기위한인터페이스와클래스제공

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

9장.key

9장.key JAVA Programming 1 GUI(Graphical User Interface) 2 GUI!,! GUI! GUI, GUI GUI! GUI AWT Swing AWT - java.awt Swing - javax.swing AWT Swing 3 AWT(Abstract Windowing Toolkit)! GUI! java.awt! AWT (Heavy weight

More information

Microsoft PowerPoint - 10장

Microsoft PowerPoint - 10장 1 이벤트기반프로그래밍 2 제 10 장이벤트처리 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식 이벤트가발생하면이벤트를처리하는루틴 ( 이벤트리스너 ) 이실행하는방식 프로그램내의어떤코드가언제실행될지아무도모름, 이벤트의발생에의해전적으로결정 반대되는개념 : 배치실행 (batch programming) 프로그램의개발자가프로그램의흐름을결정하는방식이벤트

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 자바의이벤트처리 배효철 th1g@nate.com 1 목차 이벤트기반프로그래밍 자바의이벤트기반 GUI 응용프로그램구성 이벤트객체 이벤트리스너 어댑터클래스 Key Event Mouse Event 2 이벤트기반프로그래밍 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식 이벤트가발생하면이벤트를처리하는루틴 (

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

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D3130C0E5C0CCBAA5C6AEC3B3B8AE>

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D3130C0E5C0CCBAA5C6AEC3B3B8AE> 명품 JAVA Programming 1 제 10 장자바의이벤트처리 GUI 응용프로그램 => 이벤트기반프로그래밍 2 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식 이벤트가발생하면이벤트를처리하는루틴 ( 이벤트리스너 ) 실행 프로그램내의어떤코드가언제실행될지아무도모름, 이벤트의발생에의해전적으로결정 반대되는개념

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

Cluster management software

Cluster management software 자바프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교정보통신공학부 최민 이벤트처리 지금까지 GUI 를구성하는 Component 의종류와이 Component 들을 Container 위에적절하게배치하기위한 LayoutManager 를학습하였음 앞에서만들었던 GUI 프로그램은모양만그럴듯할뿐, 실제 Button 을누르거나, Frame 우측상단의 X 표시를클릭해도아무런동작을하지않음이벤트처리가포함되어있지않기때문

More information

public class FlowLayoutPractice extends JFrame { public FlowLayoutPractice() { super("flowlayout Practice"); this. Container contentpane = getcontentp

public class FlowLayoutPractice extends JFrame { public FlowLayoutPractice() { super(flowlayout Practice); this. Container contentpane = getcontentp 8 장 1 번 public class MyFrame extends JFrame { public MyFrame(String title) { super(title); this. setsize(400,200); new MyFrame("Let's study Java"); 2번 public class MyBorderLayoutFrame extends JFrame {

More information

(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345]) GUI 인터페이스의이벤트 학습목표 윈도우환경에서작성된 GUI 인터페이스의이벤트개념을이해한다. 다양한컴포넌트에대한이벤트를처리한다 이벤트란? 자바이벤트란 사용자가키보드, 마우스등의장치로부터 AWT 컴포넌트에발생시키는모든사건을의미 이벤트주도형프로그램은사용자로부터발생된이벤트를처리하여사용자와상호작용을가능하게함 자바이벤트모델 컴퓨터 키보드 운영체제 마우스 이벤트객체자바가상머신이벤트소스객체이벤트리스너객체애플리케이션

More information

운동시뮬레이션 강의 소개

운동시뮬레이션 강의 소개 Event 발생과처리 Event 생성자 Event 처리자 Event listeners Keyboard, Mouse, Button, Menu, Panel, Motion2DGraph Vector y Vector y Vector x Vector y MotionGUI Window Frame Menu

More information

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

Microsoft PowerPoint - lec09_12.ppt [호환 모드] JAVA 프로그래밍 9. 이벤트처리 한동일 학습목표 To understand the Java event model To learn about the relations between components and events To install action and mouse event listeners To accept input from buttons, text

More information

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 20 장스윙컴포넌트 1 이번장에서학습할내용 텍스트컴포넌트 텍스트필드 텍스트영역 스크롤페인 체크박스 라디오버튼 스윙에서제공하는기초적인컴포넌트들을살펴봅시다. 스윙텍스트컴포넌트들 종류텍스트컴포넌트그림 텍스트필드 JTextField JPasswordField JFormattedTextField 일반텍스트영역 JTextArea 스타일텍스트영역

More information

Microsoft PowerPoint - java2-lecture5.ppt [호환 모드]

Microsoft PowerPoint - java2-lecture5.ppt [호환 모드] 자바에서 GUI 의종류 자바 GUI & 이벤트처리 514770-1 2017 년봄학기 4/19/2017 박경신 AWT(Abstract Windows Toolkit) 운영체제가제공하는자원을이용하여서컴포넌트를생성한다. SWING 스윙컴포넌트가자바로작성되어있기때문에어떤플랫폼에서도일관된화면을보여줄수있다. AWT AWT(Abstract Windows Toolkit) 자바가처음나왔을때함께배포된

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 명품 JAVA Essential 1 2 학습목표 1. 자바의이벤트기반 GUI 프로그램구조이해 2. 이벤트와이벤트객체 3. 이벤트리스너작성 4. 어댑터클래스로리스너작성 5. Key 이벤트로키입력받기 6. Mouse 이벤트로마우스동작인식 이벤트기반프로그래밍 3 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

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

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

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형 바에 제네릭스(generics)를 도입하기 위한 연구는 이미 8년 전인 1996년부터라고 한다. 실제로 자바에 제네릭스를 도입하 는 몇 가지 방안들이 논문으로 나오기 시작한 것이 1998년 초임을 감 안하면 무려 8년이 지난 후에야 자바 5.0에 전격 채택되었다는 것은 이것이 얼마나 어려운 일이었나 하는 것을 보여준다. 자바의 스펙을 결정하는 표준화 절차인

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 명품 JAVA Essential 1 2 학습목표 1. 이벤트기반 GUI 프로그래밍이해 2. 자바 GUI 패키지이해 3. 스윙으로 GUI 프로그램작성 4. 컨테이너와컴포넌트, 배치 5. FlowLayout 배치관리자활용 6. BorderLayout 배치관리자활용 7. GridLayout 배치관리자활용 8. 배치관리자없는컨테이너만들기 자바의 GUI(Graphical

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

(Microsoft PowerPoint - CLXBUOPUGXNK.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - CLXBUOPUGXNK.ppt [\310\243\310\257 \270\360\265\345]) 자바패기지 학습목표 자바패키지의개념을이해한다. 패키지의종류, 사용및선언방법을이해한다. 자바패키지압축 기능이비슷한라이브러리클래스나인터페이스들을하나의집단으로묶어놓은것 작성자 자바프로그래밍언어혹은사용자 패키지의예 String 클래스, 입출력에관한클래스및인터페이스, 네트워크에관련된클래스등등 패키지에포함된클래스 기본패키지디렉토리 : C:\jdk1.5.0\jre\lib

More information

Microsoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt

Microsoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt AWT 컴포넌트 (2) 1. 메뉴 2. 컨테이너와컨트롤 3. 배치관리자 메뉴관련클래스계층구조 Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem PopupMenu 메뉴 풀다운메뉴 제목표시줄밑의메뉴바를가짐 메뉴만들기과정 MenuBar 객체생성 MenuBar 에추가할 Menu 객체를생성 Menu 에추가할또다른서브

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

01-OOPConcepts(2).PDF

01-OOPConcepts(2).PDF Object-Oriented Programming Concepts Tel: 02-824-5768 E-mail: hhcho@selabsoongsilackr? OOP (Object) (Encapsulation) (Message) (Class) (Inheritance) (Polymorphism) (Abstract Class) (Interface) 2 1 + = (Dependency)

More information

SBR-100S User Manual

SBR-100S User Manual ( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S

More information

Microsoft Word - PJ_scjp_9_0_1-lang.doc

Microsoft Word - PJ_scjp_9_0_1-lang.doc SCJP 강좌 Section 9 java.lang package 문서정보 문서제목 scjp 강좌 : Section 9 java.lang package 파일이름 PJ_scjp_9_0_1.pdf 작성자 신상훈, 김병필 작성일 2002년 1월 10일 버전 0.1 상태 초안 내용정보 예상독자개요 페이지 scjp 취득을원하는 java 초보 java.lang 패키지의

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

예제 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

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 제네릭 배효철 th1g@nate.com 1 목차 제네릭 컬렉션 백터 ArrayList HashMap LinkedList Collections 클래스 제네릭만들기 컬렉션과자동박싱 / 언박싱 제네릭의장점 2 제네릭 특정타입만다루지않고, 여러종류의타입으로변신할수있도록클래스나메소드를일반화시키는기법 , , : 타입매개변수 요소타입을일반화한타입 제네릭클래스사례

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

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

제13강. 스윙(Swing)

제13강. 스윙(Swing) 제13강. 스윙(Swing) 싞흥대학교 웹 프로그래밍젂공 싞 현 정 목차 스윙(Swing) 이란 스윙과 AWT와 차이점 스윙 프로그램 스윙 컴포넌트 스윙 레이아웃 이벤트와 이벤트 처리의 개념 리스너 인터페이스를 이용핚 이벤트처리 어댑터를 이용핚 이벤트 처리 2 JFC(Java Foundation Class)와 스윙 SUN사와 Netscape사가 공동 개발핚

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

슬라이드 1

슬라이드 1 12 장. GUI 학습목표 GUI 이벤트, 이벤트리스너와이벤트소스그림그리기내부클래스 창 Jframe 의모양 (Metal L&F) Jframe 의모양 (Aqua L&F) 창을만드는방법 1. 프레임 (JFrame) 만들기 JFrame frame = new JFrame(); 2. 위젯만들기 JButton button = new JButton( click me );

More information

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 IDIS Mobile ios 사용설명서 Powered by 사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다.

More information

객체 Key Point 객체는그객체의특성을나타내는상태 (state) 와그객체의행동 (behaviors) 으로이루어진다. 좌표상의점 n 상태 : x 좌표값, y 좌표값 n 행동 : 점의이동 주사위 n 상태 : 표면값 n 행동 : 주사위굴리기 은행계좌 n 상태 : 예금주,

객체 Key Point 객체는그객체의특성을나타내는상태 (state) 와그객체의행동 (behaviors) 으로이루어진다. 좌표상의점 n 상태 : x 좌표값, y 좌표값 n 행동 : 점의이동 주사위 n 상태 : 표면값 n 행동 : 주사위굴리기 은행계좌 n 상태 : 예금주, 제 5 장객체와클래스 Kwangman Man (htt://comiler.sangji.ac.kr, kkman@sangji.ac.kr) SangJi University 2012 1 이장의내용 객체와클래스의기본개념 클래스사용법 클래스를정의하는방법 메소드를구현하는방법 가시성및접근제어 GUI 프로그램의이해및작성 2 5.1 객체와클래스 3 1 객체 Key Point 객체는그객체의특성을나타내는상태

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

More information

IRISCard Anywhere 5

IRISCard Anywhere 5 이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

(Microsoft PowerPoint - java1-lecture7.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture7.ppt [\310\243\310\257 \270\360\265\345]) 그래픽사용자인터페이스 그래픽사용자인터페이스이벤트객체, 리스너 그래픽사용자인터페이스 (Graphical User Interface, 간단히 GUI) 는컴포넌트들로구성된다. 514760-1 2016 년가을학기 11/10/2016 박경신 자바에서 GUI 의종류 AWT(Abatract Windows Toolkit) 운영체제가제공하는자원을이용하여서컴포넌트를생성한다.

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

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

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

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사 IDIS Mobile Android 사용설명서 Powered by 사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사양 및 버전에 따라 일부

More information

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770> 예약어(reserved word) : 프로그래밍 언어에서 특별한 용도로 사용하고자 미리 지정한 단어 - 프로그램의 구성요소를 구별하게 해주는 역할 => 라벨, 서브 프로그램 이름, 변수에 연관되어 다른 변수나 서브 프로그램 등과 구별 - 식별자의 최대길이는 언어마다 각각 다르며 허용길이를 넘어서면 나머지 문자열은 무시됨 - FORTRAN, COBOL, HTML

More information

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드] 리눅스 설치 Vmware를 이용한 Fedora Core 8 설치 소프트웨어실습 1 Contents 가상 머신 실습 환경 구축 Fedora Core 8 설치 가상 머신 가상 머신 가상 머신의 개념 VMware의 설치 VMware : 가상 머신 생성 VMware의 특징 실습 환경 구축 실습 환경 구축 Fedora Core 8 설치 가상 머신의 개념 가상 머신 (Virtual

More information

MF Driver Installation Guide

MF Driver Installation Guide Korean MF 드라이버 설치설명서 사용자 소프트웨어 CD-ROM... 드라이버 및 소프트웨어 정보...1 지원되는 운영 체제...1 MF 드라이버 및 MF Toolbox 설치... [쉬운 설치]를 사용한 설치...2 [사용자 정의 설치]를 사용한 설치...10 USB 케이블 연결(USB를 이용해 연결하는 경우만)...20 설치 결과 확인...21 온라인

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

자바 프로그래밍

자바 프로그래밍 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

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가 www.kdnetwork.com 특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가능할 삭제할 건전지 사용자를 위한 개별 비밀번호 및 RF카드

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

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

슬라이드 1

슬라이드 1 NetBeans 1. 도구 개요 2. 설치 및 실행 3. 주요 기능 4. 활용 예제 1. 도구 개요 1.1 도구 정보 요약 도구명 소개 특징 주요기능 NetBeans 라이선스 CDDL, GPLv2 (http://trac.edgewall.org/) 통합 개발 환경(IDE : integrated development environment)으로써, 프로그래머가 프로그램을

More information

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1 디지털 사진 프린터 P-S100 프린터 드라이버 설치 가이드 사용하는 컴퓨터에 따라 제공된 프린터 드라이버를 설치합니다. 설치 절차 에 대한 자세한 내용은 CD-ROM의 Readme 파일을 참조하십시오. 작동 환경 Windows 호환 모델: IBM PC/AT 및 호환품 운영 체제: Windows 98 SE/Me/2000/XP (Windows 98 SE/Me/2000/XP

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc DVR HDD PC Viewer Guide ADVR6000 / SWI5000 선운정보통신 소개 본 매뉴얼은 DVR의 하드디스크 PC 뷰워의 설명서입니다. 이 프로그램은 DVR에 장착되어 미리 포맷되고 녹화된 HDD에 저장된 영상들을 사용자의 PC에서 직접 보여줄 것입니다. DVR의 하드디스크-랙에서 분리된 하드디크스가 사용자의 PC에 연결됐다면 이 응용프로그램은

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 java.awt Package java.awt 패키지는자바애플리케이션프로그래밍인터페이스 (API : Application Programming Interface) 의일부로서그래픽처리를담당하는컴포넌트들을포함합니다. 즉, 화면상에윈도우를그리고, 그위에버튼이나텍스트필드등을붙이는데필요한 GUI

More information

Microsoft Word - LTL-XL RSC vers. 1.01 Nov. 08 _Korean Version_.doc

Microsoft Word - LTL-XL RSC vers. 1.01 Nov. 08  _Korean Version_.doc LTL-XL RSC(Road Sensor Control) Retroreflectometer LTL XL 장비를 위한 도로 센서 운영 소프트웨어 DELTA Venlighedsvej 4 2970 Hørsholm Denmark Tel. +45 72 19 40 00 roadsensors@delta.dk www.delta.dk/roadsensors 부인(포기) 성명(서)

More information

제11장 자바 입출력

제11장 자바 입출력 제11 장자바입출력 Java_surce->src->ch11 I/O Stream gic 자바입출력 2 서버와클라이언트의소켓준비 자바입출력 3 11.1.1 스트림개념 스트림 순서가있고, 길이가정해져있지않은데이터흐름종류 자바입출력 바이트 ( 바이너리, 숫자 ) 텍스트 ( 문자 )...InputStream...OutputputStream...Reader...Writer

More information

노트북 IT / 모바일 데스크탑 34 올인원PC 35 PC 소프트웨어 포터블SSD / SSD / 메모리카드 36 태블릿 37 휴대폰 39 PC 솔루션 IT / 모바일 IT / 모바일 노트북 29 삼성전자는 Windows 를 권장합니다. 삼성전자만의 편리하고 다양한 소프트웨어를 통해 초보자도 보다 쉽고 빠르게 이용 가능합니다. Easy Settings 삼성 패스트

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

ThinkVantage Fingerprint Software

ThinkVantage Fingerprint Software ThinkVantage 지문 인식 소프트웨어 First Edition (August 2005) Copyright Lenovo 2005. Portions Copyright International Business Machines Corporation 2005. All rights reserved. U.S. GOVERNMENT USERS RESTRICTED RIGHTS:

More information

KPS-19MA-1.hwp

KPS-19MA-1.hwp 판서모니터 사양(모델명 KPS-19MA) 모델명 KPS-19MA 화면크기 19.0 inch 해상도 1280 (H)x1024 (v) 픽셀크기 0.294 x0.294 mm 화소 16.7M (8 bits/color) 선명도 800:1 밝기 300 cd/m2 응답속도 Tr+Tf=5 ms 시야각 +80 ~80 (H), +80 ~80 (V) Tablet Specification

More information

ActFax 4.31 Local Privilege Escalation Exploit

ActFax 4.31 Local Privilege Escalation Exploit NSHC 2013. 05. 23 악성코드 분석 보고서 [ Ransomware 악성코드 ] 사용자의 컴퓨터를 강제로 잠그고 돈을 요구하는 형태의 공격이 기승을 부리고 있 습니다. 이러한 형태의 공격에 이용되는 악성코드는 Ransomware로 불리는 악성코 드 입니다. 한번 감염 시 치료절차가 복잡하며, 보고서 작성 시점을 기준으로 지속 적인 피해자가 발생되고

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

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

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

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

Microsoft PowerPoint 자바-AWT컴포넌트(Ch8).pptx

Microsoft PowerPoint 자바-AWT컴포넌트(Ch8).pptx 5. 배치관리자 1 AWT 컴포넌트 1. AWT 프로그램과이벤트 2. Component 클래스 3. 메뉴 4. 컨테이너와컨트롤 AWT AWT: Abstract t Window Toolkit GUI 를만들기위한 API 윈도우프로그래밍을위한클래스와도구를포함 Graphical User Interface 그래픽요소를통해프로그램과대화하는방식 그래픽요소를 GUI 컴포넌트라함

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

슬라이드 1

슬라이드 1 강의 저장 프로그램 EPLUS 7.9 사용 설명서 컴버스테크 이-플러스(E-PLUS) v7.9 소개 이-플러스(E-PLUS) v7.9 프로그램은 판서 및 강의 저장 등 강의에 필요한 다양한 기능을 가지고 있는 소프트웨어입니다. 어떠한 판서 도구를 사용하더라도 부드러운 판서 인식이 가능하며 사용자가 필요한 기능만을 지정하여 활용 할 수 있는 사용자 지정 기능을

More information

Microsoft PowerPoint - 1주차 UML의 구성과 도구

Microsoft PowerPoint - 1주차 UML의 구성과 도구 UML의 구성과 도구 v UML(Unified Modeling Language) v UML의 구성 요소 v UML의 관계 v UML의 다이어그램 v UML 도구 UML(Unified Modeling Language) l 모델링 과정(modeling process)과 모델링 언어(modeling language)를 제안 모델링 과정 : 객체지향으로 분석하고 설계하는

More information

歯NetworkKawuiBawuiBo.PDF

歯NetworkKawuiBawuiBo.PDF (2000 12 Jr.) from Yongwoo s Park Java Network KawuiBawuiBo Game Programming from Yongwoo s Park 1 Java Network KawuiBawuiBo Game Programming from Yongwoo s Park 2 1. /... 4 1.1 /...4 1.2 /...6 1.3...7

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

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

Xcovery 사용설명서

Xcovery 사용설명서 ㄱ 센티리온 프리미엄 사용설명서 목 차 Chapter 1 프로그램 소개 및 기본개념 1) 시스템 복구 2) 시스템백업 3) 시스템 백업 및 시스템 복구 활용하기 4) 폴더보호 Chapter 2 프로그램 설치하기 1) 프로그램 설치 방법 2) Centillion 설치 소프트웨어 사용권 계약서 3) 제품 인증 키 입력 4) Centillion 폴더보호 5) Windows

More information

PDF_Compass_32호-v3.pdf

PDF_Compass_32호-v3.pdf Design Compass는 특허청의 디자인맵 웹사이트에서 제공하는 디자인, 브랜드, 기술, 지식재산권에 관한 다양한 콘텐츠를 디자이너들의 입맛에 맞게 엮은 격월간 디자인 지식재산권 웹진입니다. * Design Compass는 저작이용이 허락된 서울서체(서울시)와 나눔글꼴(NHN)을 사용하여 제작되었습니다. 2 4 5 6 7 9 10 11 편집 / 디자인맵

More information

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2 DB 와 WEB 연동 (1) [2-Tier] Java Applet 이용 웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2 JAVA Applet 을이용한 Client Server 연동기법 } Applet

More information

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로 한국어 표준 설정안내 서브 초침 시간 및 설정 1. 용두를 2의 위치로 뽑아냅니다. 2. 용두를 시계방향 또는 반시계방향으로 돌려(모델에 따라 다름) 를 전날로 설정합니다. 3. 용두를 3의 위치로 당기고 현재 가 표시될 때까지 시계방향으로 돌립니다. 4. 용두를 계속 돌려 정확한 오전/오후 시간을 설정합니다. 5. 용두를 1의 위치로 되돌립니다. 169 쓰리

More information

iOS5_1±³

iOS5_1±³ IDG Deep Dive ios 5 2 3 4 5 6 7 8 9 10 11 12 ios 5 토어 버튼이 상단 좌측에 추가되어 아이튠즈 스토 어의 적합한 영역으로 연결해 준다. 또한 블루투스의 원격제어 기능인 AVRCP(AV Remote Control Profile)가 1.3 버전으로 업데이 트되어 음악을 블루투스로 스트리밍할 때 트랙과 아티스트, 앨범 정보를

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

SH100_V1.4

SH100_V1.4 User Manual VLUU SH100 1 2 3 4 5 6 m m 7 8 9 10 11 12 13 15 16 17 x y 18 19 1 4 z x 20 2 o 5 o 6 3 7 10 11 21 8 12 o 9 o 22 1 m 2 3 2 1 3 23 24 o 25 1 2 o 1 2 3 26 1 2 1 2 27 1 28 2 1 3 29 2 4 30 1 m

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

*2008년1월호진짜

*2008년1월호진짜 3. USB 이동식저장장치를이용하여전파되는악성코드분석 1. 개 요 최근 USB 이동식 저장장치를 통하여 전파되는 악성코드에 대한 감염피해가 증가하고 있어 주의가 필요하다. 이번에 확인된 ntion.exe 악성코드는 감염 시, 특정 사이트에 접속하여 추가 악성코드를 다운로드하는 Dropper 기능을 수행한다. 또한, 웹 서버가 감염될 경우는 웹 서버내의 웹 페이지가

More information

Microsoft Word - 문필주.doc

Microsoft Word - 문필주.doc 포커스 포커스 모바일 광고기능을 갖는 아이폰 애플리케이션 문필주* 이요섭** 최근의 모바일 광고 시장은 이동통신사 중심의 SMS 발송 형태에서 아이폰의 등장과 앱 스토어(App Store)의 성공에 의한 콘텐츠 내의 플랫폼(App-vertising) 형태로 변해 가고 있다. 본 고에서는 모바일 광 고 아이폰 애플리케이션을 활용할 수 있는 방법에 대해 논의하고자

More information