Cluster management software

Similar documents
Cluster management software

Microsoft PowerPoint - CSharp-10-예외처리

슬라이드 1

PowerPoint Presentation

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

PowerPoint Template

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

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

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

9장.예외와 단정

C++ Programming

PowerPoint Presentation

OCW_C언어 기초

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

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

Design Issues

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

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

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - Chapter_04.pptx

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

PowerPoint Template

JAVA PROGRAMMING 실습 05. 객체의 활용

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

Cluster management software

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

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

TEST BANK & SOLUTION

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint 프레젠테이션

Microsoft PowerPoint - 2강

Microsoft PowerPoint - chap03-변수와데이터형.pptx

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

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint Presentation

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

C# Programming Guide - Types

PowerPoint Presentation

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Semantic Consistency in Information Exchange

Microsoft PowerPoint - lec3.ppt

슬라이드 1

Microsoft PowerPoint - Lect04.pptx

02 C h a p t e r Java

Microsoft PowerPoint - ch07 - 포인터 pm0415

4장.문장

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

쉽게 풀어쓴 C 프로그래밍

제11장 프로세스와 쓰레드

PowerPoint Presentation

PowerPoint 프레젠테이션

쉽게

adfasdfasfdasfasfadf

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec2.ppt

No Slide Title

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

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µå

PowerPoint Presentation

JAVA PROGRAMMING 실습 07. 상속

Cluster management software

No Slide Title

ThisJava ..

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션


PowerPoint Presentation

Microsoft PowerPoint - Chapter 6.ppt

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

JVM 메모리구조

JAVA PROGRAMMING 실습 05. 객체의 활용

금오공대 컴퓨터공학전공 강의자료

PowerPoint 프레젠테이션

Microsoft PowerPoint - 04-UDP Programming.ppt

JUNIT 실습및발표

쉽게 풀어쓴 C 프로그래밍

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

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

11장 포인터

C++ Programming

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Microsoft PowerPoint - lec12 [호환 모드]

03-JAVA Syntax(2).PDF

Transcription:

자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민

Converting and casting rules 데이터의형변환이발생하는경우를설명암묵적형변환 (implicit type casting) 명시적형변환 (explicit type casting) 기본데이터형과오브젝트데이터형의형변환 2

출제기준 1. 기본자료형사이에서의묵시적형변환방향학습 2. 객체참조변환에서의묵시적형변환방향학습 3. 명시적형변환이필요한경우와그결과를예측 4. casting 과 conversion 의차이점을이해 5. widening numeric conversion 과 narrowing numeric conversion 의뜻이해 3

implicit 형변환과 explicit 형변환 형변환 (type casting, type conversion) 은서로다른타입의변수사이에연산이있을때발생 묵시적 (implicit) : 프로그래머가신경쓰지않아도자동적으로처리되는경우 명시적 (explicit) : 표현식앞에별도로코딩이필요한경우 형변환이발생하는근본적인이유형 (type) 이다른변수들은표현범위가서로다르기때문 의도하지않은값의손실을막기위해서표현범위가더좁은쪽으로의형변환이필요할때는반드시명시적으로형변환을해야함. 4

implicit 형변환과 explicit 형변환 묵시적인형변환이자동적으로처리되는이유 자바가허용하는안전한방향으로형변환이이루어져서연산시에자료값의손실이발생하지않기때문 명시적형변환방법의예 class ExplicitCastEx { public static void main(string[] args) { int i; float f = 1.7f; } } i = (int) f; // 명시적으로형변환하는모습 System.out.println(i); SCJP 5.0 대비강좌 5

implicit 형변환과 explicit 형변환 연산결과 : 정수값 1 원래의실수값 1.7 로부터 0.7 이라는소수부분이유실되었지만, 컴파일에러는발생하지않음 명시적형변환 : 형변환이필요한데이터형앞에괄호를쓰고그안에목적데이터형을기술함. 6

기본예제 묵시적인형변환의예 class MyImplicit { public static void main(string[]args) { int i; char c = 'A'; i = c; System.out.println("ASCII value of A = " + i); } } 정수로선언된 i 에 char 로선언된 c 를대입. 두변수는서로데이터형이다르기때문에형변환필요 대입연산에아무런추가코드도삽입하지않았음 ( 묵시적 ) 7

예제설명 자바가상기계에서자동적으로형변환을해주어서명시적인코딩이필요없는경우를묵시적인형변환에해당 ASCII value of A = 65 8

