10. 예외처리 예외는어떤방법으로든지해결되어야합니다. 직접해결하기위해서는 try~catch 구문을사용할수도있으며 throws 구문을통해예외가발생했을때호출한메서드로예외를넘겨줄수도있습니다. 이장에서는예외의종류와예외처리방법, 사용자정의예외클래스와예외를발생시키는방법들에대해설명

Size: px
Start display at page:

Download "10. 예외처리 예외는어떤방법으로든지해결되어야합니다. 직접해결하기위해서는 try~catch 구문을사용할수도있으며 throws 구문을통해예외가발생했을때호출한메서드로예외를넘겨줄수도있습니다. 이장에서는예외의종류와예외처리방법, 사용자정의예외클래스와예외를발생시키는방법들에대해설명"

Transcription

1 Java

2 10. 예외처리 예외는어떤방법으로든지해결되어야합니다. 직접해결하기위해서는 try~catch 구문을사용할수도있으며 throws 구문을통해예외가발생했을때호출한메서드로예외를넘겨줄수도있습니다. 이장에서는예외의종류와예외처리방법, 사용자정의예외클래스와예외를발생시키는방법들에대해설명합니다. assert 키워드를통해특정조건을만족하는지여부를체크할수있는기능에대해서도알아보겠습니다. 그리고예외처리와 Assertion 기능을통해서요구사항정의단계에서선행조건과후행조건을올바른코드로옮기기위한지침을소개합니다. 10장의주요내용입니다. - try~catch - throws - 사용자정의예외 - throw 문 - Assertion 코드작성 - Assertion 코드컴파일및실행

3 Java 예외처리 예외처리 (Exception Handling) 는오류발생에대한대처방법중의하나입니다. 예외처리는시스템스스로오류를복구하는것이아니고오류발생가능성이있는부분에대한처리를미리프로그램해주는것입니다. 오류의종류는심각한오류 (serious error) 와심각하지않은오류 (mild error) 로나눌수있습니다. 심각한오류는메모리가부족할때발생하는 OutOfMemoryError 등이있습니다. 심각한 오류가발생하면오류는복구될수없습니다. 심각한오류가발생할경우프로그램은중지 됩니다. 자바에서는이런경우에만오류 (Error) 라고합니다. 가벼운오류는예외 (Exception) 라고부르며, 오류로취급은되지만프로그램이중지되지는않게할수있는오류를말합니다. 예를들면존재하지않는파일을읽을때발생하는 FileNotFoundException, 배열의범위를넘어서는 ArrayIndexOutOfBoundsException 등이있습니다. 존재하지않는파일을읽으려고할때에프로그램은멈추지않고파일이없음을알리는오류메시지만출력하고계속진행되게할수있을것입니다. 이와같은예외가발생했을경우처리하는것을예외처리라고합니다. 다음프로그램은실행시예외가발생하도록만든예입니다. ExceptionProblemExample.java 1: public class ExceptionProblemExample { 2: public static void main (String[] args) { 3: int i = 0; 4: String[] greetings = {" 안녕하세요.", " 반갑습니다.", " 또오세요."}; 5: 6: while (i < 4) { 7: System.out.println (greetings[i]); 8: i++; 9: } 10: 11: System.out.println(" 메인의마지막입니다."); 12: } 13: } 이프로그램은오류가발생하는데컴파일발생하는오류가아니고실행시발생하는예외입니다. while 문장은 i값이 3이될때까지 greeting[i] 데이터를출력하는코드블록을실행합니다. 그러나배열 greetings는 greetings[2] 까지데이터가저장되어있기때문에 i값이 3일경우배열의범위를넘어참조하게됩니다. 이렇게배열의범위를넘어선데이터를참조하려할경우자바에서는예외가발생하여프로그램실행이중단됩니다.

4 Chapter 예외처리 10 프로그램의실행결과는다음과같습니다. 실행결과를보면, greetings[2] 까지출력하고 greetings[3] 을실행할때에 ArrayIndexOutOfBoundsException 이발생했음을알수있습니다. 이들예외상황들은자 바프로그램을개발하는도중에종종만나게됩니다. 앞의프로그램을수정하여오류가발생하지않게하려면 5 라인을다음과같이기술할수 있습니다. 5: while (i < 3) { 그런데 7 라인을수정하지않고문제를해결할수있는방법이있습니다. 즉배열의참조되는 인덱스를수정하지않고프로그램이정상실행되도록하는방법에대하여알아보겠습니다. 예외처리가발생하는이유는프로그램을잘못작성했을수도있지만, 그렇지않을경우도 있습니다. 예외는여러상황에서발생할수있으며, 예외처리는예외사항을찾아내이를처리 한다음계속프로그램이진행되도록하는것입니다. 예외처리방법은크게두가지로나눌수있습니다. 첫번째는 try catch 문을사용하는방법과, 두번째는 throws 선언문을사용하는방법이있습니다. try ~ catch 문을이용하여예외상황을처리하기위해받아들이는것을 예외를잡는다 (catch) 라고표현하고, throws 선언문을이용하여예외처리를자신을호출한메서드에게넘겨주는것을 예외를던진다 (throws) 라고표현합니다. try ~ catch 문장은예외를직접처리하는경우에사용하며, throws 선언문은메서드선언부에표기하여메서드를호출하는호출자에게예외를처리하도록합니다. 이후설명하는내용들은 try ~ catch와 throws 에대해서더자세하게설명하고있습니다. 예외처리에서기억해야할것이있습니다. 예외처리를사용하면예외가발생했을때 JVM 에서예외처리를담당하는부분을자동적으로호출해주지만, 예외를처리하기위한부분 은프로그래머가직접작성해야합니다.

5 Java try ~ catch 예외를처리하는방법중에서 try catch 문을이용한예외처리방법을살펴보겠습니다. 다음코드는앞에서배열의범위를넘어선데이터를출력할때오류가발생했던코드를 try catch 문을이용하여예외처리를하는예입니다. while 문의조건문은변경하지않은 상태에서배열의범위를넘어참조했을경우예외가발생하고이를처리하는예입니다. TryCatchExample.java 1: public class TryCatchExample { 2: public static void main (String[] args) { 3: int i = 0; 4: String[] greetings = {" 안녕하세요.", " 반갑습니다.", " 또오세요."}; 5: while (i < 4) { 6: try { 7: System.out.println(greetings[i]); 8: } 9: catch (ArrayIndexOutOfBoundsException e) { 10: System.out.println(" 예외발생했습니다."); 11: System.out.println(" 예외가발생한원인은 " + e.getmessage()); 12: System.out.println(" 예외처리를완료했습니다."); 13: } 14: finally { 15: System.out.println("finally 문은항상실행됩니다."); 16: } 17: i++; 18: } 19: System.out.println(" 메인의마지막입니다."); 20: } 21: } try catch 문장은크게 try, catch, finally 블록으로구성됩니다. 첫번째, try 블록으로예외가발생할가능성이있는문장을포함합니다. 6: try { 7: System.out.println(greetings[i]); 8: } try 블록에서 greeting[3] 의내용을출력하는도중에예외상황이발생할것입니다. 이처럼 예외가발생할것이라고예상되는문장들은 try 블록안에기술합니다. try 블록은단독으 로사용할수없습니다. 반드시 catch 블록또는 finally 블록과함께사용해야합니다.

6 Chapter 예외처리 10 두번째, catch 블록은 try 블록에서발생한예외상황을감지하여예외가발생했을때적 절한조치를취하기위해사용하는곳입니다. 9: catch (ArrayIndexOutOfBoundsException e) { 10: System.out.println(" 예외발생했습니다."); 11: System.out.println(" 예외가발생한원인은 " + e.getmessage()); 12: System.out.println(" 예외처리를완료했습니다."); 13: } catch 블록의실행은 try블록에서예외가발생했을때입니다. try블록에서예외가발생하지않으면 catch 블록은실행되지않습니다. catch 블록에서기술한예외가아닌다른예외가발생하면 catch 블록의예외는처리되지않습니다. 위의프로그램에서는 ArrayIndexOutOfBoundsException이발생했을경우에 catch 블록이실행됩니다. 이렇게 try블록안에서예외상황이발생하면 catch 블록이수행되며, 이때발생한예외는 ArrayIndexOutOfBoundsException 유형의인스턴스 (instance) 입니다. 따라서 catch 블록에서예외객체를이용할수있습니다. catch 블록에서는예외가발생한원인을출력하고있습니다. 세번째, finally 블록은 catch 블록과는다르게예외상황의발생여부에관계없이무조건 실행됩니다. 14: finally { 15: System.out.println("finally 문은항상실행됩니다."); 16: } try 문이실행되면 finally 블록은항상실행됩니다. 그래서 finally 문은항상실행됩니다. 라는문장은 try 문이실행될때마다계속출력됩니다. 프로그램실행도중에예외가발생해도프로그램이계속실행될수있는이유는프로그래머가예외상황을직접다룰수있기때문입니다. finally 블록은 try 블록에서할당받은자원을반납해야하는코드 35) 등을포함할수있습니다. finally는 try 블록또는 catch 블록에서 return문을만나더라도실행됩니다. 다음의경우에만 finally 블록이실행되지않습니다. System.exit() 구문을호출했을때. 전원이꺼져시스템이멈추었을때. finally 블록내부에서예외상황이발생했을때. try 블록을실행시키는스레드가죽었을때. try 블록에서한가지예외만발생하는것은아닙니다. catch 블록에서처리하려고하는 예외가아닌다른예외가 try 블록에서발생하면그예외는처리되지않습니다. 즉, 위의 35) 파일입 / 출력스트림이나데이터베이스커넥션등을닫아주는코드가있습니다.

