Java 9장. 인터페이스와 예외처리 public class SumTest {

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
10. 예외 처리.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
10장 예외 Lab 10-1.
Java 10장. 다중 스레드 public class SumTest {
JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.
[INA470] Java Programming Youn-Hee Han
직렬화와 역직렬화에 대하여 직렬화 가능 클래스의 선언 방법
Lesson 3. 입출력과 제어문.
19장 스윙과 이벤트 처리 Section 1 스윙 컴포넌트 Section 2 이미지 아이콘과 라벨
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 9. 예외처리.
Lesson 6. 형변환.
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Power Java 제14장 배치 관리자.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
14. 예외처리.
10장. 예외처리.
자바 5.0 프로그래밍.
[INA470] Java Programming Youn-Hee Han
13. 연산자 오버로딩.
예외 처리 및 스레드 클래스 활용 학습목표 오류 발생 시 무조건 정지하지 않고 경우에 따라서 예외 처리하여 정상 작동을 하는 경우의 Exception 클래스에 대해서 학습한다. 멀티미디어 파일에서 동시에 다운로드 받는 효과를 갖을 수 있는 스레드(Thread) 클래스에.
제14장 예외처리와 템플릿 예외 처리의 개요를 학습한다. 예외 처리를 적용할 수 있다. 템플릿의 개념을 이해한다.
7장 인터페이스와 추상 클래스.
Method & library.
JA A V W. 03.
Java 2장. 자바의 환경 public class SumTest {
전자정부 표준프레임워크 호환성 가이드 전자정부 표준프레임워크 사업단 실행환경 개발팀.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
Power Java 제11장 상속.
JA A V W. 06.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
CHAP 21. 전화, SMS, 주소록.
12. 상속 : 고급.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
[ 단원 04 ] 반복과 배열.
OpenCV 설정 2.21 만든이 딩딩.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Chapter 10 데이터 검색1.
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Power Java 제14장 배치 관리자.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
자바 객체 지향 프로그래밍 Ps lab 김윤경.
JAVA 프로그래밍 16장 JNLP.
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

Java 9장. 인터페이스와 예외처리 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 + "입니다"); }

학습목표 인터페이스의 개념과 사용방법에 관해 학습한다. 인터페이스의 상속과 인터페이스를 통한 형변환을 학습한다. 예외의 개념과 예외 관련 클래스를 학습한다. 두 가지 예외 처리 방법에 관해 학습한다.

목차 section 1 인터페이스의 개요와 인터페이스의 정의 section 2 인터페이스의 사용 6-1 메소드에서 예외 처리 6-2 호출한 메소드에 예외를 넘겨주는 방법

인터페이스(interface) 형식 1 인터페이스의 개요와 인터페이스의 정의 상수와 메소드 선언들의 집합 추상 클래스보다 더욱 완벽한 추상화를 제공 public interface 인터페이스이름 [extends 인터페이스이름, .....] { ..... 상수선언 ..... 메소드선언 } 형식 public interface Sleeper { public long ONE_SECOND = 1000; public long ONE_MINUTE = 60000; public void wakeup(); }

클래스에서 인터페이스를 사용하기 위해 implements 예약어를 사용 2 인터페이스의 사용 클래스에서 인터페이스를 사용하기 위해 implements 예약어를 사용 [public/final/abstract] class 클래스이름 extends 상위 클래스이름 implements 인터페이스 이름[, 인터페이스이름, .....] { … 멤버 변수선언 … 생성자 … 메소드선언 ... 인터페이스에 선언된 모든 메소드를 오버라이딩하여 구현하여야 한다. } 형식

클래스에서 인터페이스를 사용하기 위해 implements 예약어를 사용 2 인터페이스의 사용 클래스에서 인터페이스를 사용하기 위해 implements 예약어를 사용 public interface Sleeper { public long ONE_SECOND = 1000; public long ONE_MINUTE = 60000; public void wakeup(); } public interface Worker { public long WORK_TIME = 8; public void sleep(); public class Man implements Sleeper, Worker { public void wakeup() { System.out.println("빨리 일어나 !!"); public void sleep() { System.out.println("빨리 자 !!"); .......... Man 클래스는 두 개의 인터페이스를 포함하고 있다 인터페이스에서 선언된 메소드는 모두 오버라이딩하여 구현하여야 한다.

실습예제 2 인터페이스의 사용 InterfaceTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 interface IStack { void push(int item); int pop(); } class FixedStack implements IStack { private int stack[]; private int tos; FixedStack(int size) { stack = new int[size]; tos = -1; public void push(int item) { if(tos==stack.length-1) System.out.println("스택이 꽉찼음"); else stack[++tos] = item; 두 개의 메소드를 가진 인터페이스 인터페이스를 포함하는 클래스 인터페이스에서 선언된 메소드 오버라이딩

실습예제 2 인터페이스의 사용 InterfaceTest1.java 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 public int pop() { if(tos < 0) { System.out.println("스택이 비었음"); return 0; } else return stack[tos--]; public class InterfaceTest1 { public static void main(String args[]) { FixedStack mystack1 = new FixedStack(10); FixedStack mystack2 = new FixedStack(5); for(int i=0 ; i<10 ; i++) mystack1.push(i); for(int i=0 ; i<5 ; i++) mystack2.push(i); 인터페이스에서 선언된 메소드 오버라이딩

실습예제 2 인터페이스의 사용 InterfaceTest1.java 35 36 37 38 39 40 41 42 43 System.out.println("스택 : mystack1"); for(int i=0 ; i<10 ; i++) System.out.print(mystack1.pop() + " "); System.out.println(); System.out.println("스택 : mystack2"); for(int i=0 ; i<5 ; i++) System.out.print(mystack2.pop() + " "); }

2 인터페이스의 사용 프로그램 설명 00~00 : 스택을 구현하기 위한 인터페이스를 작성. 이 인터페이스를 포함하는 모든 클래스는 반드시 두 개의 메소드(push()와 pop())를 구현하여야 한다. 00~00 : 인터페이스를 포함하는 스택 클래스를 작성하였다. 두 개의 메소드를 오버라이딩하여 구현하였다. 스택은 정수의 배열로 구성하였다. 00~00 : 10개와 5개의 요소를 가진 스택(배열)을 생성하였으며, 각각의 스택에 정수를 저장하고, 저장된 스택으로부터 pop() 메소드를 수행하여 출력하였다.

인터페이스 선언 시 필요에 따라 다른 인터페이스로부터 상속받을 수 있음 3 인터페이스 상속 인터페이스 선언 시 필요에 따라 다른 인터페이스로부터 상속받을 수 있음 public interface 인터페이스이름 extends 인터페이스이름[, 인터페이스이름,....] { .... 상수선언 .... 메소드선언 } 형식

인터페이스 선언 시 필요에 따라 다른 인터페이스로부터 상속받을 수 있음 3 인터페이스 상속 인터페이스 선언 시 필요에 따라 다른 인터페이스로부터 상속받을 수 있음 public interface Sleeper { public long ONE_SECOND = 1000; public long ONE_MINUTE = 60000; public void wakeup(); } public interface Worker { public long WORK_TIME = 8; public void sleep(); public interface People extends Sleeper, Worker { public int MAX = 24; public int MIN = 0; public void work(); public InterfaceClass implements People { ........... public void wakeup() { .......구현 public void sleep() public void worker() 인터페이스의 모든 메소드가 구현되어야 한다 인터페이스의 모든 메소드가 구현되어야 한다 인터페이스의 모든 메소드가 구현되어야 한다

예외 4 예외의 개요 프로그램 실행 중에 발생하는 예기치 않은 사건 class Error { public static void main(String[] args) { x(); } static void x() { y(); static void y() { z(); static void z() { int i = 1; int j = 0; System.out.println(i/j); x() 메소드 호출 y() 메소드 호출 z() 메소드 호출 1을 0으로 나눈다. 예외 발생

JVM의 묵시적인 예외 처리기 4 예외의 개요 예외가 발생하면 예외 객체를 생성 예외가 발생된 메소드에서 Error를 출력 메소드를 호출한 메소드에 예외를 반환 java.lang.ArithmeticException: / by zero at Error.z(Error.java:14) at Error.y(Error.java:9) at Error.x(Error.java:6) at Error.main(Error.java:3) 예외가 발생한 원인(by zero)과 예외와 연관된 클래스

자바에서는 예외 즉 오류도 객체로 취급 5 예외 관련 클래스 예외에 대하여 java.lang 패키지에 예외 관련 클래스를 제공 자바의 모든 예외 관련 클래스는 java.lang.Throwable 클래스의 하위 클래스로 제공

5 예외 관련 클래스 예외 클래스의 계층구조(상속관계) 290 page

입출력을 수행하는 프로그램 6 예외 처리 import java.io.*; public class IOExceptionError { public static void main(String args[]) { FileReader file = new FileReader("a.txt"); int i; while((i = file.read()) != -1) { System.out.print((char)i); } file.close();

6 예외 처리 실행시키면 다음과 같은 오류를 발생

6-1 메소드에서 예외 처리 메소드에서의 예외 처리 형식 6 예외 처리 try { ...... // try 블록 } 6-1 메소드에서 예외 처리 메소드에서의 예외 처리 try { ...... // try 블록 } catch(예외타입1 매개변수 1) { ..... // 예외 처리 블록1 catch(예외타입2 매개변수 2) { ..... // 예외 처리 블록 2 ........ catch(예외타입N 매개변수 N) { ...... // 예외 처리 블록 N finally { ...... // finally블록 형식

6-1 메소드에서 예외 처리 발생되는 예외를 메소드 내에서 직접 처리하기 위한 구문 6 예외 처리 6-1 메소드에서 예외 처리 발생되는 예외를 메소드 내에서 직접 처리하기 위한 구문 try 블록 : 조건 없이 실행되는 문장 catch 블록은 try 블록 바로 다음에 위치 finally 블록은 필요에 따라 선택적으로 사용

6-1 메소드에서 예외 처리 실습예제 6 예외 처리 ExceptionTest1.java 01 02 03 04 05 06 07 6-1 메소드에서 예외 처리 실습예제 ExceptionTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 import java.io.*; public class ExceptionTest1 { public static void main(String args[]) { try { FileReader fle = new FileReader("a.txt"); int i; while((i = fle.read()) != -1) System.out.print((char)i); fle.close(); } catch(Exception e) { System.out.println("예외 처리 루틴 : " + e + " 파일이 존재하지 않는다."); 입출력 패키지를 포함하는 문장(11장 설명) try 블록 지정 발생된 예외를 처리

6-1 메소드에서 예외 처리 프로그램 설명 a.txt 파일 없이 실행 6 예외 처리 6-1 메소드에서 예외 처리 프로그램 설명 01 : import문은 클래스를 포함하는 부분으로 입출력 관련 패키지에 속하는 클래스를 포함하는 명령문이다. 12장에서 자세하게 설명한다. 03~10 : 프로그램에서 예외가 발생할 가능성이 있는 부분을 try 블록으로 지정한다. 11~14 : 예외가 발생할 경우 처리하는 문장이다. a.txt 파일 없이 실행 a.txt 파일에 “알기쉽게 해설한 자바를 사랑합니다”를 저장하고 실행

6-2 호출한 메소드에 예외를 넘겨주는 방법 예외를 호출 메소드에 넘겨주는 방법 형식 6 예외 처리 6-2 호출한 메소드에 예외를 넘겨주는 방법 예외를 호출 메소드에 넘겨주는 방법 public void c() throws 예외클래스 [, 예외 클래스, .....] 형식 public static void main(String args[]) throws Exception { ........... } public void admin() throws FileNotFoundException { .......

6-2 호출한 메소드에 예외를 넘겨주는 방법 실습예제 6 예외 처리 ExceptionTest2.java 01 02 03 04 6-2 호출한 메소드에 예외를 넘겨주는 방법 실습예제 ExceptionTest2.java 01 02 03 04 05 06 07 08 09 10 import java.io.*; public class ExceptionTest2 { public static void main(String args[]) throws Exception { FileReader fle = new FileReader("a.txt"); int i; while((i = fle.read()) != -1) System.out.print((char)i); fle.close(); } throws() 절을 이용하여 예외를 JVM에 넘김

6-2 호출한 메소드에 예외를 넘겨주는 방법 프로그램 설명 6 예외 처리 6-2 호출한 메소드에 예외를 넘겨주는 방법 프로그램 설명 03 : 일반적으로 main() 메소드는 JVM에 의해 호출된다. 이 프로그램은 main() 메소드에서 throws 절을 이용하여 Exception 예외를 넘기고 있다. Exception 예외는 일반적인 예외 클래스들의 상위 클래스이다. 이 예외를 지정하면, 그 예외의 하위 클래스와 연관된 예외는 모두 처리할 수 있다. 그 이유는 상위 클래스의 모든 요소들을 하위 클래스에서 모두 가지고 있기 때문이다.

클래스 라이브러리 사용 [Step1] JDK 라이브러리 문서를 다운받는다. 자바 프로그래머가 되기 위한 필수조건 java.sun.com 사이트에 오른쪽 다운로드 부분의 “Java SE”를 선택한다. 두 번째 화면에서 아래쪽의 테이블에서 “Java SE 6 Documentation” 항목의 오른쪽 다운로드 버튼을 선택한다. 298 page

클래스 라이브러리 사용 자바 프로그래머가 되기 위한 필수조건 다음 화면에서 라이선스 동의를 구하는 부분을 선택하면 그다음 화면에서 압축된 문서 파일을 다운받을 수 있다. 299 page

클래스 라이브러리 사용 자바 프로그래머가 되기 위한 필수조건 다운받은 파일을 적당한 곳에 압축을 풀어 사용한다. 압축을 풀면 7개의 디렉터리와 하나의 파일이 나타난다.

클래스 라이브러리 사용 [Step2] JDK 라이브러리의 사용을 위한 참조 자바 프로그래머가 되기 위한 필수조건 특정 라이브러리 클래스를 사용하기 위해서는 클래스 이름과 패키지 이름을 가지고 검색해야 한다. 우선 설치된 디렉터리 중에서 api 디렉터리에 있는 index.html 파일을 웹검색기로 실행시킨다. 300 page

클래스 라이브러리 사용 자바 프로그래머가 되기 위한 필수조건 검색기의 왼쪽 아래 창에는 모든 클래스들이 알파벳 순으로 나열되어 있다. 오른쪽 창에는 패키지별로 클래스를 찾을 수 있도록 제공하고 있다. 원하는 클래스를 찾아 생성자와 메소드를 탐색하여 클래스를 사용한다. 각 클래스에서 제공되는 생성자와 인터페이스, 메소드 등에 관한 자세한 사용방법이 제공되고 있다.

학습정리 인터페이스의 개요와 인터페이스 정의 인터페이스의 사용과 상속 인터페이스는 상수와 메소드 선언들의 집합이다. 인터페이스는 추상 메소드와 상수만으로 구성된 추상 클래스라 할 수 있다. 인터페이스의 개념을 이용하여 다중 상속의 개념을 구현할 수 있다. 인터페이스의 사용과 상속 인터페이스를 포함하려면 implements 예약어를 사용한다. 인터페이스에 선언된 모든 메소드는 오버라이딩하여 구현하여야 한다. 클래스와는 달리 다수 개의 인터페이스를 지정할 수 있다. 인터페이스들은 상속된 계층구조를 이룰 수 있으며, 상속된 인터페이스를 포함하는 클래스는 관련된 모든 메소드를 오버라이딩해야 한다.

학습정리 예외의 개요 예외 관련 클래스 예외 처리 예외란 프로그램 실행 중에 발생하는 예기치 않은 사건을 말한다. JVM은 프로그램 실행 중 예외가 발생하면, 관련된 예외 클래스로부터 객체를 생성하여 예외를 발생시킨 메소드에 전달한다. 예외 관련 클래스 자바는 약 50여 개의 예외 관련 클래스를 제공하고 있다. RuntimeException 클래스와 Error 클래스와 연관된(하위 클래스 포함) 예외는 프로그램에서 처리하지 않는다. 프로그램 처리에 드는 시간과 비용이 크기 때문이다. 자바는 RuntimeException 클래스와 Error 클래스가 아닌 예외들은 명시적인 예외 처리를 요구한다. 예외 처리 자바는 2가지 예외 처리 방법을 제공한다. 한 가지 방법은 try-catch 절을 이용하여 예외가 발생하면, 발생한 메소드 내에서 예외를 처리하는 방법이며, 다른 방법은 발생된 예외를 호출한 메소드에 넘겨주는 방법이다.

9장. 인터페이스와 예외처리 수고하셨습니다. 질문 있습니까?