기본예제 명시적인형변환이필요한예. class MyExplicit { public static void main(string[]args) { int i = 0; float f = 1.78f; i = f + i; //point x System.out.println("i = " + i); } } 컴파일에러발생함!!! 9

예제설명 //point x 부분때문 실수부분이손실될수있다는메세지출력. MyImplicit.java:5: possible loss of precision //point x 부분을아래와같이수정 i = (int) f + i; 10

예제설명 float 값을강제로정수값으로형변환시므로 0.78 이라는소수값이소실되는것은변함없음. 하지만, 프로그래머가그러한사실을인지하고있음이인지되므로, 프로그램의신뢰도를높일수있음 출력결과. i = 1 11

primitive 데이터형과형변환 기본자료형 데이터타입별로메모리상에할당받는값과표현가능한범위, 표현방식다름 서로다른데이터형을가지는변수끼리연산을하면형변환이필요. 아래테이블은자바의기본자료형을이해하는데도도움됨 boolean, byte, char, short, int, long, float, double 기본데이터형의경우, 연산자오른쪽에있는식을평가한데이터의형이연산자왼쪽에있는변수의형과같은경우에대입하는것원칙 다음조건을만족시킬경우양변의데이터형이달라도대입가능 12

primitive 데이터형과형변환 구분 ( 기본데이터형 ) 대입가능여부 사용예 좌변변수의데이터형과우변식의데이터형이같을때 대입가능 int x = 10; int y = x; 좌변변수의데이터형이우변식의데이터형보다유효범위가클때 ( 예 : long int) 대입가능 ( 자동 promotion) int x = 10; long y = x; 좌변변수의데이터형이우변식의데이터형보다유효범위가작을때 ( 예 : short int) 형변환 ( 캐스트 ) 연산자를이용하여변환 후대입 (demotion) int x = 10; short y = (short)x; 13

primitive 데이터형과형변환 float 와 double : 형변환의마지막단계에위치하는것주의 화살표의정방향으로형변환이이루어질때는묵시적으로형변환이됨. 14

primitive 데이터형과형변환 [ 주의 ] char 형에서 short 형으로변환하는경우나, short 형에서 char 형으로변환하는경우모두형변환연산이필요합니다. [ 주의 ] double 형에서 float 형으로변환하는경우는항상유효숫자가손실되는것이므로반드시형변환연산을하거나, 우변숫자뒤에 f 를붙여 double 형리터럴이아닌 flaot 형리터럴임을표시해야합니다. [ 주의 ] boolean 형과 byte, char, short, int, long, float, double 형등숫자계열은형변환연산자를사용하더라도서로변환되지않습니다. 15

primitive 데이터형과형변환 명시적형변환이요구되는상황에서현변환연산을하지않으면값이손실될수있다는다음과같은컴파일에러가발생 possible loss of precision 형변환규칙묵시적인경우프로그래밍편의성을제공 명시적인경우값의손실을프로그래머가예측한경우에만허용함 프로그램의안정성을보장. 16

기본예제 primitive 데이터형의묵시적형변환의예 class TestImplicit { public static void main(string[] args) { byte b = 123; short s = 321; char c = 'A'; int i; long l; float f = 0.456f; i = b + s; l = i + c; f += b; System.out.println("i = " + i); System.out.println("l = " + l); System.out.println("f = " + f); } } 17

예제설명 예제파일에나오는변수들은모두데이터형이다름 다른데이터형을가진변수들의연산이일어나고있지만, 명시적인형변환코드는없음. 모두묵시적으로형변환됨. 이예제에서이루어지는연산들이모두값을손실하지않도록표현범위가더넓은자료형을향해서이루어지고있기때문 예 ) byte 형의 b 와 short 형의 s 는자신들보다표현범위가넓은 i(integer 타입 ) 에할당. 18

예제설명 위의프로그램을출력한결과는다음과같습니다. i = 444 l = 509 f = 123.456 19

기본예제 primitive 데이터형의명시적형변환의예. class TestExplicit { public static void main(string[] args) { byte b = 100; short s; char c = 'A'; int i; float f = 0.456f; i = (int) f + b; s = (short) (i + c); } } System.out.println("i = " + i); System.out.println("s = " + s); 20

예제설명 위의예제의출력결과는다음과같습니다. i = 100 s = 165 i에는 b의값 100 과 f 값 0.456 을더한값이할당되게되어있지만, 소수값이표현되지않고정수부분만표현 ( 일부손실 ) (int) 명시적형변환구문이포함되어있지않았다면, 값이손실될것이라는컴파일러에러가발생프로그래머는그것을감수하겠다는의미로형변환연산자를사용해서, float 형의결과 100.456을 int 형변수 i 에대입하기위해서강제적으로 int 형으로변환 이과정에서 int 형으로표현할수없는소수값이사라짐 21

객체참조변환 오브젝트형 ( 객체타입 ) 의경우에도서로다른객체의참조끼리의연산이발생하면당연히형변환이발생 묵시적 (implicit) 인경우와명시적 (explicit) 인경우로나누어생각할수있습니다. 22

객체참조변환 앞에서형변환이발생했을때값의손실이발생하지않으면자바가상기계가자동적으로형변환을해준다고배웠습니다. 객체참조의경우 묵시적인형변환 : 상위객체의참조에하위객체의참조를대입 즉, 상속관계에있는오브젝트데이터형의경우, 다음표와같은조건을만족시키면묵시적인형변환이이루어져문제없이객체를참조변수에대입할수있음 상속관계가없는오브젝트데이터형의경우에는어떤방법으로도대입할수없음 23

객체참조변환 구분 ( 오브젝트데이터형 : 클래스 ) 우변식의클래스와좌변변수의클래스가같을때 우변식의클래스가좌변변수의클래스의하위클래스일때 ( 예 : Object String) 우변식의클래스가좌변변수의클래스의상위클래스일때 ( 예 : String Object) 대입가능여부 대입가능 대입가능 형변환연산자를이용하여변환후대입 ( 실행시 Exception 발생가능 ) 사용예 String s = "abc"; String s2 = s; String s = "abc"; Object o = s; String s = "abc"; Object o = s; String s2 = (String)o; 24

객체참조변환 객체참조변환객체참조변수에직접다른객체의참조값을대입할때발생 A a = new A(); B b = new B(); a = b; a와 b는서로다른객체이기때문에대입연산을하기위해서는형변환을반드시거쳐야함만약 A가상위 (Super) 클래스이고 B가 A의하위 (Sub) 클래스라면위의구문은에러없이컴파일가능형변환연산을명시적으로표시하지않은것으로보아묵시적형변환 25

객체참조변환 하지만, A 와 B 과서로무관한클래스인경우 세번째문장은타입이맞지않는다는컴파일에러발생 incompatible types a = (A) b; 명시적으로형변환연산시에는컴파일에러나타나지않음. 실행시문제가발생할소지는여전히존재함. 26

객체참조변환 객체참조변환 참조값의직접대입외에도객체생성을통한대입을통해서도가능 A a = new B(); 객체메소드호출변환 A 타입으로선언된참조변수 a에 B() 타입객체를대입이장에서변환형식의이름은중요하지않습니다. 구분할수있으면됩니다. 만약 B가 A의하위클래스라면위의문장은에러없이컴파일약두클래스가서로무관하다면객체참조대입변환에서발생했던것과같은에러메세지를발생 27

객체참조변환 [ 주의 ] Implicit = upcast = safe = automatic 묵시적형변환은상위방향 ( 범위가넓은쪽, 상위객체인쪽 ) 으로이루어지며, 값의손실이없어안전하고, 별도의코딩이없이자동적 Explicit = downcast = unsafe 명시적형변환은하위방향 ( 범위가좁은쪽, 하위객체인쪽 ) 으로이루어지며, 값의손실이있어안전하지못하고 캐스트연산자로명시적으로형변환 28

기본예제 하위객체를상위객체에대입할때 묵시적으로형변환되는상황 class MyObject { public static void main(string[] args) { Object o = new Object(); MyObject mo = new MyObject(); o = mo; System.out.println(mo.equals(o)); } } 29

예제설명 암묵적형변환 서로다른객체의참조 o 와 mo 사이에서대입연산 : 묵시적형변환이코드는컴파일에러도일으키지않음 실행결과 : true 값을출력 30

기본예제 하위객체에상위객체를대입 컴파일에러가발생 명시적으로형변환한결과를확인. class MyObject2 { public static void main(string[] args) { MyObject2 mo = new MyObject2(); Object o = new Object(); mo = o; } } System.out.println(mo.equals(o)); 31

예제설명 실행결과 : 컴파일에러발생 MyObject2.java:7: incompatible types found : java.lang.object required: MyObject2 mo = o; ^ 하위객체의참조에상위객체의참조를대입하려고했기때문입니다. 이때아래와같이명시적으로형변환을해주면컴파일에러는없어집니다. mo = (MyObject2) o; 32

예제설명 하지만이번에는런타임에러가발생합니다. java.lang.classcastexception: java.lang.object at MyObject2.main(MyObject2.java:7) [ 주의 ] 기본자료형의형변환에서는 : 명시적인형변환을함으로서값의손상을감수한상태로프로그램을진행가능하나, 객체참조사이의형변환에서는 : 명시적으로형변환해주어도런타임시에예외가발생하는것을기억 33

예외처리 (exception handling) 예외 (Exception) 처리 프로그램을더견고하고, 안전하게해주는자바언어의특징 예외란, 프로그래머가사전에예측할수있는가벼운에러 예외의발생, 발생한예외를처리하는방법, 예외의발생에따른프로그램의흐름을이해하여야함. 34

출제기준 1. 예외를던지는메소드를선언하는방법 2. 예외를적절히이용하는코드및예외처리구문인 try, catch, finally 를사용하는코드를작성 3. 예외를발생시키는 (throw) 일반메소드및오버라이드된메소드를선언할수있어야합니다. 4. 예외가발생했을때와그렇지않을때 try, catch, finally 문의실행순서 4. finally{} 블록은시스템이정상종료하는한반드시실행된다는사실 5. 상위예외클래스는하위예외객체를잡을수있음 35

Exception 클래스 예외 프로그램이정상적으로진행되지못하게하는돌발상황을말합니다. 예 ) 사용자에게인풋을받아수식을계산하는데, 사용자가제수로 0 를입력 예 ) 파일을열려고하는데, 열려고하는디렉토리에해당파일이존재하지않을경우에도예외가발생하겠지요. 예외처리를하지않으면위와같은예외상황이발생했을때프로그램은종료됨 또한, 어째서프로그램이종료되었는지도알수없습니다. 36