7 Java 예에서 try블록에서 NullPointerException이발생하면그예외는처리되지않습니다. 예외가여러가지가발생할경우에는 catch블록을중복해서사용할수도있습니다. 그럴경우에일반적인예외 (Exception 계층구조에서상위예외클래스 ) 가먼저처리될수있으므로 Exception 계층구조에서상위클래스가하위클래스보다먼저 catch블록의인자로선언되어서는안됩니다. 다음코드는 try 블록에서여러개의예외가발생되는예입니다. CatchExample.java 1: public class CatchExample { 2: public static void main(string[] args) { 3: int a = (int)(math.random() * 100); 4: int b = (int)(math.random() * 4); 5: try { 6: System.out.printf("a=%d, b=%d, result=%d\n", a, b, divide(a, b)); 7: dosomething(a); 8: }catch(arithmeticexception ae) { 9: System.out.println("0 으로나누려고하고있습니다."); 10: System.out.println(ae.getMessage()); 11: }catch(exception e) { 12: System.out.println(" 예외가발생했습니다."); 13: System.out.println(" 예외발생원인 : "+e.getmessage()); 14: } 15: } 16: 17: public static int divide(int a, int b) { 18: return a/b; 19: } 20: 21: public static void dosomething(int a) throws Exception{ 22: if(a>50) { 23: throw new Exception("a 값이 50보다큽니다."); 24: } 25: System.out.println("50% 확률로실행됩니다."); 26: } 27: } 이코드에서 ArithmethicException catch 블록과 Exception catch 블록위치를바꾸면 "Unreachable catch block for ArithmeticException" 컴파일오류가발생합니다. 이코드는실행할때마다결과가다를수있습니다. dosomething() 메서드는인자값이 50보다크면따라서예외를발생합니다. throw 구문은예외를발생시키기위한키워드입니다. dosomething() 메서드에서예외를발생시키면 Exception catch 블록이실행되며, 발생한난수 b 값이 0일경우 ArithmethicException catch 블록이실행됩니다.

8 Chapter 예외처리 예외의종류 다음그림은예외클래스들의상속관계를클래스다이어그램으로나타낸것입니다. 빈삼각형을갖는실선은클래스일반화관계, 즉상속관계를나타냅니다. 그림은예외와관련된클래스들을개략적으로나타낸것입니다. 여기에나타나있지않은클래스들도많이있으므로예외클래스들에대해서더많이알고싶으면 API문서를참조해야합니다. 오류또는예외와관련된클래스는 Throwable의하위클래스들이며, 이중 Error클래스와그하위클래스들에서정의되어있는오류상황이발생하면프로그램이종료되는것이당연합니다. 그러나 Exception과그하위클래스들에정의되어있는것과관련있는예외상황이발생하면이들예외는처리의대상될수있습니다. 예외클래스계층구조에서 Exception의하위클래스들중에서 RuntimeException은설계상의문제또는구현코드문제들과관련된예외클래스들입니다. 즉, 프로그램이정상적으로실행되고있는상황에서발생해서는안되는실행도중의상태를알려주는예외클래스들입니다. 이런실행중의예외들의예를들면, 나누려고하는숫자가 0인경우, 배열의인덱스를벗어난참조, null인레퍼런스변수참조, 형변환예외, 보안과관련된예외상황등이있습니다. 올바르게설계되어구현된프로그램에서는절대로이런종류의예외가발생하지않으므로처리하지않고그대로두는것이보통입니다. 이들예외가발생하면실행중메시지가나오고프로그램을종료하므로예외를수정할수있습니다. 그리고 RuntimeException과그하위예외들은예외처리를하지않아도컴파일타임에는예외가

