5. 자바 이야기
• 1991년 제임스 고슬링이 자바 프로젝트를 시
작 자바 프로젝트의 결과물로서 1995년 자바
1.0 탄생, Write Once, Run Anywhere
• Java SE, Java EE, Java ME
• Java 프로그램 실행 방법
13년 10월 25일 금요일
9. 변수와 자료형
• 변수는 값을 공간
• 변수를 선언하는 방법 : 변수타입 변수명
예) int count, boolean check
변수명에 사용가능한 문자 : 문자, 숫자, $,
_ 실무에서는 문자와 숫자를 주로 사용
예약어는 사용 금지 : class, boolean, byte,
public, private, int ....
13년 10월 25일 금요일
10. 기본 자료형(Primitive Type)
• 숫자 자료형
byte : -128에서 127 까지
short : -32,768 에서 32,767 까지
int : -2,147,483,648 부터 2,147,483,647
long : -9,223,372,036,854,775,808 부터
9,223,372,036,854,775,807
float : 3.4e-038에서 3.4e+038
double : double 타입은 많은 계산에서 큰 값
의 정밀도를 유지 해야할 경우에 사용
13년 10월 25일 금요일
11. 문자 및 논리 자료형
• 자바의 문자는 16비트 유니코드 문자로 표현
되고 'u0000'에서 'uffff'까지 표현
• 자바의 논리 자료형은 true와 false로 값을 표
현
13년 10월 25일 금요일
12. 상수
• 프로그램 내에서 값이 변하지 않는 변수
• 상수 선언 방법 : final 자료형 상수명 = 값;
예) final int COUNT = 1;
13년 10월 25일 금요일
13. 배열
• 배열의 정의 : 동일한 타입의 값을 고정된 갯수
로 저장할 수 있는 구조체
• 배열의 구조 :
13년 10월 25일 금요일
14. 배열(계속)
•
•
배열의 생성과 초기화 :
char[] charArray =
{‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J
’,’K’,’L’};
•
13년 10월 25일 금요일
배열의 생성 : char[] test =
new char[12];
다차원 배열 : char[][]
multiChar = new char[4]
[4];
15. 형변환
• 형변환의 정의 : 기본자료형 간의 자료형이 변
환 되는 것을 의미한다.
• 형변환의 예 : int형이 short형으로 int형이
String으로 형변환이 발생, 실무에서는 String
과 기본자료형간의 형변환이 주로 사용된다.
• Integer.parseInt, Double.ParseDouble,
Integer.toString, Double.toString
13년 10월 25일 금요일
25. 객체지향의 역사
• 1960년대 MIT에서 처음 만들어졌고 최초의 객
체지향언어는 Simula임
• 1970년대 Xerox에서 Smalltalk 언어를 개발
• 1980년대 Eiffel이 순수 객체지향을 표방
• 1990년대 C++과 Dephi가 대중에게 인정받아
널리 사용
13년 10월 25일 금요일
26. 객체지향의 개념과 구성
요소
• 객체지향의 개념은 언어를 빗대어 설명하자면
명사와 동사로 구성되어 있다.
• 명사 : 변수 또는 상수[상태를 나타냄]
• 동사 : 메서드[행위를 나타냄]
• 핵심 개념 : 객체, 상속, 인터페이스
13년 10월 25일 금요일
27. 객체
• 객체는 현실 세계의 사물을 프로그래밍 상에 모
델링하였다.
• 객체(Object) = 상태(명사) + 행위(동사)
• 절차지향 프로그래밍언어에서는 상태와 행위를
구분하지 않고 사용
예) 자동차를 객체로 묘사
상태 : 색, 엔진, 차종, 브레이크 타입 등
행위 : 현재 속도, 현재 rpm 등
13년 10월 25일 금요일
28. 클래스
(class)
•
클래스는 객체를 만들어 내는 설계
도 또는 청사진 또는 틀
예) 클래스 : 도요타86의 설계도
객체 : A씨의 도요타86, B씨의 도
요타86 등
13년 10월 25일 금요일
29. 상속
(extends)
•
•
13년 10월 25일 금요일
상속은 다음 세대에게 현
세대의 특징을 물려주는
행위를 말한다.
객체지향 언어에서 상속은
현재 클래스의 속성을 자
식 클래스에게 물려주는
것을 말한다.
30. 인터페이스
(interface)
•
•
13년 10월 25일 금요일
인터페이스는 사전적 의미
로 상호작용하다라는 의미
를 가지고 있음
외부에 내부를 직접 개방
하지 않고 인터페이스를
통해서 내부의 기능을 간
접 사용할 수 있도록 하는
기능
1. 바이오스 전원공급
2. 하드 전원공급
3. 메모리 전원공급
4. 바이오스 부팅
5. ....
31. 패키지(package)
• 패키지는 클래스나 인터페이스를 묶어주는 워
크스페이스 역할을 한다.
• 패키지를 이용하면 인터페이스, 클래스를 묶어
서 모듈로 묶어 줄 수 있다.
예) 패키지 선언방법
package com.pizzastudio;
class Test.. {
...
}
13년 10월 25일 금요일
33. 클래스 정의
class 키워드와 {, } 를 사용하여 몸체를 지정
몸체에는 필드, 생성자, 메서드를 정의
클래스명은 문자로 시작, 문자와 숫자만 사용
예)
public class 클래스명{
필드선언;
생성자선언;
메서드선언;
}
13년 10월 25일 금요일
34. 상속과 인터페이스를 통
한 클래스 정의
class 클래스명 extends 부모클래스명
implements 인터페이스명{
필드 정의;
생성자 정의;
메서드 정의;
}
13년 10월 25일 금요일
35. 클래스 정의(변수선언)
변수선언방법:접근제어자 변수타입 변수명 = 값;
변수 선언위치 :
public class VariableTest{
private int count; // 멤버 변수
private static int sum; // 클래스 변수
public int sumCount(){
private int sum = 0; // 로컬 변수
sum = sum + count;
return sum;
}
}
13년 10월 25일 금요일
36. 클래스의 정의
(메서드 정의)
• 메서드 정의 방법
접근제어자 반환타입 메서드명(변수타입 변수
명, ...) {
...
return 반환값;
}
사용예
public void sum(int x, int y){
return x + y;
}
13년 10월 25일 금요일
37. 클래스 정의(생성자)
• 생성자 정의 방법
public 클래스명(매개변수타입 매개변수,...){
}
• 생성자 생성 및 사용예
public Notebook(int cpu, int memory){
}
Notebook mybook = new Notebook();
13년 10월 25일 금요일
38. 메서드에 값 전달 방법
• 값에 의한 전달
void callVal(int p)
• 참조에 의한 전달
void callRef(String
a)
callVal(1);
callRef("value");
13년 10월 25일 금요일
39. 객체의 기본
•
객체의 생성
Computer my = new
Computer(1);
1. 선언 : Computer my
2. 생성 : new Computer
3. 초기화 : Computer(1)
4. 할당 : my = new
Computer(1);
13년 10월 25일 금요일
40. 객체의 기본(계속)
• 객체의 사용방법
생성된객체명.필드명 : d1.name, new
Computer().name
메서드 호출방법
생성된객체명.메서드명(인자) : my.getCpu();
13년 10월 25일 금요일
41. this
•
this는 생성된 객체 자신을
가리키는 자바의 키워드
•
this.필드명 또는 this.메서
드명으로 필드와 메서드
호출
•
this(인자...)로 객체 자신의
생성자를 호출할 수 있음
13년 10월 25일 금요일
43. 클래스 변수/메서드
• 클래스 변수와 클래스 메서드는 클래스에서
생성된 모든 객체에서 호출되어도 동일한 값
동일한 결과를 반환하는 메서드이다.
• 클래스 변수/메서드 정의 방법 : static int
COUNT; static void parseInt();
• 클래스 변수/메서드 사용 방법 :
Integer.COUNT, Integer.parseInt();
13년 10월 25일 금요일
44. 중첩클래스
• 중첩 클래스 정의 : 클래스 내에 클래스를 정
의, 논리적으로 로직을 그룹핑할 목적 또는 정
보 은닉의 목적으로 사용됨
• 종류 : 이너 클래스, 로컬 클래스, 익명 클래스
13년 10월 25일 금요일
45. 이너 클래스
• 이너클래스는 클래스 내, 메서드 바깥에 선언되
는 클래스이고 바깥 클래스 객체 생성 시에 동
시에 생성된다.
• 예)
class OuterClass{
class InnerClass{ ... }
...
}
13년 10월 25일 금요일
46. 로컬 클래스
• 클래스 내부의 특정 블럭(메서드나 블럭) 내에
선언되는 클래스
• 사용예)
public class Member{
...
public void validJuminNo(){
class JuminNo{ ... }
return new JuminNo();
}
13년 10월 25일 금요일
47. 익명 클래스
• 익명 클래스는 선언장소는 로컬클래스와 동일하
나 클래스의 이름을 사용하지 않는다.
• 사용예)
public class Hanger{
...
public void print(){
...
Clothes shirths = new Clothes(){
public void printColor(){ ... }
}
}
13년 10월 25일 금요일
48. Enum 타입
• Enum 타입은 사전에 정의된 상수의 집합과 같
다. Enum을 주로 사용하는 곳은 주, 방위, 색 배
열과 같은 일련의 상수 집합을 사용하는 곳이다.
• 사용예)enum Color{ RED, ORAGNE,
public
YELLOW, BLUE, PURPLE}
Color.RED, Color.ORANGE
13년 10월 25일 금요일
50. 인터페이스의 정의
• 자바에서 인터페이스를 정의하기 위해서는
interface 키워드를 사용하여 선언해야 한고 메서
드 내용을 정의하지 말아야 한다.
• 사용예)
public interface Figure{
public String getName();
public double getArea();
}
13년 10월 25일 금요일
51. 인터페이스 구현
• 자바에서 인터페이스를 구현하기 위해서는 구
현할 클래스에서 implements 키워드로 인터페
이스를 구현해야 한다.
사용예)
public class Triangle implements Figure{
...
public String getName() { ... }
public dboule getArea() { ... }
13년 10월 25일 금요일
52. 인터페이스의 사용
• 인터페이스를 구현한 객체들은 인터페이스 타
입의 변수에 할당될 수 있다.
• 사용예)
Figure a = new Triangle();
a.getArea();
13년 10월 25일 금요일
53. 상속
• 상속은 부모 클래스의 속성을 자식클래스에 물
려줄 수 있는 방법을 제공한다.
• 자바의 모든 클래스는 java.lang.Object 클래스
를 상속받고 있다.
• 사용예)
public class Bmw320d extends Car{
....
13년 10월 25일 금요일
54. 오버라이딩(Overriding)
• 자식 클래스는 부모 클래스의 메서드를 재정의
하여 사용할 수 있다. 이를 오버라이딩
(overriding) 이라고 부른다.
• 사용예
public class Bmw320d extends Car{
@Override
public void printCarName(){ ...
13년 10월 25일 금요일
55. 다형성(polymorphism)
• 사전적 정의 : 같은 종에서 개체가 형태와 형질
등에 대해 다양성을 나타내는 상태
• 자바에서의 의미 : 동일한 부모 클래스를 상속
받은 자식클래스들에서 부모에게 물려받은 공
통 속성이외에 자식클래스만의 다양한 특성을
만들 수 있다.
13년 10월 25일 금요일
56. super
• 자식 객체에서 부모 객체에 접근하기 위해서
사용되는 키워드
• 부모 객채 셍성자/메서드 호출 방법
super(인자1, 인자2, ...)
super.메서드이름(인자1, 인자2, ...)
super(speed, gearType, engineType..)
super.print();
13년 10월 25일 금요일
57. 추상클래스와 메서드
• abstract 키워드를 이용하여 선언하며 추상 클
래스의 일부 클래스는 몸체를 구현할 수도 있
고, 인터페이스 처럼 메서드 선언만 할 수도 있
다.
• 추상 클래스를 상속받은 클래스에서 선언받은
클래스를 구현하면 된다.
public abstract class Parent{
abstract void print();
13년 10월 25일 금요일
63. java.util.Calendar 클래
스
• Calendar 클래스는 시간과 년(YEAR), 월
(MONTH), 일(DAY_OF_MONTH), 시간
(HOUR) 등의 날짜 시간관련 데이터를 다루
기 위한 추상 클래스이다. 이 클래스에서 표현
되는 시간은 GMT 기준으로 1970년 1월 1일
00시 00분 00초 이후의 시간을 밀리세컨드 단
위의 숫자로 표현될 수 있다.
• Calendar calendar = new
GregorianCalendar(2013,4,20);
13년 10월 25일 금요일
64. 날짜 포멧
• DateFormat 클래스
// Locale KOREAN
formatter = DateFormat.getDateInstance(...);
today = new Date();
dayStr = formatter.format(today);
System.out.println(dayStr);
13년 10월 25일 금요일
65. 날짜 포멧(계속)
• SimpleDateFormat
String pattern = "서기 yyyy년 MM월 dd일 HH
시 mm분 ss초 ";
SimpleDateFormat formatter = new
SimpleDateFormat(pattern, Locale.KOREA);
String todayStr = formatter.format(today);
13년 10월 25일 금요일
67. 정규식
• 정규식(Regular Expression)은 문자열에서 특
정 단어, 특정 문자의 패턴과 일치하는 문자열
을 찾는 방법을 제공하는 특정 패턴이다.
• 패턴 종류
[abc] : a 또는 b 또는 C가 있는 문자열
[^abc] : a, b, c 가 없는 문자열
[a-zA-Z] : a부터 z, A부터 Z가 있는 문자
열
[a-d[m-p]] : a부터 d 또는 m부터 p
[a-z&&[def]] : d, e, f 문자
13년 10월 25일 금요일
68. 정규식(계속)
• 미리 정의된 패턴
. : 모든 문자
d : 숫자
D : 숫자가 아닌 문자
s : 공백문자
S : 공백이 아닌 문자
w : 알파벳과 숫자
W : 알파벳과 숫자가 아닌 문자
13년 10월 25일 금요일
69. 정규식(계속)
• 수량자(정량자)
X? : X값이 한번 또는 나타나지 않음
X* : X값이 0번 이상 나타남
X+ : X값이 1번 이상 나타남
X{n} : X값이 n번 이상 나타남
X{n,} : X값이 최소 n 번 이상 나타남
X{n,m} : x값이 최소 n번에서 m번까지
나타남
13년 10월 25일 금요일
70. 정규식(계속)
• 정규식 사용방법
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
13년 10월 25일 금요일
71. Properties 파일
• Properties 파일은 키와 값 쌍으로 구성되어있
다. log.dir=/log/application_log와 같이 log.dir
이 키(key)이고 /log/application_log가 값이다.
• 자바에서는 Properties 객체를 제공한다.
prop = new Properties();
prop.load(getClass().getResourceAsStream(".
/default.properties"));
13년 10월 25일 금요일
72. 자바의 환경변수
• OS에서는 환경변수를 Properties와 동일한
방식으로 보관하고 있다.
• System.getenv() 메서드는 JVM의 환경변수
Map 형식으로 반환한다.
13년 10월 25일 금요일
74. 제네릭
• 제네릭(Generic)은 파라미터의 형식을 미리
정의하는 것이다.
• class 클래스명 <T1, T2, ... Tn>{ ... }
• 타입파라미터 : T(Type), K(Key), N(Number),
E(Element),V(Value), 기타
• Type<String> a = new Type<String>();
• 제네릭 메서드
13년 10월 25일 금요일
75. 타입 추론과 타입추론
• 자바 컴파일러는 메서드 호출 시, 객체 생성 시
에 제네릭 타입을 유추할 수 있다. 추론 알고리
즘은 인자의 타입이나 호출 결과로 반환 되는
값에 의해 결정된다.
• 예)
public class JukeBox<T extends Number>
{ ... }
JukeBoxDemo.addJukeBox(new Integer(10),
list);
13년 10월 25일 금요일
76. 와일드 카드
• 제네릭 코드에서 명시적으로 어떠한 타입의
객체가 들어오는지 모를 경우, ? 기호를 사용하
구분
사용하는 곳
상한와일드카드
<? extends T>
써야하는 곳
하한와일드카드
<? super T>
읽어야 하는 곳
무제한와일드카드
13년 10월 25일 금요일
형태
<?>
쓰거나 읽어야 하는
곳
77. 어노테이션
• 어노테이션은 프로그램에 대한 메타데이터를
제공하는 역할을 한다. 하지만 프로그램의 코
드로서 동작하지는 않는다.
• 선언 : public @interface Description {
• 사용 : @Description( ... ) public class
TestAnnotation {
13년 10월 25일 금요일
80. Set
• 정의 : 인터페이스이고 자료를 중복해서 저장
할 수 없는 목록
• 주요 클래스 : TreeSet, HashSet,
LinkedHashSet
• Collection<Type> list = new
HashSet<Type>();
• 주요 메서드 : add, remove, set, get
13년 10월 25일 금요일
81. List
• 정의 : 인터페이스이며 중복된 자료를 저장하
는 목록
• 주요 클래스 : ArrayList, LinkedList
• List<String> list = new ArrayList<String>();
• 주요 메서드 : get, set, add, remove, indexOf
13년 10월 25일 금요일
82. Queue
• 정의 : 선입선출 구조의 자료구조를 제공
• 주요 클래스 : LinkedList
• Queue<String> linkedQueue = new
LinkedList<String>();
• 주요 메서드 : element, add, peek, poll, offer
13년 10월 25일 금요일
83. Deque
• 정의 : queue 자료구조는 한 쪽에서만 입력이
되고 다른 한 쪽에서는 출력만 되는 구조인 반
면에 deque는 양쪽에서 모두 입출력이 가능한
구조이다.
• 주요 클래스 : ArrayDeque,
LinkedBlockingDeque
• 주요 메서드 : addFirst, addLast,
pollLast,pollFirst, peekFirst, peekLast
13년 10월 25일 금요일
84. Map
• 정의 : 키와 값으로 이루어진 자료구조
• 주요 클래스 : HashMap, TreeMap,
LinkedHashMap
• 주요 메서드 : put, get, remove, size, keySet,
containKey
13년 10월 25일 금요일
86. 예외
• 컴파일 또는 프로그램 실행 도중에 예상치 못
한 데이터가 유입되거나 문제가 발생할 경우
에 발생하는 이벤트
• 예외(Exception)객체에 에러가 발생했을 때
상태와 정보가 저장된다.
• 예외가 발생하면 시스템에서 예외를 던진다.
• 예외를 처리할 수 있도록 예외를 잡아야 한다.
13년 10월 25일 금요일
87. 예외 처리방법
try{
// 예외가 발생할 것 같은 구문
}catch(Exception1 e1){
// e1라는 이름을 가진 Exception1 객체
}catch(Exception2 e2){
// e2라는 이름을 가진 Exception2 객체
}finally{
// finally 내의 괄호 구문은 무조건 실행 된다.
}
13년 10월 25일 금요일
88. 예외 클래스
모든 예외 클래스는
Exception 클래스를
상속받고 있다.
Exception 클래스에
서는 getMessage,
printStackTrace,
toString 메서드 제공
13년 10월 25일 금요일
89. 예외 던지기
public void execute() throws IOException {
...
}
public void execute(List<String> list){
if(list == null){
throw new ListException();
}
...
}
13년 10월 25일 금요일
90. try-resource
AutoCloseable를 구현한 클래스에 한하여 사
용
자동으로 리소스를 반환해준다.
try(BufferedReader in = new
BufferedReader(new FileReader("foo.in"))){
System.out.println(in.readLine());
}catch(Exception e){ }
13년 10월 25일 금요일
91. 사용자 정의 예외
• 사용자 정의 예외를 만들기 위해서 Throwable
을 상속받은 Exception 및 하위 클래스를 상속
받아 만듬
• 예)
public class ListException extends
RuntimeException { ... }
13년 10월 25일 금요일
93. 프로세스와 쓰레드
• 프로세스 : 독립적인 자원을 가지고 하나의 독
립된 실행단위. 프로세스는 별도의 메모리 공
간을 가지고 있다.
• 쓰레드 : 경량 프로세스라고 부르며 별도의 자
원과 메모리 공간을 가지고 있다. 하나의 프로
세스는 하나의 쓰레드를 가지고 있다.
13년 10월 25일 금요일
94. 쓰레드 생성
• Runnable 인터페이스로 쓰레드 구현
• Thread 클래스를 상속받아 쓰레드 구현
• Thread 클래스의 주요 메서드
interrupt() : 쓰레드의 중단
join() : 쓰레드의 대기
13년 10월 25일 금요일
95. 동기화 문제
1. 쓰레드 A : C 변수를 조회한다. => 0 값을 얻는다.
2. 쓰레드 B : C 변수를 조회한다. => 0 값을 얻는다.
3. 쓰레드 A : C 변수에 1을 추가한다 => C 변수에는 1
이 들어있다.
4. 쓰레드 B : C 변수에 1을 뺀다 => C 변수에는 0이 들
어있다.
5. 쓰레드 A : C 변수를 조회한다. => 쓰레드 A는 0을 얻
는다.
13년 10월 25일 금요일
96. synchronized와 기본락
• 쓰레드 간의 간섭과 메모리 불일치 문제 해결
을 위해 synchronized 구문과 메서드를 제공
• public synchronized void increment() {...}
• 자바의 모든 객체는 Lock을 가지고 있다. 이를
모니터락 또는 모니터라고 부른다.
• 쓰레드에서 객체에 접근하려고 할 때 객체의
모니터락을 획득한 뒤에 객체에 접근한다.
13년 10월 25일 금요일
97. 교착상태,기아상태
• 교착상태(DeadLock)은 두 개 이상의 쓰레드
가 서로 끝나기를 기다리고 있는 상태
• 기아상태(Starvation)는 다수의 쓰레드가 하나
의 자원을 공유할때 하나의 쓰레드가 자원을
점유하고 놔주지 않는 상태
• synchronized 를 이용해서 자원을 동기화할
때 위의 상태에 빠지지 않도록 조심해야함
13년 10월 25일 금요일
101. 기본 I/O
•
•
13년 10월 25일 금요일
입력 스트림 : 소스에서 데
이터를 순차적으로 읽는
것
출력 스트림 : 대상에 데이
터를 순차적으로 쓰는 것
102. 바이트,캐릭터,버퍼스트
림
• 바이트 스트림 : 8 바이트 단위로 입/출력하는
스트림, FileInputStream, FileOutputStream
• 캐릭터 스트림 : 문자형 데이터타입을 지원하는
스트림, 캐릭터 셋을 설정해야함, FileReader,
FileWriter
• 버퍼 스트림 : 버퍼를 가진 스트림,
BufferReader, BufferWriter,
BufferedInputStream, BufferedOutputStream
13년 10월 25일 금요일
103. 콘솔출력 및 포멧팅
• Console console = System.console();
• System.out.format(“ 3 x 4 는 %d 이다”, i);
• %[인자번호$][플래그][폭][.정밀도]유형
• System.out.format("%1$+20.5f
%n",Math.PI); -> "
13년 10월 25일 금요일
+3.14159"
104. 데이터, 객체 스트림
•
•
객체 스트림은 파일 또는 네트워크에 객체를 저장할
수 있는 I/O를 제공해준다. ObjectInputStream,
ObjectOutputStream
•
13년 10월 25일 금요일
데이터 스트림은 String 타입의 데이터뿐만 아니라
기본형 타입의 값도 다룰 수 있다. DataInputStream,
DataOutputStream
직렬화(serialization)는 객체를 저장하기 위해서 복원
가능한 형태의 스트림으로 저장하는 행위를 말한다.
105. nio.Path클래스
•
•
•
•
•
•
13년 10월 25일 금요일
Path 클래스는 디렉토리와 파일 경로에 대한 정
보를 담고 있다.
Path p = Paths.get("/Users/system")
p.getName() : Users
p.toString() : /Users/system
p.getNameCount() : 3
p.subPath(0,1) : Users
106. 디렉토리와 파일 다루기
• Files 클래스는 파일과 디렉토리를 다루는데
유용한 메서드를 제공해주고 있다.
• Files.exists, Files.notExists, Files.isWritable,
Files.isExecutable, Files.isSameFile
• Files.copy, Files.move, Files.readAttribute,
Files.getFileStore
• Files.createDirectories,
Files.newDirectoryStream
13년 10월 25일 금요일
107. 파일에 읽고 쓰기
• Files.readAllBytes, Files.readAllLines,
Files.write
• Files.newBufferedWriter,
Files.newBufferedReader
• SeekableByteChannel s =
Files.newByteChannel(...)
13년 10월 25일 금요일
108. FileVisitor
•
FileVisitor는 특정 조건에 맞는 파일 또는 디렉토리
를 추출할 수 있게 해준다.
•
•
•
visitFile : 디렉토리 내의 파일이 호출 되었을 때
•
visitFileFailed : 디렉토리 내의 파일을 호출 할 수 없
을때
13년 10월 25일 금요일
preVisitDirectory : 디렉토리 내에 들어가기 전에
postVisitDirectory : 디렉토리에서 나올 때, 이 때에
는 하위 디렉토리는 탐색이 끝났다.
110. OSI 7 계층
A컴퓨터
B컴퓨터
Application layer
Application layer
Presentation layer
Presentation layer
Session layer
Session layer
Transport layer
Transport layer
Network layer
Network layer
Datalink layer
Datalink layer
Physical layer
Physical layer
13년 10월 25일 금요일
111. TCP와 UDP
• TCP : 인터넷 프로토콜(IP)기반으로 동작하며
세션이 유지된 상태로 메시지를 전달
• UDP : 인터넷 프로토콜(IP)기반으로 동작하며
데이터 전송에 대한 신뢰성이 없다.
13년 10월 25일 금요일
112. 포트
•
13년 10월 25일 금요일
포트 : 하나의 물리적
인 커넥션을 여러 개
의 연결로 분할하여
사용할 수 있도록 부
여되는 번호
113. URL 클래스
• URL은 웹페이지의 주소를 의미함
• 자바에서는 손쉽게 웹페이지에 접근할 수 있
도록 URL클래스를 제공
• URL hostURL = new URL("http://
blog.pizzastudio.org/");
• BufferedReader br = new
BufferedReader(new
InputStreamReader(host.openStream()));
13년 10월 25일 금요일
114. TCP프로그래밍
• 서버와 클라이언트 프로그램 구조
• 서버: server = new ServerSocket(9999);
clientSocket = server.accept();
• 클라이언트 : socket = new
Socket("localhost", 9999);
13년 10월 25일 금요일
115. UDP 프로그래밍
• UDP는 독립적인 데이터그램 단위로 데이터
를 잘라서 전송한다. 데이터그램이 순서대로
도착할 지에 대한 보장이 없다.
• DatagramSocket socket = new
DatagramSocket(9998); DatagramPacket
packet = new DatagramPacket(buf,
buf.length); socket.receive(packet);
socket.send(packet);
13년 10월 25일 금요일
117. 데이터베이스
• 자료를 저장하고 관리하기 위한 별도의 시스
템
• 자료저장 방법에 따라 관계형 데이터베이스,
객체형 데이터베이스등이 있으나 현재 관계형
데이터베이스가 가장 널리 사용됨
• 대표적인 제품은 Oracle, MySQL, MS-SQL등
이 있음
13년 10월 25일 금요일
118. 관계형 데이터베이스
• 자료를 저장할 때 테이블 단위로 자료를 저장
함
• 테이블은 행과 열로 구분되어 있는 구조
• SQL이라는 일종의 언어를 통해서 자료를 질
의할 수 있음
• SQL : select * from emp; select * from dept;
• select, insert, update, delete, create
13년 10월 25일 금요일
119. JDBC
• 데이터베이스에 접근하여 작업할 수 있도록
연결을 제공하는 라이브러리 모음
• 데이터베이스별로 JDBC 드라이버가 존재한
다.
• JDBC 인터페이스는 모두 동일하기 때문에 데
이터베이스별로 JDBC를 사용하는 방법은 동
일하다.
13년 10월 25일 금요일
120. Connection
•
•
•
jdbc:oracle:thin -> jdbc 드라이버 이름
•
•
13년 10월 25일 금요일
Connection con =
DriverManager.getConnection("jdbc:oracle:thin:
@//localhost:1521/xe","system","manager");
xe -> 오라클 DB의 sid
localhost:1521 -> 데이터베이스 서버의 주소와 포
트번호
system, manager -> DB의 아이디와 패스워드
122. ResultSet 타입
• 커서의 동작방
식을 지정하거
나 ResultSet의
변경을 데이터
베이스에 직접
반영할 수 있다.
13년 10월 25일 금요일
TYPE_FORWARD_ONLY
TYPE_SCROLL_INSENSITIVE
TYPE_SCROLL_SENITIVE
CONCUR_READ_ONLY
CONCUR_UPDATEABLE
123. PreparedStatement
• PreparedStatement ps =
con.prepareStatement("select * from emp
where emp_no = ? ");
ps.setInt(1, 258652);
rs = ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1) + " "
+ rs.getString(2));
}
13년 10월 25일 금요일
124. RowSet
•
•
13년 10월 25일 금요일
rowSet = new OracleCachedRowSet();
rowSet.setUrl(dbUrl);
rowSet.setUsername(username);
rowSet.setPassword(password);
rowSet.setCommand("SELECT * FROM EMP");
rowSet.first();
rowSet.updateString("employee_name", "1." +
rowSet.getString("employee_name"));
...
rowSet.updateRow();
126. JComponent
• JComponent -▷ Container -▷ Component
• 스윙의 모든 컴포넌트는 JComponent를 상속
받고 있다.
• setToolTipText, setBorder,
setMinimumSize, 더블 버퍼링, 키 연결, 드래
그 앤드롭 관련 기능 제공
13년 10월 25일 금요일
128. Label, TextField,
TextArea
• JLabel label = new JLabel("라벨입니다.",
JLabel.CENTER);
• JTextField field = new JTextField(20);
• JTextArea area = new JTextArea(20,10);
13년 10월 25일 금요일
129. Button
• JButton button = new JButton("저장");
• JCheckBox krBox = new JCheckBox("한
국");
• JRadioButton krRad = new
JRadioButton("한국");
• ButtonGroup group = new ButtonGroup();
• group.add(krRad);
13년 10월 25일 금요일
130. Dialog
•
•
public class DialogExample extends JPanel implements
ActionListener {
…
@Override public void
actionPerformed(ActionEvent e) {
•
13년 10월 25일 금요일
JOptionPane.showMessageDialog(frame, "다이얼로그
테스트입니다.");
메시지 타입: ERROR_MESSAGE,
INFORMATION_MESSSAGE,WARNING_MESSAGE,
QUESTION_MESSAGE, PLAIN_MESSAGE
131. Progress monitor
• 프로그레스 모니터를 사용하면 다이얼로그에
진행상태를 표시할 수 있다.
• ProgressMonitor progressMonitor = new
ProgressMonitor(ProgressMonitorExample.
this,"Task Number 1
", "", 0,
task.getLengthOfTask());
13년 10월 25일 금요일
132. Table, Scroll Pane
• JTable table = new JTable(data,
columnNames);
JScrollPane scrollPane = new
JScrollPane(table);
table.setFillsViewportHeight(true);
13년 10월 25일 금요일
133. ComboBox와 List
• JComboBox fruitList = new
JComboBox(fruits);
• DefaultListModel
model = new
DefaultListModel();
• JList list = new JList(model);
• list.setSelectionMode(ListSelectionModel.SI
NGLE_INTERVAL_SELECTION);
13년 10월 25일 금요일
134. 이벤트 처리
pubic class EventExample … implements
ActionListener{ // 1. 이벤트 리스너 작성
// 2. 이벤트 리스너에서 이벤트를 받았을 때 처리해
야할 내용을 작성
public void actionPerformed(ActionEvent e){ ... }
public void test(){
// 3. 이벤트를 받아야할 컴포넌트에 이벤트 리
스너를 등록한다.
btn.addActionListener(this);
13년 10월 25일 금요일
135. 이벤트의 종류
• 캐럿 리스너
• 속성 변경 리스너
• 액션 리스너
• 컨테이너 리스너
• 포커스 리스너
• 아이템 리스너
13년 10월 25일 금요일
• 리스트 선택 리스너
• 마우스 리스너