Exception 클래스 예외처리 예외가발생하더라도가능하면프로그램을계속진행하도록하고, 사용자에게예외가발생한이유를설명하고, 다시시도하도록할수도있음 자바에서는예외 (Exception) 도객체임 따라서형과메소드, 데이터를가짐자바에서처리하는예외는모두 Exception 클래스에서파 Exception 클래스는 Throwable 클래스의하위클래스임결국모든예외클래스가 Throwable의하위클래스임 37

Exception 클래스 38

Exception 클래스 Error 와 RuntimeException 은심각한에러로인해프로그램을더이상진행시킬수없을때 즉, 프로그램진행상의치명적인문제로프로그래머가이를처리할수없습니다. 따라서이장에서다루는예외처리와는무관 자바예외처리는미리정의된가벼운예외에한해서가능 예외가발생할수있는상황들을미리정의해놓고, 정의해놓은상황들을검색해서해당하는예외가발생했을때적절한조치를취하거나, 사용자에게발생했다는사실을알리고프로그램을진행시킬수있음 39

Exception 클래스 CheckedException 미리정의된가벼운예외 이런클래스가존재하는것이아니라, 정의된클래스전체를지칭하는말입니다. 프로그래머가 Exception 클래스를상속받아정의하는사용자정의예외클래스들도 CheckedException 의하나임 40