9 Java 발생할가능성이있는지체크하지않습니다. 그러나실행중에예외가발생하면프로그램 의실행은중단될수있습니다. 이들 RuntimeException 과그하위클래스들을컴파일시 예외발생유 / 무를판단하지않으므로비검증예외 (Unchecked Exception) 라고부릅니다. 비검증예외 (Unchecked Exception) 가아닌다른예외들이발생할가능성이있는메서드또는생성자를포함하는구문들은모두컴파일타임에예외처리여부를검사하기때문에반드시예외처리를해주어야합니다. 예를들면파일을찾을수없거나 URL을잘못지정한경우가그러한경우입니다. 이런것은사용자가잘못입력할때발생하며프로그래머가처리해야합니다. 예외들중에서 InterruptedException, IOException, SQLException 등과그하위예외들이발생할가능성이있는문장을작성할경우반드시예외처리코드를포함해주어야합니다. 개발자는 API 에서제공되는메서드를사용할때는사용하고자하는메서드가어떤예외 클래스를 throws 하고있는지확인하고그에맞는예외처리를해주어야할것입니다. 다음코드는검증 (Checked) 예외의예입니다. 검증예외를발생시키는메서드또는생성자 를사용할경우에반드시예외처리를해줘야컴파일오류가발생하지않습니다. CheckedExample.java 1: import java.io.ioexception; 2: 3: public class CheckedExample { 4: 5: public static void main(string[] args) { 6: System.out.println(" 값을입력받는프로그램입니다."); 7: byte[] data = new byte[100]; // 한번에 100byte 씩읽습니다. 8: try { 9: System.in.read(data); 10: } catch (IOException e) { 11: e.printstacktrace(); 12: } 13: System.out.print(" 입력한문자열은 : "); 14: System.out.println(new String(data).trim()); 15: } 16: } 위의프로그램은사용자로부터입력받은문자열을화면에다시출력하는예입니다. 사용자로부터문자열을입력받기위해 read() 메서드를사용했습니다. read() 메서드는 java.io.inputstream 클래스에정의되어있는메서드입니다. API 문서에서 read() 메서드를참고하면 Throws 항목에 IOException과 NullPointerException 이있는것을확인할수있습니다. Throws 항목에있는예외클래스들중에서비검증 (UnChecked) 예외가아닌예외가있을경우에는반드시예외처리를해줘야컴파일오류가발생하지않습니다. 비검증예외가아닌다른예외들은모두검증 (Checked) 예외입니다.

10 Chapter 예외처리 10 다음은자바언어에서미리정의된몇가지예외중에서발생빈도가높은비검증예외클래스를설명한것입니다. ArithmethicException : 일반적으로정수를 0(zero) 로나눗셈을할때발생합니다. NullPointerException : 인스턴스를만들기전에객체나메서드를액세스하면발생합니다. Image[] img= new Image[4]; System.out.println(img[0].toString()); ArrayIndexOutOfBoundException : 배열의인덱스를벗어난구성요소를액세스할때발생합니다 throws 예외상황을다루는방법으로 try catch 구문외에 throws 구문이있습니다. try~catch 문이예외가발생했을때직접해결을하고자하는코드라면 throws는메서드를호출한곳으로예외가발생했음을알리는코드입니다. 즉예외처리를직접수행하지않고호출자에게예외를던지는 (throws) 방법입니다. 예외가발생하는원인이실행되는메서드에있지않고호출하는메서드에게있을경우사용하는방법입니다. 그래야만예외가발생되는근본원인을해결할수있을것입니다. 간혹 main() 메서드에서 throws 해놓은코드를보실수도있습니다. main() 메서드에서 throws 하는것은예외처리를 JVM에게넘기겠다는의미입니다. 그러나 JVM이그예외를받아서처리해주지는않습니다. 예외가발생하면 JVM은예외메지를출력하고프로그램을종료시킬것입니다. main() 에서 throws 하는코드가있었다면테스트를위해사용

11 Java 한코드에서검증 (Checked) 예외를발생시키는구문을포함하기때문이라고생각하시기 바랍니다. throws 구문에서예외상황이여러개있을때는 ","(comma) 로구분하여나열하여표기 합니다. modifier return-type methodname() throws Exception1, Exception2...{ method-body; } 먼저다음의코드를보겠습니다. public void exceptionoccur() throws ArrayIndexOutOfBoundsException {... // 이안에서 ArrayIndexOutOfBoundsException 이발생했다고가정. } exceptionoccur() 메서드안에서 ArrayIndexOutOfBoundsException이발생하면, try catch문을처리할수있지만 try catch문을사용하지않고메서드의선언부에 throws를사용해도처리가가능합니다. 이경우는 exceptionoccur() 를호출한메서드에게발생한예외를던지는것입니다. 다음코드는 throws 구문을이용해예외상황을처리하는예입니다. ThrowsExample.java 1: public class ThrowsExample { 2: 3: static String[] greetings = {" 안녕하세요.", " 반갑습니다.", " 또오세요."}; 4: 5: public static void main(string[] args) { 6: int i = (int)(math.random()*4); //0, 1, 2, 3중하나가랜덤하게생성 7: 8: try { 9: doit(i); 10: }catch(exception e) { 11: System.out.println("main 에서예외처리했습니다."); 12: } 13: } 14: 15: public static void doit(int index) throws ArrayIndexOutOfBoundsException { 16: System.out.println(greetings[index]); 17: } 18: } 소스코드를보면 main() 메서드에서 doit() 메서드를호출했습니다. doit() 메서드호출시 인자의값은랜덤하게발생되어적용됩니다. 그런데만일랜덤하게발생된숫자가 3 일경

12 Chapter 예외처리 10 우에는 doit() 메서드에서예외가발생합니다. 그런데, doit() 메서드의선언부에서예외를 throws를사용하고있으므로 ArrayIndexOutOfBoundsException이발생할경우, 자신을호출한메서드에게이예외를던져라 (throws) 라는의미로해석할수있습니다. 따라서이경우, doit() 메서드를호출한 main() 메서드로예외가던져지게되는데, main() 메서드의입장에서는결국, doit() 메서드를호출하는곳에서예외가발생한것이고, 그래서이를 try catch를이용해서해결하고있습니다. 처음부터 doit() 메서드안에서 try ~ catch 블록을이용해예외를처리할수있습니다. 그러나 doit() 메서드에서예외가발생하는이유가인수로넘어오는 index 값이기때문에예외가발생된근본원인을해결하기위해메서드를호출하는곳에예외를보내주는것입니다. 참고로재정의 (Overriding) 와관련해서한가지더알고있어야할것이있습니다. throws로선언된메서드를재정의할때에재정의하는자식클래스의메서드에서는부모클래스의메서드에서 throws한예외가아닌새로운예외는 throws 할수없습니다. 즉, 재정의되는자식메서드에서는부모의메서드에서 throws 하는예외에비하여더적은개수의예외를 throws 하거나, 부모의메서드에서 throws 하는예외클래스의하위클래스예외가 throws 될경우만가능합니다. 자세한내용은 메서드재정의와 throws 절에서배웁니다 사용자정의예외 앞에서살펴본바와같이예외는시스템에서자동으로발생시켜주기때문에발생된예외를 try catch 혹은 throws 를이용해처리하면됩니다. 뿐만아니라프로그래머가직접예외 클래스를만들수있고, 이를원하는시점에발생시킬수도있습니다. 사용자정의예외 (user defined exception) 클래스를만든다는것은보통의클래스를만 드는것과동일합니다. 그러나유의할점은사용자정의예외클래스는반드시 Exception 클래스또는그하위클래스를상속 36) 받아서만들어야한다는점입니다. 다음프로그램은예외클래스를직접만들어사용하는예를보인것입니다. ServerTimedOutException.java 1: public class ServerTimedOutException extends Exception { 2: private int port; 3: 4: public ServerTimedOutException(String message, int port) { 36) 반드시 Exception 클래스를상속받을필요는없습니다. Exception 클래스뿐만아니라그하위클래스이면어떤클래스라도가능합니다.

13 Java 5: super(message); 6: this.port = port; 7: } 8: 9: public int getport() { 10: return port; 11: } 12: } 클래스선언부에서 Exception 클래스를상속받은후 ServerTimedOutException 클래스를정의하고, 나머지는일반적인클래스선언과동일합니다. 그리고예외클래스들도보통의클래스들처럼멤버변수를포함할수있습니다. 예외클래스도객체를생성할때멤버변수의값을초기화하기위해생성자를포함할수있습니다. super(message); 구문은사용자정의예외를발생시킬때예외의원인을예외객체가저장할수있도록합니다. 예외클래스도보통클래스들처럼메서드를포함할수있습니다 throw 사용자가직접선언한예외클래스또는 API에서제공하는예외클래스들을이용해서예외를발생시키려면 new 키워드를이용하여객체를생성하는것만으로는안됩니다. 다음과같이발생시키고싶은예외클래스의인스턴스를만든후, "throw"(throws가아니라 throw입니다.) 키워드를이용하여예외가발생되도록해야합니다. throw는사용자가만든예외를발생시킬때만사용할수있는것은아닙니다. 예외클래스로정의된예외라면어떤예외든지 throw를이용해예외를강제로발생시킬수있습니다. throw new ServerTimedOutException("Could not connect", 80); 다음프로그램은사용자가예외를정의하고발생시키는예입니다. 이전사용자정의예외 에서설명했던클래스 (ServerTimedOutException) 가작성되어있어야합니다. TestUserException.java 1: public class UserExceptionExample { 2: String defaultserver = "javaspecialist.co.kr"; 3: String alternativeserver = "consolbook.com"; 4: 5: public void connectme(string servername) throws ServerTimedOutException { 6: int success; 7: int porttoconnect = 80; 8: success = open(servername, porttoconnect); 9: if (success == 0) { 10: throw new ServerTimedOutException("Could not connect", 80);

14 Chapter 예외처리 10 11: } 12: } 13: public void findserver() { 14: try { 15: connectme(defaultserver); 16: System.out.println(defaultServer + " 에연결되었습니다."); 17: } 18: catch (ServerTimedOutException e) { 19: System.out.println( "Server timed out, trying alternative..."); 20: try { 21: connectme(alternativeserver); 22: System.out.println(alternativeServer + " 에연결되었습니다."); 23: } 24: catch (ServerTimedOutException e1) { 25: System.out.println(" 서버연결에실패했습니다."); 26: System.out.println( "Error : " + e1.getmessage() + "connecting to port " + e1.getport()); 27: } 28: } 29: } 30: public int open (String servername, int port) { 31: return (int)(math.random() * 2);//0 또는 1이리턴됩니다. 32: } 33: public static void main (String[] args) { 34: UserExceptionExample ue = new UserExceptionExample(); 35: ue.findserver(); 36: } 37: } 이예제는실제서버에접속하는프로그램은아닙니다. 사용자정의예외와 throw 구문을이해시키기위한용도로만들어진예외입니다. 예제코드에서프로그램시작점은 main() 메서드입니다. 이예제는서버에접속을시도하다가접속에문제가발생하면이미정의한 ServerTimedOutException을발생시킵니다. 주의할부분은 connectme() 메서드에서 open() 메서드를통해서버에접속을시도하는코드입니다. 이미정의되어있는 open() 메서드는 0또는 1값을반환합니다. 0을리턴하면접속에실패한것으로간주하여예외를만들고이를 throw합니다. throw 구문은예외를강제로발생시킬때사용하는구문입니다. if 블록에서 ServerTimedOutException이발생할수있으므로 connectme() 메서드선언부에 throws 구문을포함시켰습니다. 예외의발생원인이서버주소에기인한것일수있기때문에예외를 try ~ catch 블록으로처리하지않고 throws 선언문으로처리한것입니다. 예외가발생되면 try ~ catch문을이용예외상황을처리하게됩니다. catch 블록에는다른서버로접속시도를합니다.

15 Java 메서드재정의와 throws 메서드를재정의할때부모에서던지지않은새로운예외는던질수없다고했습니다. 메 서드재정의와 throws 대해좀더알아보겠습니다. 아래그림은 4개클래스를보여주고있습니다. 닫힌화살표를갖는실선은일반화 (Generalization) 를의미합니다. 즉, Super와 Sub 클래스는상속관계가있다는의미입니다. 열린화살표를갖는실선은연관관계 (Association) 를의미하며화살표를받는클래스의인스턴스가화살표를주는클래스의멤버로정의되어있음을의미합니다. 즉, Super 클래스의멤버변수로 FileSystem 객체가선언되어있다는것입니다. 전체적으로 Super 클래스는 FileSystem 클래스의기능을사용하고, Sub 클래스는 Database 클래스의기능을사용하고있음을보여주고있습니다. 시스템이초기개발되었을때에는 Super 클래스와 FileSystem 클래스만존재하였고, doit() 메서드는 FileSystem 클래스를이용해데이터를저장하고있었다고가정합니다. 이후시스템업그레이드가필요하여기존을확장할필요가있어 Database 클래스가추가된것입니다. Database의기능을사용하는클래스인 Sub는 Super를상속받아 doit() 메서드를재정의해야하는상황이발생한것입니다. 그런데 FileSystem 클래스의 save() 메서드는 IOException을 throws 하도록정의되어있었는데, Database 클래스의 insert() 메서드는 SQLException을 throws 하도록정의되어있다는것입니다. 이런상황에서 Sub의 doit() 메서드를어떻게재정의해야하는것이주어진과제입니다. 다음그림은 Super 클래스를상속받은 Sub 클래스에서 doit() 메서드가 SQLException 을 throws 할때발생하는오류메시지입니다.

16 Chapter 예외처리 10 이런상황을해결하는방법은재정의하는메서드에서 try 블록을이용해예외가발생한 코드를작성합니다. 그리고 catch 블록에서부모의예외를 throw 하도록하면재정의하 는메서드에서는부모의메서드에서 throws 한예외를 throws 할수있습니다. try { db.insert(num); } catch (SQLException e) { throw new IOException(e.getMessage()); } 다음설명하는코드들은메서드재정의시예외처리방법을보여주기위한클래스들입니다. FileSystem 클래스는파일에데이터를저장하는것을시뮬레이션하기위한코드입니다. save() 메서드의인자로전달된 num 값이 0 보다작으면예외를발생시키도록하고있습 니다. FileSystem.java 1: import java.io.ioexception; 2: 3: public class FileSystem { 4: public void save(int num) throws IOException { 5: if(num<0) { 6: throw new IOException("num 이 0보다작습니다."); 7: } 8: System.out.println("File 에저장됐습니다."); 9: } 10: } Super 클래스는 FileSystem 클래스의 save() 메서드를호출하고있습니다. save() 메서드 에서 IOException 이발생할가능성이있으므로 throws 를이용하여예외처리하였습니다. try~catch 문을이용하지않는이유는 save() 메서드인자로전달될값을 doit() 메서드를 호출하는곳으로부터전달받기때문입니다. Super.java 1: import java.io.ioexception; 2: 3: public class Super { 4: FileSystem fs = new FileSystem(); 5: 6: public void doit(int num) throws IOException { 7: System.out.println("Super.doIt"); 8: fs.save(num); 9: } 10: }

17 Java Database 클래스는데이터베이스에데이터를저장하는것을시뮬레이션하기위한코드입 니다. insert() 메서드에서 num 값이 100 보다크면 SQLException 을발생시킵니다. Database.java 1: import java.sql.sqlexception; 2: 3: public class Database { 4: public void insert(int num) throws SQLException { 5: if(num>100) { 6: throw new SQLException("num 이너무큽니다."); 7: } 8: System.out.println(" 데이터베이스에저장되었습니다."); 9: } 10: } Sub 클래스는 Super 클래스를상속받았습니다. 그리고 doit() 메서드를재정의하고있습 니다. insert() 메서드가 SQLException 을발생시키기때문에예외처리를해야합니다. 그 렇다고해서아래코드처럼작성하면오류가발생합니다. 그이유는앞에서언급했던것처 럼부모에서던지지않는새로운예외는재정의하는메서드에서던질수없기때문입니 다. public void doit(int num) throws SQLException {//Error System.out.println("Sub.doIt"); db.insert(num); } 다음코드는바르게작성된 Sub 클래스입니다. Sub.java 1: import java.io.ioexception; 2: import java.sql.sqlexception; 3: 4: public class Sub extends Super { 5: Database db = new Database(); 6: 7: public void doit(int num) throws IOException { 8: System.out.println("Sub.doIt"); 9: try { 10: db.insert(num); 11: } catch (SQLException e) { 12: throw new IOException(e.getMessage()); 13: } 14: } 15: }

18 Chapter 예외처리 10 다음코드는위의코드들을테스트하기위한코드입니다. Super 로선언된객체변수를이 용해호출하는 doit() 메서드는생성하고참조되는객체의유형에따라다르게동작할것 입니다. Super 클래스의인스턴스를참조하면 FileSystem 클래스를통해데이터를저장하 며, Sub 클래스의인스턴스를참조하면 Database 클래스를통해데이터를저장하는것을 시뮬레이션할수있습니다. ThrowsOverridingExample.java 1: import java.io.ioexception; 2: import java.util.random; 3: 4: public class ThrowsOverridingExample { 5: 6: public static void main(string[] args) { 7: Super[] works = new Super[2]; 8: works[0] = new Super(); 9: works[1] = new Sub(); 10: 11: Random rand = new Random(); 12: int data = rand.nextint(200); 13: for(super s : works) { 14: try { 15: s.doit(data); 16: } catch (IOException e) { 17: System.out.println(e.getMessage()); 18: } 19: } 20: }//end main 21: }//end class 자원관리자동화와멀티캐치 자원관리자동화 (automatic resource management) 와멀티캐치 (Multi-catch) 는 Java SE 7(JDK 1.7) 버전에추가된기능입니다. 자원관리자동화는 try문뒤에괄호를치고, 변수를선언할수있는데이렇게하면 try가끝날때해당변수에대한 close가자동으로호출됩니다. 사실좀더정확하게는자원관리자동화기능을사용하면컴파일러는자동으로 finally 블록에자원반납코드를넣어줍니다. 역컴파일 (decompile) 해보면알수있습니다. 자원관리자동화기능은 finally 블록에서자원해제를위한코드를넣지않아도된다는장점은있지만 catch문에서해당변수에접근이안되는단점이있습니다. 또한 try 구문에서선언된클래스는 AutoCloseable 인터페이스를구현한클래스이어야합니다. try(fileinputstream in = new FileInputStream("a.txt"))

19 Java 멀티캐치기능은하나의 catch 블록에다수의예외를기술하는것입니다. 하나의 catch 문으로다수의예외를처리해줄수있습니다. 멀티캐치의예외들은계층구조가없어야합니다. catch(nullpointerexception IOException ex) 다음은자원관리자동화예외처리구문예입니다. 예에서 9 라인은자원관리자동화의예를 보여주고있으며, 11 라인은멀티캐치예를보여주고있습니다. AutoResourceManagerExample.java 1: import java.io.*; 2: 3: public class AutoResourceManagerExample { 4: 5: public static void main(string[] args) { 6: 7: try(fileinputstream in = new FileInputStream("a.txt")) { 8: System.out.println("read data : " + in.read()); 9: }catch(nullpointerexception IOException ex) { 10: // System.out.println(in); //in 변수참조못함 11: System.out.println(" 예외처리합니다 "); 12: System.out.println(ex.toString()); 13: } 14: 15: } 16: } 이예에서 try 블록에괄호를이용해서객체를생성하는코드를넣을것을볼수있습니다. 이렇게하면컴파일러는자동으로 finally 블록에서해당리소스자원을반납하는코드를 넣어줍니다. 이것을보고예외처리시자원관리자동화라부릅니다. 하나의 catch문에서다수의예외를처리해줄수있습니다. 이렇게하면여러예외를처리하기위해 catch 블록을반복해서작성하지않아도됩니다. 이러한문장을멀티캐치문장이라부릅니다. 멀티캐치문장작성시주의할사항이있습니다. 하나의 catch 문에다수의예외를처리할경우기술되는예외들은계층구조가없어야합니다. 예를들면 IOException과 FileNotFoundException을동시에잡을수는없습니다. 자원관리자동화와멀티캐치구문은반드시사용할필요는없습니다. 필요한경우사용할수있습니다. Java SE 7(JDK 1.7) 에추가된예외에대해더자세하게알고싶으면아래주소를참고하 세요.

20 Chapter 예외처리 Assertion 이기능은 JDK 1.4 버전에추가되었습니다. Assertion을영어사전에서찾아보면 단정, 단언, 주장 이라고되어있습니다. 자바프로그램에서 assertion 은특정내용을단정짓는것입니다. Assertion을굳이우리말로변역할필요는없습니다. 그냥 어써션 이라고읽으면됩니다. assertion은오류가없는프로그램을작성하기위한하나의기술입니다. 프로그램내에서, 특정조건이성립해야하는장소에검증용코드를넣어그조건에위반하고있는경우는오류를출력해프로그램상태를체크할수있도록합니다. 이러한방법은프로그램의버그의수정을도와, 보다견고한프로그램을작성하는것이가능해집니다. assert 구문은프로그래머가자신의프로그램에대한가정을확신시키는문장으로 boolean 수식을가지고주어진조건을만족하지않을경우즉, 수식의결과가 false 일경우예외를발생시키는키워드입니다. assertion 기능이없었을때개발자들은검증용코드를디버그메시지 (println) 또는예외를 사용했었습니다. 아래의코드들을예를들어설명하겠습니다. 입력값이 0 일때사용자인 증처리를하는코드입니다. 다음코드는검증구문을포함하지않았습니다. int x = new Scanner(System.in).nextInt(); if(x==0) { System.out.println(" 인증되었습니다."); } 위코드는 x 값으로 0 이들어갈경우에는 if 블록이정상적으로실행되지만그렇지않을경 우에는 if 블록은실행되지않습니다. 어떤값이입력이확인할필요가있거나 0 이아닌값 이들어갈경우에예외를발생시킬필요가있을것입니다. 그래서 x값을확인하기위한첫번째방법으로다음과같이디버그메시지를사용할수있습니다. int x = new Scanner(System.in).nextInt(); System.out.println("x=" + x); if(x==0) { System.out.println(" 인증되었습니다."); }

21 Java 두번째방법으로 x 에 0 이입력되지않았을경우예외를발생시킬수도있습니다. int x = new Scanner(System.in).nextInt(); if(x==0) { System.out.println(" 인증되었습니다."); }else { throw new Exception(" 인증에실패했습니다. x=" + x); } 그런데위두가지방법들중에서첫번째방법은항상 x의값이출력되고, 두번째방법은 x가 0이아니면예외가발생하게됩니다. 이는고객에게이프로그램의신뢰도를떨어뜨리게될것입니다. 물론첫번째방법의출력문을다음코드처럼사용한다면프로젝트가종료될시점에 Util 클래스의 DEBUG 상수값만변경하여메시지를출력하지않도록할수도있습니다. if(util.debug==true) System.out.println("x=" + x); 그런데 assertion 기능을사용하면위두가지를한번에해결할수있습니다. 다음은 assertion 이적용된코드입니다. int x = new Scanner(System.in).nextInt(); assert x==0 : " 인증에실패했습니다. x=" + x; if(x==0) { System.out.println(" 인증되었습니다."); } 위의코드처럼작성해놓으면개발자는개발할때 x 의값이 0 이아닐경우그값을화면 에출력되도록할수있습니다. 그리고시스템이운영될대사용자는 x 의값이 0 이더라도 메시지나예외없이프로그램을사용할수있을것입니다. assertion 기능을사용하기위해서는몇가지요구사항을만족해야합니다. 첫번째컴파일러의버전입니다. 컴파일러의버전이최소 JDK 1.4이상이어야합니다. 그리고코드에 assert 문장이포함되어야합니다. 마지막으로세번째실행시 assertion 기능을사용해야할경우 ( 개발시 ) -ea 옵션으로실행시켜야합니다. assertion 문장은 assert 키워드를이용하며두가지사용법이있습니다. assert Expression 1 ; assert Expression 1 : Expression 2 ;

22 Chapter 예외처리 10 다음과같은형태에서 Expression 1 의결과는 boolean 형이어야합니다. 만일 Expression 1 의결과값이 false 이면실행시 AssertionError 를발생시킵니다. 이때예 외의메시지는없습니다. assert Expression 1 ; 다음과같은형태즉, 두개의 Expression을가질때는먼저 Expression 1 의결과는 boolean형이어야하며, Expression 1 의결과값이 false이면실행시 Expression 2 의결과를메시지로갖는 AssertionError를발생시킵니다. 여기서주의해야할점은 Expression 2 에는 void형메서드호출이올수없다 는것입니다. assert Expression 1 : Expression 2 ; assertion 코드컴파일 assert문이있는프로그램은버전이 1.4임을알려주기위해컴파일시다음과같이옵션을넣어서컴파일해야합니다. 그러나이클립스를사용하신다면컴파일걱정은하지않아도됩니다. javac -source 1.4 FileName.java assertion 코드실행 실행시킬때 -enableassertions 또는 -ea 옵션을사용해야합니다. assertion 코드실행을해제하려면 -disableassertion 또는 -da 옵션을사용해야합니다. 옵션이클래스이름앞에들어가는것을주의하세요. java -ea FileName assertion 코드예 다음프로그램은 assert 키워드의사용법을알아보기위한 assert 키워드가사용되지않은

23 Java 예입니다. NoAssertionExample.java 1: public class NoAssertionExample { 2: public static void main(string[] args) { 3: int i = (int)(math.random() * 4) + 1;//1,2,3,4 값이랜덤하게발생됨 4: System.out.println(" 넘어온값 : " + doit(i)); 5: } 6: public static int doit(int a) { 7: switch(a) { 8: case 1: 9: System.out.println("1 이입력되었습니다."); 10: break; 11: case 2: 12: System.out.println("2 가입력되었습니다."); 13: break; 14: case 3: 15: System.out.println("3 이입력되었습니다."); 16: break; 17: } 18: return a; 19: } 20: } 앞의프로그램에서 switch 문이사용되었는데조건을만족하는 case 문이없으면실행되는 문장이없습니다. 따라서프로그램을작성하면서처리할문장이없음을간과할수있습니 다. 다음프로그램은앞의예제에서조건을만족하지않으면실행되는문장이없는예외상황을 처리하기위한기능을부여한예입니다. AssertionExample.java 1: public class AssertionExample { 2: public static void main(string[] args) { 3: int i = (int)(math.random() * 4) + 1;//1,2,3,4 값이랜덤하게발생됨 4: System.out.println(" 넘어온값 : " + doit(i)); 5: } 6: public static int doit(int a) { 7: switch(a) { 8: case 1: 9: System.out.println("1 이입력되었습니다."); 10: break; 11: case 2: 12: System.out.println("2 가입력되었습니다."); 13: break; 14: case 3: 15: System.out.println("3 이입력되었습니다."); 16: break; 17: default:

24 Chapter 예외처리 10 18: assert false : a; 19: } 20: return a; 21: } 22: } 이프로그램에서는 assert문이사용되었습니다. 실행할때입력값이 case문의값과일치하는값이없을경우에는실행시의옵션에따라예외를발생시킬수도있고, 반대로그렇지않게할수도있습니다. 이렇게하면사용자가메서드호출시예외상황에대하여더다양한방식으로프로그램을작성할수있습니다. 다음은앞의예제를컴파일하고실행한결과를나타낸것입니다. 랜덤값이 4 가발생되었 을경우각각의실행결과를보여주고있습니다. -ea 옵션을주지않고실행할경우 정상적으로실행되는경우입니다. 랜덤값이 4 일경우라도정상실행됩니다. -ea 옵션을주고실행할경우 정상적으로실행되는경우입니다. -ea 옵션을주고실행할경우랜덤값이 4일때 AssertionError를발생시켜사용자에게예외를알릴수있습니다. 프로그램개발단계에는 ea 옵션을주고실행하여테스트하면비정상적인상황들에대해모니터링이가능합니다. 프로그램운영단계에는 ea 옵션을주지않고실행하여예외상황이발생하더라도사용자화면에오류가나타나는일이없을것입니다.

25 Java 이클립스에서 Assertion 기능사용하기 이클립스는컴파일러의버전이 1.5 이상이면자동으로 Assertion 컴파일을수행합니다. 실행시옵션으로 Assertion 기능을사용할수있습니다. Run -> Run Configuration 실행시 Assertion 기능을활성화시키고싶은클래스를선택합니다. 2. Arguments 탭을클릭합니다. 3. VM arguments: 항목에 -ea 라고입력합니다. 다음코드는앞의코드의 assert 문장을 throw 문으로수정할수있습니다. AssertionError 가발생한다면 try~catch 문으로처리할수있습니다. AssertionCatchExample.java 1: public class AssertionCatchExample { 2: public static void main(string[] args) { 3: int i = (int)(math.random() * 4) + 1;//1,2,3,4 값이랜덤하게발생됨 4: try { 5: System.out.println(" 넘어온값 : " + doit(i)); 6: }catch(assertionerror ae) { 7: System.out.println(" 데이터를확인하세요. " + ae.getmessage()); 8: } 9: } 10: public static int doit(int a) { 11: switch(a) { 12: case 1: 13: System.out.println("1 이입력되었습니다."); 14: break; 15: case 2: 16: System.out.println("2 가입력되었습니다."); 17: break; 18: case 3: 19: System.out.println("3 이입력되었습니다."); 20: break;

26 Chapter 예외처리 10 21: default: 22: assert false : a; 23: } 24: return a; 25: } 26: } -ea 옵션을주고실행했을경우랜덤값이 4 이면 AssertionError 가발생하고이를 try ~ catch 블록을이용해처리한결과입니다 assertion 과 exception 이내용은분석 / 설계시선행조건과후행조건을정의했을경우이를구현하기위한과정에 대한설명입니다. 난이도에비하여자주사용되는기능은아닙니다. 내용이어렵다생각되 면다음장으로넘어가도됩니다. Assertion 기능을후행조건확인및클래스불변조건에사용할수있습니다. 후행조건은리턴문장바로위에놓여메서드의처리결과를확인하기위한조건입니다. 클래스불변조건은클래스의내부상태를체크하여클래스가가지는멤버변수가변경이일어났을경우처리되도록하는코드를포함할수있습니다. 메서드가수행되기전에값의유효성을체크하는선행조건에는사용하는것은바람직하지 않습니다. 선행조건은메서드블록이수행되기위해만족되어야할필요조건입니다. 선행 조건이만족되지않으면이후메서드블록은시작되면안됩니다. 후행조건은메서드종료시만족해야하는조건으로메서드의정상동작여부에대한최소한의판단기준으로사용될수있습니다. 후행조건이만족되지않으면메서드가정상적으로동작하지않았다고할수있습니다. 그러나후행조건을만족하더라도메서드가올바르게수행되었다고판단할수는없습니다. 다음코드는선행조건과후행조건을 Assertion 으로처리한예입니다. PreAndPostConditionExample.java 1: public class PreAndPostConditionExample { 2: public static void main(string[] args) { 3: Account myaccount = new Account(" 홍길동 ", 100); 4: // myaccount.save(-10); 5: System.out.println(myAccount); 6: myaccount.withdraw(10); 7: System.out.println(myAccount); 8: } 9: } 10:

27 Java 11: class Account { 12: String user; 13: int balance; 14: 15: public Account(String user, int balance) { 16: super(); 17: this.user = user; 18: this.balance = balance; 19: } 20: 21: public void save(int amount) { 22: if(amount<=0) { 23: // 선행조건은확실하게체크해야합니다. 24: throw new IllegalArgumentException(" 입금액오류 - " + amount); 25: } 26: int prebalance = balance; 27: System.out.println(amount + " 원이입급되었습니다."); 28: this.balance = this.balance + amount; 29: 30: assert (this.balance == prebalance + amount); 31: } 32: public void withdraw(int amount) { 33: if(amount<=0) { 34: // 선행조건은확실하게체크해야합니다. 35: throw new IllegalArgumentException(" 출금액오류 - " + amount); 36: } 37: int prebalance = balance; 38: System.out.println(amount + " 원이출금되었습니다."); 39: this.balance = this.balance + amount; 40: 41: assert (this.balance == prebalance + amount); 42: } 43: 44: public String tostring() { 45: return user +" 님의잔고는 " + balance + " 입니다."; 46: } 47: } 위코드에서 save() 메서드와 withdraw() 메서드에서는선행조건을명시적으로비교한후예외를발생시켰습니다. 그러므로 -ea 옵션과는무관하게 amount가 0 이하일경우에는메서드가실행되지않게하였습니다. 후행조건의경우 save() 메서드와 withdraw() 메서드에 assertion 기능을사용했습니다. 입금후행조건은입금후잔액 = 입금전잔액 + 입금액이며출금후행조건은출금후잔액 = 출금전잔액-출금액입니다. 후행조건을만족하지못하면시스템은정상적으로동작했다고판단하기어렵습니다. 그러나후행조건이충족되었다고메서드가올바르게수행되었다고판단할수는없습니다.

28 Chapter 예외처리 10 시스템의요구사항을구현할때선행조건과후행조건이있다면 Exception 처리와 Assertion 처리를통해구현할수있습니다. Assertion 은현업에서자주사용되는기능은 아니므로참고만하고넘어가도됩니다.

29 Java 마인드맵정리

Microsoft PowerPoint - CSharp-10-예외처리

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

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

슬라이드 1

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

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

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

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 예외처리 배효철 th1g@nate.com 1 목차 예외와예외클래스 실행예외 예외처리코드 예외종류에따른처리코드 자동리소스닫기 예외처리떠넘기기 사용자정의예외와예외발생 예외와예외클래스 구문오류 예외와예외클래스 구문오류가없는데실행시오류가발생하는경우 예외와예외클래스 import java.util.scanner; public class ExceptionExample1

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2 예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 kkman@sangji.ac.kr 2 예외 (exception) 실행시간에발생하는에러 (run-time error) 프로그램의비정상적인종료잘못된실행결과 예외처리 (exception handling) 기대되지않은상황에대해예외를발생야기된예외를적절히처리 (exception handler) kkman@sangji.ac.kr

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

9장.예외와 단정

9장.예외와 단정 예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 [2/28] 예외 (exception) 실행시간에발생하는에러 (run-time error) 프로그램의비정상적인종료잘못된실행결과 예외처리 (exception handling) 기대되지않은상황에대해예외를발생 야기된예외를적절히처리 (exception handler) [3/28] 단정 (assertion)

More information

PowerPoint Template

PowerPoint Template 10. 예외처리 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 10.1 개요 10.2 C++ 의예외처리 10.3 Java 의예외처리 10.4 Ada 의예외처리 10.1 예외처리의개요 (1) 3 예외 (exception) 오버플로나언더플로, 0 으로나누기, 배열첨자범위이탈오류와같이프로그램실행중에비정상적으로발생하는사건 예외처리 (exception handling)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 예외처리 (Exception Handling) 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2012-2 nd 프로그래밍입문 (1) 예외상황과예외처리의이해 3 예외상황을처리하지않았을때의결과 예외상황은프로그램실행중에발생하는문제의상황을의미한다. 예외상황의예나이를입력하라고했는데, 0보다작은값이입력됨.

More information

Semantic Consistency in Information Exchange

Semantic Consistency in Information Exchange 제 6 장제어 (Control) 6.1 구조적프로그래밍 (Structured Programming) 6.2 예외 (Exceptions) Reading Chap. 7 숙대창병모 1 6.1 구조적프로그래밍 숙대창병모 2 Fortran 제어구조 10 IF (X.GT. 0.000001) GO TO 20 11 X = -X IF (X.LT. 0.000001) GO TO

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

슬라이드 1

슬라이드 1 11. 예외처리 학습목표 음악재생프로그램예외처리방법 try/catch 블록예외선언방법 위험한행동 예상치못한상황 파일이없는경우 서버가다운되는경우 장치를사용할수없는경우 이런예외적인상황을처리하기위한방법이필요합니다. 자바의예외처리메커니즘 try/catch 블록 예외선언 음악재생프로그램 JavaSound API JavaSound API MIDI 악기디지털인터페이스 (Musical

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 - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

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

No Slide Title

No Slide Title 예외처리 이충기 명지대학교컴퓨터공학과 예외필요성 오류처리지금까지 : 오류처리를거의하지않았다. 일이의도한대로잘될것이라고가정했다. 주먹구구식방법 : 프로그래머는컴파일오류를찾아서수정하기위해서시험하고오류수정을해야한다. 컴파일러는실행오류의문제를해결하지못한다 ( 예 : 부정확한값이나상태 ). 프로그래머는실행오류가있더라도프로그램이우아하게돌아가야한다는것을보장해야한다. 우아하게

More information

Microsoft PowerPoint - Lect04.pptx

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

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

歯JavaExceptionHandling.PDF

歯JavaExceptionHandling.PDF (2001 3 ) from Yongwoo s Park Java Exception Handling Programming from Yongwoo s Park 1 Java Exception Handling Programming from Yongwoo s Park 2 1 4 11 4 4 try/catch 5 try/catch/finally 9 11 12 13 13

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

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

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요 . 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,

More information

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

Microsoft PowerPoint - lec11_1516.ppt [호환 모드] JAVA 프로그래밍 11. 예외처리 한동일 학습목표 To learn how to throw exceptions To be able to design your own exception classes To understand d the difference between checked and unchecked exceptions To learn how to catch

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

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

More information

4장.문장

4장.문장 문장 1 배정문 혼합문 제어문 조건문반복문분기문 표준입출력 입출력 형식화된출력 [2/33] ANSI C 언어와유사 문장의종류 [3/33] 값을변수에저장하는데사용 형태 : < 변수 > = < 식 > ; remainder = dividend % divisor; i = j = k = 0; x *= y; 형변환 광역화 (widening) 형변환 : 컴파일러에의해자동적으로변환

More information

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå 기초통계프로그래밍 클래스, 객체, 변수, 메소드 hmkang@hallym.ac.kr 금융정보통계학과 강희모 ( 금융정보통계학과 ) 기초통계프로그래밍 1 / 26 자바구성파일 소스파일 소스파일 : 사용자가직접에디터에입력하는파일로자바프로그램언어가제공하는형식으로제작 소스파일의확장자는.java 임 컴파일 : javac 명령어를이용하여프로그래머가만든소스파일을컴파일하여실행파일.class

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 메소드의구조자주반복하여사용하는내용에대해특정이름으로정의한묶음 반환형메소드이름 ( 매개변수 ) { 실행문장 1; : 실행문장 N; } 메소드의종류 Call By Name : 메서드의이름에의해호출되는메서드로특정매개변수없이실행 Call By Value : 메서드를이름으로호출할때특정매개변수를전달하여그값을기초로실행하는메서드 Call By Reference : 메서드호출시매개변수로사용되는값이특정위치를참조하는

More information

TEST BANK & SOLUTION

TEST BANK & SOLUTION TEST BANK & SOLUTION 어서와자바는처음이지!" 를강의교재로채택해주셔서감사드립니다. 본문제집을만드는데나름대로노력을기울였으나제가가진지식의한계로말미암아잘못된부분이있을것으로사료됩니다. 잘못된부분을발견하시면 chunik@sch.ac.kr로연락주시면더좋은책을만드는데소중하게사용하겠습니다. 다시한번감사드립니다. 1. 자바언어에서지원되는 8 가지의기초자료형은무엇인가?

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

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

No Slide Title

No Slide Title 상속 이충기 명지대학교컴퓨터공학과 상속 Q: 건설회사는기존아파트와조금다르거나추가적인특징들을가진새아파트를지을때어떻게하는가? A: 2 상속 상속 (inheritance) 은클래스들을연관시키는자연스럽고계층적인방법이다. 상속은객체지향프로그래밍의가장중요한개념중의하나이다. 상속은 은 이다 라는관계 (is-a relationship) 를나타낸다. 이관계를적용하여클래스들을상하관계로연결하는것이상속이다.

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\) Session 을이용한현재로그인한사용자의 숫자구하기 작성자 : 김성박 ( 삼성 SDS 멀티캠퍼스전임강사 ) email : urstory@nownuri.net homepage : http://sunny.sarang.net - 본문서는http://sunny.sarang.net JAVA강좌란 혹은 http://www.javastudy.co.kr 의 칼럼 란에서만배포합니다.

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 배효철 th1g@nate.com 1 목차 표준입출력 파일입출력 2 표준입출력 표준입력은키보드로입력하는것, 주로 Scanner 클래스를사용. 표준출력은화면에출력하는메소드를사용하는데대표적으로 System.out.printf( ) 를사용 3 표준입출력 표준출력 : System.out.printlf() 4 표준입출력 Example 01 public static void

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

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

슬라이드 1

슬라이드 1 UNIT 6 배열 로봇 SW 교육원 3 기 학습목표 2 배열을사용핛수있다. 배열 3 배열 (Array) 이란? 같은타입 ( 자료형 ) 의여러변수를하나의묶음으로다루는것을배열이라고함 같은타입의많은양의데이터를다룰때효과적임 // 학생 30 명의점수를저장하기위해.. int student_score1; int student_score2; int student_score3;...

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 6 장선택과반복 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break문 continue문 지금까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 3 가지의제어구조 조건문 문장이실행되는순서에영향을주는문장 조건에따라서여러개의실행경로가운데하나를선택

More information

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

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

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다. 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다. 중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가?

More information

슬라이드 1

슬라이드 1 UNIT 08 조건문과반복문 로봇 SW 교육원 2 기 학습목표 2 조건문을사용핛수있다. 반복문을사용핛수있다. 조건문 3 조건식의연산결과에따라프로그램의실행흐름을변경 조건문의구성 조건식 실행될문장 조건문의종류 if switch? : ( 삼항연산자 ) if 조건문 4 if 문의구성 조건식 true 또는 false(boolean 형 ) 의결과값을갖는수식 실행될문장

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

교육자료

교육자료 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

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

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

슬라이드 1

슬라이드 1 UNIT 12 상속과오버라이딩 로봇 SW 교육원 2 기 최상훈 학습목표 2 클래스를상속핛수있다. 메소드오버라이딩을사용핛수있다. 패키지선언과 import 문을사용핛수있다. 상속 (inheritance) 3 상속이란 기존의클래스를기반으로새로운클래스를작성 두클래스를부모와자식으로관계를맺어주는것 자식은부모의모든멤버를상속받음 연관된일렦의클래스에대핚공통적인규약을정의 class

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 1,..... @ 1 Green Project 1991 Oak Java 1995. 5 December '90 by Patrick Naughton, Mike Sheridan and James Gosling Embedded in various consumer electronic device 1992. 9. 3 Star 7 1993 www portability

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

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

Microsoft PowerPoint - java2-lecture2.ppt [호환 모드] 스트림 FileIO, Exception Handling 514770 2018 년가을학기 9/17/2018 박경신 자바의스트림 자바스트림은입출력장치와자바응용프로그램연결 입출력장치와프로그램사이의데이터흐름을처리하는소프트웨어모듈 입력스트림 입력장치로부터자바프로그램으로데이터를전달하는소프트웨어모듈 출력스트림 자바프로그램에서출력장치로데이터를보내는소프트웨어모듈 입출력스트림기본단위

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

스레드의우선순위 우선순위설정메소드 : void setpriority(int newpriority) newpriority 에설정할수있는등급 : 1( 가장낮은우선순위 ) 부터 10( 가장높은우선순위 ) 가장높은우선순위 : MAX_PRIORITY, 보통우선순위 : NORM_

스레드의우선순위 우선순위설정메소드 : void setpriority(int newpriority) newpriority 에설정할수있는등급 : 1( 가장낮은우선순위 ) 부터 10( 가장높은우선순위 ) 가장높은우선순위 : MAX_PRIORITY, 보통우선순위 : NORM_ 10 초동안사용자가입력하지않으면종료하는예제 ) import javax.swing.joptionpane; class AutoTermination { static boolean inputcheck = false; public static void main(string[] args) throws Exception { FirstThread th1 = new FirstThread();

More information

No Slide Title

No Slide Title 클래스와객체 이충기 명지대학교컴퓨터공학과 들어가며 Q: 축구게임에서먼저공격하는팀을정하기위해동전을던진다. 우리는동전을던질때앞면이나오느냐아니면뒷면이나오느냐에만관심이있다. 또한동전을가지고해야할일은동전을던지는것과동전을던진후결과를알면된다. 이동전을효과적으로나타낼수있는방법을기술하라. A: 2 클래스와객체 객체 (object): 우리주변의어떤대상의모델이다. - 예 : 학생,

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information