Exception 클래스 [ 주의 ] 자바의예외처리가다른언어들과비교해서좋은점은, 구문의간결함과미리정의된 API 의다양함에있음 자바와같은구조를사용하지않는언어의경우간단한파일입출력문장에예외처리구조를덧붙이면 10 라인으로코딩할수있는내용이 30-40 라인에이르게됨 이렇게되면해당코드가파일입출력구문이라는사실조차파악하기힘들어짐 41

기본예제 멤버변수와메소드를가지는예외 (Exception) 클래스정의 class MyException extends Exception { String name = "MyException"; void printinfo(string msg) { System.out.println(name + " : "); System.out.println(msg); } } 42

예제설명 예외클래스는모두 Exception 클래스를상속 정의된 Exception 클래스는 name 이라는멤버변수를가지고자신의이름과호출된곳에서보내는 String 변수를출력하는 printinfo() 메소드를가지고있음 이처럼, 자바에서는예외가발생시 발생한예외객체의멤버변수나메소드를이용해서예외의속성을알리거나, 예외가발생한원인을규명할수있음 43

기본예제 앞의사용자정의예외클래스를확장하면, class MyException extends Exception { String name = "MyException"; void printinfo(string msg) { System.out.println(name + " : "); System.out.println(msg); } } // 여기까지는앞장의 code class MyExceptionSub extends MyException { String name = "MyExceptionSub"; void printuse() { System.out.println("How to use"); } } 44

예제설명 예외클래스는다른예외클래스를상속할수있음을보이는예제입니다. 예외를처리하고, 발생하는방법에대해서는다음슬라이드에서다룸 45