Microsoft PowerPoint 자바-출석수업

Size: px
Start display at page:

Download "Microsoft PowerPoint 자바-출석수업"

Transcription

1 Java 프로그램의실행 1 강. Java 와객체지향프로그래밍 Java VM 컴퓨터과학과김희천교수 2017 년 5 월 24 일 501 호김룡 Java 소스프로그램의확장자는.java 바이트코드 Java 소스를컴파일한결과물 확장자는.class 이며클래스파일이라고도함 Java VM 에서실행가능한코드 write once, run anywhere. 애플리케이션과애플릿 Java 플랫폼 애플리케이션 Java 플랫폼에서바로실행되는프로그램 애플릿 HTML 웹페이지에포함되어웹브라우저를통해실행웹브라우저는 Java VM 을포함함 <APPLET CODE="HelloApplet.class" WIDTH=200 HEIGHT=100> </APPLET> 플랫폼 (platform) 프로그램의실행을위한하드웨어와소프트웨어환경 Java 플랫폼은 Java 프로그램의개발과실행을위한환경 운영체제에맞는 Java 플랫폼을설치해야함 C 프로그램 Java 프로그램 Java 플랫폼 운영체제 (Windows, Unix, LINUX 등 ) 컴퓨터시스템 (Hardware)

2 Java 플랫폼의구성 JDK 의설치 Java VM Java 프로그램의실행환경을제공하는가상기계 Java 프로그램의구동엔진실행에필요한사항을관리메모리정리를자동으로수행 Java API 프로그램의개발에필요한클래스라이브러리패키지 ( 클래스묶음 ) 들이계층구조로분류되어있음 Java 홈페이지에서다운로드받아설치 downloads/index.html Java SE Development Kit(JDK) 8u111 / 8u112 를설치 자신이사용하는운영체제에맞는것을선택환경변수 PATH를수정 C:\Program Files\Java\jdk1.8.0_101\bin 을추가 환경변수 JAVA_HOME 을생성 C:\Program Files\Java\jdk1.8.0_101 를대입 Eclipse 의설치 Eclipse 홈페이지에접속 Eclipse IDE for Java Developers 압축파일을다운받음 eclipse-java-neon-2-win32.zip 적당한곳에압축파일을풀어줌 예 : D:\eclipse 간단한 Java 프로그램 Hello 애플리케이션 대소문자구분 주석, public class, main( ) 메소드, 출력문 /** * The Hello class implements an application that * simply prints Hello, Java Application! to standard output. */ public class Hello { public static void main(string args[ ]) { // main method /* Display the string */ System.out.println("Hello, Java Application!");

3 Java 프로그램살펴보기 (1) Java 프로그램살펴보기 (2) 주석 /* */ 사이의내용을무시함 /** */ javadoc을이용한 API 문서 만들기 클래스의 // 이후정의내용을무시 출력 System.out 실행 표준출력을담당하는객체 print( ) 또는 println( ) 을수행함 public class Hello { main( ) { public class는파일에최대 1개파일이름은 퍼블릭클래스이름.java main( ) 메소드의형식은 public static void main(string[ ] args) 프로그램작성컴파일 실행 Hello.java로저장함 > javac Hello.java 클래스이름.class 가만들어짐 > java Hello main( ) 메소드가실행됨 객체지향프로그램 Java 프로그램 클래스가프로그램구성의기본단위 데이터 ( 필드 ) 와알고리즘 ( 메소드 ) 이클래스에캡슐화되어있음 객체들이만들어지고객체들간의상호작용으로프로그램이동작함 C 프로그램과 Java 프로그램 (1) 성적처리를위한 C 프로그램 int e[2]; int m[2]; // 영어성적을위한변수 // 수학성적을위한변수 void input_grade( ) { // 영어, 수학성적을입력받는함수 e[0] = 90; // 첫번째학생의영어성적 e[1] = 80; // 두번째학생의영어성적 m[0] = 85; // 첫번째학생의수학성적 m[1] = 80; // 두번째학생의수학성적 void output_grade( ) { // 총점출력하는함수 printf("%d, %d", e[0]+m[0], e[1]+m[1]); void main(void) { input_grade( ); output_grade( );

4 C 프로그램과 Java 프로그램 (2) 성적처리를위한 Java 프로그램 class Grade { int e; // 영어성적을위한변수 int m; // 수학성적을위한변수 void output_grade( ) { // 총점을구하는메소드 System.out.println(e+m); public class GradeOutput { public static void main(string args[ ]) { Grade g1, g2; //2 명의성적을표현하는객체 g1 = new Grade( ); g2 = new Grade( ); // 점수입력 g1.e = 90; g1.m = 85; g2.e = 80; g2.m = 80; 2 강. Java 기본문법 (1) g1.output_grade( ); g2.output_grade( ); 컴퓨터과학과김희천교수 2017 년 5 월 24 일 501 호김룡 Java 프로그램 식별자 (1) 성적처리를위한 Java 프로그램 class Grade { int e; int m; // 영어성적을위한변수 // 수학성적을위한변수 void input_grade(int a, int b) { // 성적입력 e = a; m = b; void output_grade( ) { // 총점출력 System.out.println(e+m); public class GradeOutput { public static void main(string args[ ]) { Grade g1, g2; //2명의성적을표현하는객체 g1 = new Grade( ); // 객체생성 g2 = new Grade( ); g1.input_grade(90, 85); // 성적입력 g2.input_grade(80, 80); g1.output_grade( ); g2.output_grade( ); // 총점출력 클래스, 변수, 메소드, 레이블등의이름 프로그래머가만드는이름 작명규칙 대소문자구분 길이에제한없음 영대소문자, 한글, 숫자, _, $ 를사용 숫자로시작할수없음 키워드, true, false, null은불가 잘못작명된예 2002WorldCup, my#class class, World Cup, lee@knou public class HelloApplication { static String szmsg = "Hello, Java!"; public static void main(string args[]) { int ntest = 0; System.out.println(szMsg);

5 식별자 (2) 키워드 식별자를만들때의관례 클래스 : 첫자는대문자, 단어의첫글자는대문자, 나머지는소문자 Car, HelloWorld, MyClass, String 메소드, 변수 ( 필드 ) : 위와같으나첫자가소문자 speed, mycar, geararea( ) 상수 : 모든문자를대문자로표기하고, 단어사이에 _ 를넣어구분 static final int NUM_GEARS = 6; 변수의경우자료형을표시하기위한접두어를붙이기도함 int nspeed; String szstr1; 의미가미리정해진단어 프로그램에서정해진의미로만사용해야함 변수와자료형 변수의사용범위 변수를선언할때, 저장되는값의자료형을선언 메소드를선언할때, 반환값의자료형을선언 자료형에따라적용가능한연산이다름변수의종류 지역변수와파라미터 선언된곳부터해당블록이종료될때까지유효함 메소드가실행될때만들어지고끝나면없어짐 지역변수는초기값을지정한후사용해야함 지역변수선언에서접근제어자를사용하지않음 인스턴스변수클래스변수지역변수파라미터 ( 클래스정의에서 static 이아닌필드 ) 객체가소유하는변수 ( 클래스정의에서 static 필드 ) 객체가공유하는변수 메소드내부에서선언된변수 메소드호출시전달하는값을저장하기위한변수 데이터필드 ( 인스턴스변수 or 클래스변수 ) 선언된클래스내부에서사용가능 클래스외부에서의사용여부는접근제어자 (access modifier) 에따라다름 예 : class Circle { protected int radius;

6 Java 의기본자료형 리터럴 (1) 분류 키워드 길이 (byte) 값의범위 문자 char 2 \u0000 ~ \uffff 논리 boolean 1 true 또는 false byte 1-128~127 정수 short ~32767 int ~ long ~ 실수 float 4 (+/-) 약1.4E-45~3.4E38 double 8 (+/-) 약4.9E-324~1.8E308 상수 리터럴 ( 실제데이터값 ) 또는값이변하지않는변수 final int nconst = 3; // 선언시초기값을지정 정수형리터럴 byte, short, int, long l 이나 L 로끝나면 long 형, 나머지는 int byte 와 short 는허용범위안에서 int 와호환됨 26L, 26, 0b11010, 032, 0x1a 리터럴 (2) 참조형 실수형리터럴 소수점이있는숫자 f 나 F 로끝나면 float 형, 나머지는 double 형 123.4f, 123.4, 1.234e2 문자형리터럴 1 개의문자를표현하고 16 비트 UNICODE 로인코딩됨 단일따옴표를사용하고 Unicode 사용가능 \u0000 ~ \uffff (0~65536) 의수와호환됨 (char)65, A, \u0041, 가, \uac00 기본형을제외한모든자료형 참조값 ( 주소 ) 을가지는자료형 배열, 클래스형등 int anarray[ ]; Circle mycircle; String szstr; 10 Java 참조형변수는저장공간에참조값을저장함 실제데이터는별도의공간에저장됨 기본형변수는저장공간에값자체를저장함 10

7 형변환 묵시적자료형의변환 작은타입에서큰타입으로는자동형변환 byte > short > int >long > float > double 개발자 > 직원 > 인간 > 포유류 예 double d = 5; // 대입문 System.out.println( j +10); // 수식 double res = Math.sqrt(2); // 메소드호출 명시적자료형의변환 큰타입에서작은타입으로변환할때는명시적형변환이필요 문법은 ( 자료형 ) 피연산자 예 float f = (float)5.5; 연산자의종류 구분 연산자예 산술연산자 + - * / % 단항연산자 비교연산자 > >= < <= ==!= instanceof 논리연산자 && 단항! 삼항?: & ^ 비트연산자 비트논리 & ^ ~ 비트이동 << >> >>> 대입연산자 = += -= *= /= %= &= ^= = >>= <<= >>>= 형변환연산자 ( 자료형 ) 기타 [ ] ( ). 명령행매개변수 문장의종류 프로그램을실행할때전달하는인자 main( ) 함수에전달되는인자 문자열로전달됨 > java CommandInputTest Kim 123 public class CommandInputTest { public static void main(string args[ ]) { System.out.println(args[0]); int n = Integer.parseInt(args[1]); System.out.println(n); 수식문변수선언문제어문기타 블록문 { 레이블문 레이블 : 문장 예외처리문 try-catch 문 동기화문 synchronized 문

8 제어문 프로그램의실행은기본적으로위에서아래로순차실행됨 제어문은실행흐름을바꿈 제어문의종류 선택문 조건에따른문장의선택 if 문, switch 문 선택문 (1) if문 if (boolean-수식) 문장 if-else문 if (boolean-수식) 문장 else 문장 if와 else의짝짓기 else는자기짝이없는가장가까운if와짝을이룸 반복문 점프문 조건에따른문장의반복 for 문, while 문, do-while 문 분기문 return 문, break 문, continue 문 int a = 2; int b = 2; if (a == 1) if (b == 2) System.out.println("a was 1 and b was 2."); else System.out.println("a wasn't 1."); 선택문 (2) 반복문 switch문 다중선택구조 case 조건은정수 (long형제외 ) 와호환되거나 String 값 default는생략가능하며어떤 case에도해당되는않는경우매칭됨 만족되는 case를실행한후, break문을만날때까지계속실행 switch(n) { case 10: System.out.println("10입니다."); break; case 20: case 30: System.out.println("20이거나 30입니다."); break; default: System.out.println(" 모르겠습니다."); break; for-each문 개선된 for문 배열이나컬렉션의원소들을차례로다룰때편리 형식은 for ( 변수선언 : 배열 ) { 문장 public class ForEachDemo { public static void main(string[] args) { int[ ] arrayofints = {32, 87, 3, 589, 12, 1076, 2000, 8; for (int element : arrayofints) { System.out.print(element + " "); System.out.println();

9 점프문 (1) break 문 break 문을포함하는가장가까운 switch 문, for 문, while 문, do-while 문의실행을끝냄 반복문이나 switch 문을빠져나갈때사용 형식은 break; 레이블을사용하여특정반복문을빠져나갈수있음 중첩 for 문에서바깥 for 문을종료하는경우 이경우형식은 break 레이블 ; 반복문에레이블을지정하려면레이블 : 반복문 점프문 (2) continue 문 반복문안에서사용함 가장가까이있는반복문의다음반복으로즉시제어를이동하기위한것 형식은 continue; 레이블을사용하여특정반복문의다음반복으로이동할수있음 중첩 for문에서바깥 for문의다음반복으로갈때 이경우형식은 continue 레이블 ; 배열 3 강. Java 기본문법 (2) 같은자료형의원소를정해진개수만큼가지고있는객체배열의크기는배열이생성될때정해지고바뀌지않음숫자인덱스 ( 첨자 ) 를사용하여특정원소를다룸 컴퓨터과학과김희천교수 2017 년 5 월 24 일 501 호김룡 배열의선언 선언할때크기를지정할수없음 형식은자료형 [ ] 변수이름 ; 또는자료형변수이름 [ ]; 예 int[ ] a; int b[ ]; int[ ][ ] c; int d[ ][ ];

10 배열의사용 (1) 배열의선언과초기화 선언과동시에중괄호를이용하여초기값을지정 자동으로메모리공간이확보됨 예 int a[ ] = {2, 3, 5, 7, 11; // 선언과초기화 a a[0] a[1] a[2] a[3] a[4] int b[ ]; b = {4, 5, 6; // 오류 int anarray3[ ][ ] = {{1, 2, 3, {4, 5, 6; 배열의사용 (2) 배열의선언과메모리공간의생성 new 연산자를이용 배열의크기를정하고메모리공간을확보 메모리의주소값을리턴함 원소가숫자인경우 0, 참조형인경우 null 로자동초기화 예 int a[ ] = new int[3]; // 선언과생성 int b[ ]; b = new int[10]; int anarray4[ ][ ] = new int[3][2]; 배열의크기 배열은크기를가지는내장속성 length를가짐 사용법은배열이름.length public class ArrayTest { public static void main(string args[ ]) { int twoarray[ ][ ] = { {0, 1, {10, 11, 12 ; for(int i = 0;i < twoarray.length;i++) for(int j = 0;j < twoarray[i].length;j++) System.out.println( twoarray[i][j]); twoarray[0].length twoarray.length [0][0] [0][1] [1][0] [1][1] [1][2] twoarray[1].length String 클래스 문자열을표현하고처리하기위한참조형 String 형의변수는기본형변수처럼사용할수있음 문자열리터럴 이중따옴표를사용함 예 String s1 = Java ; String s2 = new String( Java ); null 이라는특별한리터럴이있음 참조형변수의값이될수있음 if ( s1!= null ) { false true

11 문자열의 + 연산 두문자열을연결하는것 ( 문자열 + 기본형 ) or ( 문자열 + 다른참조형 ) 도가능 기본형과참조형값은문자열로형변환가능 print( ) 나 println( ) 에서자주사용됨 1 개매개변수를문자열로바꾸어출력함 System.out 은화면출력을위한객체 Scanner 클래스 키보드나파일로부터다양한자료를입력받을때사용 기본적으로공백문자로구분되는단어단위로입력됨 클래스에관한설명을보려면아래 API 설명페이지를참조 키보드에서입력받을때 System.in 은키보드입력을위한객체 System.in 을이용하여 Scanner 객체를만들고사용함 System.out.println("result=" + " " + result); System.out.println('A'+ 0); //65 System.out.println("A" + 0); Scanner sc = new Scanner(System.in); String name = sc.next( ); Scanner 클래스를사용한입력 (1) Scanner 클래스의입력용메소드 boolean hasnext( ) - 다음단어가있으면 true를반환 String next( ) 단어를읽어문자열로반환 boolean hasnextint( ), int nextint( ) boolean hasnextdouble( ), double nextdouble( ) boolean hasnextline( ), String nextline( ); Scanner s = new Scanner(System.in); String name = s.nextint( ); Scanner 클래스를사용한입력 (1) import java.util.scanner; public class ScannerDemo2{ public static void main(string args[]) { Scanner sc = new Scanner(System.in); while(sc.hasnextint()) { System.out.println(sc.nextInt());

12 클래스정의 클래스의정의와클래스의사용 클래스정의문법 [ 접근제어자 ] class 클래스이름 [extends 부모클래스이름 ] [implements 인터페이스이름 ] { 데이터필드선언 생성자선언메소드선언 클래스접근제어자 생략, public, protected, private 또는 abstract, final 클래스의정의 데이터필드와메소드를정의 객체가가지는인스탄스변수와인스탄스메소드 클래스가가지는클래스변수와클래스메소드 메소드는저장된데이터를이용해기능을수행 객체의상태는데이터필드로, 행위는메소드로구현됨 클래스의사용 상속받아클래스를정의하거나객체를생성하는경우 클래스는객체의자료형 클래스의접근제어자 (1) 클래스의접근제어자 (2) 클래스를사용할수있는범위를제한하는것 private 과 protected 는특별한경우에만사용함 접근제어자와의미 접근제어자가생략된 class 는같은패키지에있는다른클래스에서사용가능 ( 패키지접근수준 ) public class 는모든클래스즉, 어디서나사용가능 class Circle { private int r; public Circle(int a) { r = a; public double getarea( ) { return r * r * ; public class CircleArea2 { public static void main(string args[ ]) { Circle c = new Circle(5); //System.out.println(c.r); System.out.println(c.getArea( ));

13 데이터필드의접근제어자 (1) 데이터필드와접근제어자 (2) 데이터필드를사용할수있는범위를제한하는것 ( 정보은닉 ) 메소드의접근제어자도의미가같음 접근제어자의의미 아래 4 개의클래스에서 Alpha 클래스의어떤멤버를사용할수있는가? 접근제어자가생략된필드는같은패키지에있는다른클래스에서사용가능 private 필드는같은클래스에서만사용가능 protected 필드는같은패키지에서그리고자식클래스에서사용가능 public 필드는모든클래스에서사용가능 Alpha 클래스의 멤버 Alpha Beta ( 같은패키지 ) AlphaSub ( 자식 ) Gamma ( 다른패키지 ) public 사용가능 사용가능 사용가능 사용가능 protected 사용가능 사용가능 사용가능 생략사용가능사용가능 private 사용가능 메소드정의 4 강. 클래스와상속 컴퓨터과학과김희천교수 2017 년 5 월 24 일 501 호김룡 문법 헤더와몸체로구성 [ 접근제어자 ] 반환형메소드이름 ([ 자료형인자 [, 자료형인자 ]]) [throws 예외이름 ] { 문장 public double getarea( ) { return radius * radius * PI; public void setradius(int r) { radius = r;

14 생성자 (1) 생성자 (2) class Circle { private int r; public Circle(int a) { r = a; public double getarea( ) { return r * r * ; public class CircleArea2 { public static void main(string args[ ]) { Circle c = new Circle(5); //System.out.println(c.r); System.out.println(c.getArea( )); 객체가생성될때자동으로실행되는메소드 객체의필드값을초기화하거나메모리할당등의작업객체생성방법은 new 클래스이름 ( 인자 ) Circle c = new Circle(5); new 연산자를이용하여객체를생성 ( 메모리할당 ) 하고 생성자가호출 ( 데이터초기화 ) 되면서 객체의참조값을변수에대입 (=) 생성자정의 기본생성자 보통메소드와정의방법이다름 생성자는객체가생성될때자동호출됨 인자가없는생성자를의미 디폴트 (default) 생성자 정의방법 생성자이름은클래스이름과같음 반환형을선언하지않음 여러생성자를정의할수있음 ( 생성자오버로딩 ) 인자의개수와인자의자료형으로구분 접근제어자는보통 public 클래스정의에생성자정의가전혀없으면컴파일러가다음과같은것을자동으로만들어줌 public Cirle( ) { 여기서자동으로부모클래스의생성자를자동호출함 super( ) 부모클래스에서기본생성자의존재를확인해야함

15 클래스의사용 객체의사용 상속을위해사용하는것 class CSub extends CSuper { 변수를선언하고객체를생성 클래스참조형변수의선언 Circle c; c = new Circle(5); 객체변수와점 (.) 연산자를사용하여멤버에접근 객체가소유하는데이터를읽거나쓰기 객체를이용하여메소드를호출하기 예 c.r = 5; //c 의 r 을변경 c.getarea( ) //c 에게 getarea( ) 실행을요청 public double getarea( ) { return this.r * this.r * ; static 필드와 static 메소드 (1) static 필드 정적필드 or 클래스변수 클래스의모든객체가공유하는데이터 객체의생성이없어도항상사용가능 어떤객체도값을변경할수있음 사용방법은클래스이름. 정적필드 객체변수. 정적필드도가능 c1 c2 c1.x c1.y c1.radius Circle.count 2 static 필드와 static 메소드 (2) static 메소드 정적메소드 or 클래스메소드 객체와무관하게호출되고실행됨 메소드몸체에서 this를사용할수없음 static 필드와인자를가지고작업함 사용방법은클래스이름. 정적메소드 ( ) Math.sqrt(2.0); Integer.parseInt( 120 ); 0 0 5

16 final 필드와 final 메소드 final 필드 상수데이터를선언 선언할때초기값을지정해야함 자주 static과함께사용됨 final static double PI = ; final 메소드 자식으로의상속은가능하나재정의할수없는메소드 객체초기화 (1) 객체를생성할때, 데이터필드에초기값을지정하는것 클래스변수는프로그램시작시에자동초기화됨 데이터필드는자동으로초기값이주어질수있음 방법 ( 아래의순서대로실행됨 ) 데이터필드의선언문에서초기화 초기화블록 클래스몸체내임의위치에포함 초기값지정을위한코드 생성자실행전에수행됨 static 필드는 static 블록을사용 생성자 class IniTest { int nvalue = 1; { nvalue = 2; public IniTest( ) { nvalue = 3; 객체초기화 (2) 메소드오버로딩 import java.awt.point; class Rectangle { public int width = 0; public int height = 0; public Point origin; public Rectangle( ) { origin = new Point(0, 0); public Rectangle(Point p, int w, int h) { origin = p; width = w; height = h; public class Test { public static void main(string args[ ]) { Point originone = new Point(23, 94); Rectangle rectone = new Rectangle(originOne, 100, 200); Point 객체 x originone 23 y 94 rectone Rectangle 객체 origin width 100 height 200 인자의개수나인자의자료형이다르면같은이름의메소드를한클래스에서중복정의할수있음 인자의개수나인자의자료형으로구분할수있어야함 메소드를호출할때, 가장가까운메소드가호출됨 예 System.out.println( ); // 인자없음 System.out.println( 문자열 "); // 인자는 String System.out.println(241); // 인자는 int System.out.println(34.5); // 인자는 double

17 클래스와객체의사용예 클래스의재사용 class Cylinder { private Circle c; // 원 private int h; // 높이 public Cylinder(Circle a, int b) { c = a; h = b; public double getvolume( ) { return c.getarea( ) * h; public class CylinderVolume { public static void main(string args[]) { Circle c = new Circle(7); int h = 8; Cylinder cy = new Cylinder(c, h); System.out.println(cy.getVolume( )); 합성 기존클래스를새로운클래스의멤버로사용 has-a 관계 class Line { Point begin, end; 상속 기존클래스 ( 부모 ) 를사용하여새로운클래스 ( 자식 ) 를정의 코드의중복작성을줄이고프로그램의확장성이좋아짐 기존클래스를확장 or 특화 is-a 관계 클래스의상속 (1) 클래스의상속 (2) 상속은부모클래스와자식클래스간의관계 자식클래스가부모클래스의필드와메소드를상속받음 키워드 extends 를사용함 class Manager extends Employee { 자식클래스에서메소드오버라이딩가능 반환형, 이름, 매개변수가일치해야함 접근제어자는일치하거나접근범위가넓어져야함 클래스의상속은단일상속만가능 인터페이스상속의경우는다중상속가능 class CSuper { private int f1; public int f2; public void setprivate( ) { f1 = 10; public void setpublic( ) { f2 = 20; private void mprivate( ) { f1 = 30; class CSub extends CSuper { private int f3; public int f4; public class InheritTest { public static void main(string args[ ]) { CSub sub = new CSub( ); sub.f1 = 40; // 오류 sub.f2 = 50; sub.f3 = 60; // 오류 sub.f4 = 70; sub.setprivate( ); sub.setpublic( ); sub.mprivate( ); // 오류

18 메소드오버라이딩 (1) 메소드오버라이딩 (2) 부모로부터상속받은메소드의몸체를자식클래스에서재정의하는것 부모와자식에서같은이름의메소드가다른기능을수행하게됨 오버라이딩방법 메소드의이름, 인자의개수와자료형, 반환형이같은메소드를정의 반환형은서브타입 ( 상속관계에서자식클래스 ) 도가능함 접근제어자의가시성 ( 접근범위 ) 은같거나커져야함 public 인경우 public 만가능 class Shape { public double getarea(double h, double w) { return h * w; class Triangle extends Shape { public double getarea(double h, double w) { return h * w * 0.5; public class OverridingTest { public static void main(string args[ ]) { Triangle t = new Triangle( ); System.out.println( t.getarea(3.0, 4.0) ); this 메소드실행시, 현재객체에대한참조값을가지고있음 숨은인자로 this가메소드에전달됨 c1.display( ) 과 c2.display( ) 의결과가다른이유임 인스탄스메소드나생성자에서사용가능 클래스메소드에서사용할수없음 class Circle { public double getarea( ) { return this.radius * this.radius * PI; public void display( ) { System.out.prinln(" 반지름 + this.radius + " 면적 "+ this.getarea( )); super 메소드실행시, 현재객체에대한참조값을가짐 자료형이부모클래스유형임 자식클래스에서인스탄스메소드나생성자에서사용됨 부모클래스에서오버로딩당한메소드를호출하거나상속되었으나감춰진필드에접근할때필요함 super. 메소드 ( 인자 ) super. 필드

19 this( ) 와 super( ) super 와 super( ) 의사용예 생성자몸체의첫번째문장에서만사용 this( ) 같은클래스의다른생성자를호출하는것 super( ) 부모클래스의생성자를호출하는것 상속받은데이터필드를초기화하기위한것 생성자몸체에서부모클래스생성자의명시적호출이없다면, super( ) 가자동호출됨 public class Cylinder extends Circle { private double height; public Cylinder( ) { super( ); height = 1.0; public Cylinder(double radius, double h) { super(radius); this.height = h; public double getheight( ) { return height; public void setheight(double h) { this.height = h; public double getarea( ) { return 2 * PI*getRadius( ) * height + 2 * super.getarea( ); public double getvolume( ) { return super.getarea( ) * height; public String tostring( ) { return "Cylinder of radius = " + getradius( ) + " height = " + height; 추상메소드 5 강. 인터페이스와다형성 컴퓨터과학과김희천교수 2017 년 5 월 24 일 501 호김룡 몸체의구현이없이형식만존재하는메소드 반환형, 이름, 인자선언만존재함 메소드정의에 abstract 키워드를사용해야함 자식클래스에상속되어몸체의구현이필요함 상반된의미의 final 과함께사용할수없음 abstract public class Shape {... abstract public double getarea( ); // 모양이정해지지않았기때문에면적을계산할수없음

20 추상클래스 추상클래스의사용 추상메소드를포함하는클래스는반드시추상클래스라야함 물론데이터필드나일반메소드를포함할수있음 객체생성을할수없음 구체적이지못한불완전한클래스라는의미 클래스정의에 abstract 사용해야함 abstract public class Shape { abstract public double getarea( ); Shape s = new Shape( red ); // 컴파일오류 의미적으로유사한클래스를묶고자할때사용 공통으로사용할데이터필드와메소드를정의 추상클래스는불완전한클래스 기능적으로구현하기어려운메소드가존재 추상클래스는자식클래스로상속되어사용됨 자식클래스에서추상메소드를구현 그러면자식클래스는객체생성이가능 자식클래스가추상메소드를구현하지않으면계속해서자식클래스도추상클래스로남음 추상클래스는일반클래스와인터페이스의중간적성격을가짐 Java 의인터페이스 인터페이스정의 100% 추상클래스 모든메소드가추상메소드 (public abstract) 데이터는클래스상수만가능 (public static final) default 메소드와 static 메소드는몸체의구현이필요함 객체생성불가 클래스와마찬가지로참조자료형 인터페이스의이름은보통형용사임 Runnable, Serializable, Comparable 문법은클래스정의와유사함 정의할때키워드 class 대신에 interface 를사용 abstract 는생략하는것이보통임 메소드는자동으로 ( 생략가능 ) public abstract 임 수행할수있는기능의형식만나열한것 default 메소드와 static 메소드도가능 이경우몸체를구현해야함 자동으로 public 임 필드는자동으로 public static final 임 클래스상수만가능함

21 인터페이스의사용 추상클래스와마찬가지로자식클래스에상속되어사용됨 인터페이스를상속받는자식클래스는모든추상메소드를구현해주어야함 의미적으로는관련이없으나기능적으로유사한클래스들을묶을때사용할수있음 예 : 대소비교가가능한객체들의자료형을묶을때 인터페이스를상속받아자식인터페이스를정의할수있음 인터페이스의확장 인터페이스의상속과구현 여러인터페이스를상속받는다중상속이가능클래스는단일상속만가능 상속 자식인터페이스가부모인터페이스를상속받는경우 extends 를사용 예 interface A extends OtherInterface1 { 구현 (or 상속 ) 자식클래스가부모인터페이스를상속받는경우 자식은부모가나열한기능을구현해야함 implements 를사용 예 class MovablePoint implements Movable { 인터페이스구현예 디폴트메소드 interface Movable { void moveup( ); void movedown( ); void moveleft( ); void moveright( ); public class MovableTest { public static void main(string[] args) { Movable m1 = new MovablePoint(5, 5); System.out.println(m1); m1.moveup( ); System.out.println(m1); m1.moveright( ); System.out.println(m1); class MovablePoint implements Movable { private int x, y; public MovablePoint(int x, int y) { this.x = x; this.y = y; public String tostring( ) { return "Point at (" + x + "," + y + ")"; public void moveup( ) { y++; public void movedown( ) { y--; public void moveleft( ) { x--; public void moveright( ) { x++; Point at (5,5) Point at (5,6) Point at (6,6) 인터페이스에서선언하는메소드에기본구현을넣을수있음 자식클래스에서그대로사용하거나몸체를다시정의해줄수있음 default 를사용하고몸체를구현해줌 인터페이스에나열된기능을확장할때, 기존코드의수정을피하기위함 추상메소드가추가된다면기존인터페이스를구현한클래스를수정해야함 interface DoIt { void dosomething( ); int dosomethingelse(string s); // 아래를새로추가한다면? default boolean diditwork(int i, String s) {

22 추상클래스 / 인터페이스 / 클래스의형변환 인터페이스와클래스는모두사용자정의형 extends와 implements에따라상위 / 하위자료형관계가설정됨 상위유형의변수는하위객체의참조값을가질수있음 상위유형의변수가가리키는객체의실제유형에따라수행되는메소드가결정됨 ( 동적바인딩 ) 변수의선언유형으로정하지않음 SuperClass super = new SubClass( ); super.method( ); // SubClass에서찾음 다형성과형변환 다형성 하나의객체가다양한형상이나다양한기능을가진다는뜻 하나의클래스에서오버로딩된메소드들은유사하지만조금씩다른기능을수행함 자식클래스에서재정의된메소드는부모유사하지만다른기능을수행함 형변환 상속관계에있는클래스간에는타입변환이가능함 전혀다른두클래스간에는타입변환이금지됨 하위클래스에서상위클래스로의형변환은문제없음 상위유형의변수는하위객체의참조값을가질수있음 다형성과오버라이딩클래스상속과다형성 (1) 클래스의다형성 부모클래스로부터상속받은메소드를자식클래스에서오버라이딩할수있음 부모와자식에서같은이름의메소드가다른기능을수행 같은이름과매개변수및반환형을가지나몸체가다름 인터페이스의다형성 자식클래스들에서상위인터페이스의메소드를다르게구현함 class A { public void func( ) { System.out.println( a ); class B extends A { public void func( ) { System.out.println( b ); class C extends B { public void func( ) { System.out.println( c ); public class PolymorphTest { public static void main(string args[ ]) { A a = new B( ); a.func( ); a = new C( ); a.func( ); b c

23 클래스상속과다형성 (2) 열거형정의 class Employee { int nsalary; String szdept = null; public void dojob( ) { System.out.println("Do something"); class Sales extends Employee { public Sales( ) { szdept = "Sales Dept"; public void dojob( ) { System.out.println("Do sales"); Do sales Do development class Development extends Employee { public Development( ) { szdept = "Sales Dept"; public void dojob( ) { System.out.println("Do development"); public class Company1 { public static void main(string args[ ]) { Employee emp1, emp2; emp1 = new Sales( ); emp2 = new Development( ); emp1.dojob( ); emp2.dojob( ); 열거형은미리정의된상수값을만들기위한자료형 enum을사용하여정의 열거형으로선언된변수에는미리지정된값만대입가능 상수값을배열로리턴하는 static 메소드로 values( ) 를제공 enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY 열거형의생성자와메소드 열거형정의에필드와메소드를포함할수있음 상수선언이필드나메소드보다먼저정의되어야하며세미콜론 (;) 으로끝나야함 생성자는열거형과같은이름을가지며접근제어자는생략또는 private이어야함 열거형의생성자는상수값을설정 ( 객체생성 ) 할때자동호출됨 열거형에서상수는마치하나의객체와같음 열거형사용예 enum BaseballTeam { LG(40, 30), SS(30, 40), KT(20, 50), SK(35, 35), NC(55, 15); private final int win; private final int lose; private BaseballTeam(int win, int lose) { this.win = win; this.lose = lose; public class EnumTest2 { public static void main(string args[ ]) { BaseballTeam bt = BaseballTeam.LG; System.out.println(bt.winsRate( )); public double winsrate( ) { return (win * 100.0) / (win + lose);

24 익명클래스 클래스를상속받는익명클래스 일회성으로 1 개의객체를생성하기위한클래스 클래스정의와동시에객체를생성할수있음 슈퍼클래스를상속받거나인터페이스를구현하도록익명클래스를정의 new 클래스 / 인터페이스 ( ) { 중괄호는익명클래스의몸체 public class AnonymousTest { public static void main(string args[ ]) { CSuper sub = new CSuper( ) { public int b = 20; public void method1( ) { System.out.println( sub1 ); public void method3( ) class CSuper { public int a = 10; public void method1( ) { System.out.println( super1 ); public void method2( ) { System.out.println( super2 ); { System.out.println( sub3 ); ; sub.method1( ); sub.method2( ); System.out.println(sub.a); sub1 super2 10 인터페이스를구현한익명클래스 public class AnonymousTest { public static void main(string args[]) { MyInterface sub = new MyInterface( ) { public void method( ) { System.out.println( sub1 ); ; 6 강. 제네릭과람다식 ( 교재 5 장 ) sub.method( ); interface MyInterface { public void method( ); 컴퓨터과학과김희천교수 2017 년 5 월 24 일 501 호김룡

25 제네릭의의미 (1) 제네릭클래스, 제네릭인터페이스, 제네릭메소드 클래스, 인터페이스, 메소드를정의할때타입매개변수 ( 타입파라미터 ) 를선언하고사용할수있음 제네릭을사용하는이유 자료형을한정함으로써컴파일시점에자료형검사가가능 실행오류를찾아고치는것은어려움 캐스트 ( 형변환 ) 연산자의사용이불필요 여러유형에걸쳐동작하는일반화된클래스 / 메소드를정의할수있음 제네릭의의미 (2) ArrayList 클래스는 List 인터페이스를구현한클래스 class ArrayList<E> implements List<E> { boolean add(e e) { E get(int index) { E remove(int index) { List list1 = new ArrayList( ); list1.add("hello"); String s1 = (String)list1.get(0); // 형변환필요 List<String> list2 = new ArrayList<String>( ); list2.add("hello"); String s2 = list2 get(0); // 형변환이필요없 제네릭클래스 클래스정의에서타입파라미터를선언함 클래스를사용할때는타입을명시해야함 필드의자료형, 메소드반환형, 인자의자료형으로사용할수있음 타입파라미터는참조형만가능함 컴파일할때, 명확한타입검사를수행할수있음 메소드호출시인자의유형이맞는지 메소드호출의결과를사용할때유형이맞는지 자료형을매개변수로가지는클래스와인터페이스를제네릭타입이라고함 제네릭클래스정의 (1) 문법 class 클래스이름 <T1, T2, > { 클래스정의에서클래스이름의오른편, 각괄호 < > 안에타입파라미터를표시함 컴마 (,) 로구분하여여러개의타입파라미터를지정할수있음 타입파라미터는타입을전달받기위한것 타입파라미터의이름은관례적으로 E, K, V, N, T 을사용함

26 제네릭클래스정의 (2) 제네릭클래스의사용 class Data { private Object object; public void set(object object) { this.object = object; public Object get( ) { return object; class Data2<T> { private T t; public void set(t t) { this.t = t; public T get( ) { return t; 제네릭타입과자료형검사 제네릭타입을사용하지않으면컴파일시점에서오류를검출하지못함 의미가명확하면생성자호출시, 괄호만사용할수있음 Data2<String> b3 = new Data2< >( ); public class GenericsTest2 { public static void main(string args[ ]) { Data2<String> data = new Data2<String>( ); Integer i = new Integer(20); data.set(i); // 컴파일오류 String s = (String) data.get( ); 제네릭인터페이스를구현하는제네릭클래스 2 개의타입매개변수 (K 와 V) 를가지는클래스 interface Pair<K, V> { public K getkey(); public V getvalue(); class OrderedPair <K, V> implements Pair <K, V> { private K key; private V value; public OrderedPair(K key, V value) { this.key = key; this.value = value; public K getkey( ) { return key; public V getvalue( ) { return value; public class MultipleType { public static void main(string args[ ]) { Pair <String, Integer> p1; p1 = new OrderedPair <> ("Even", 8); Pair <String, String> p2; p2 = new OrderedPair <> ("hello", "java"); 제네릭타입을상속 / 구현하는일반클래스 제네릭인터페이스를구현하는일반클래스 클래스를정의할때제네릭인터페이스의자료형을지정하면됨 class MyPair implements Pair<String, Integer> { private String key; private Integer value; public MyPair(String key, Integer value) { this.key = key; this.value = value; public String getkey( ) { return key; public Integer getvalue( ) { return value; public class ClassFromGeneric { public static void main(string args[ ]) { MyPair mp = new MyPair("test", 1);

27 Raw 타입 제네릭타입을일반타입처럼사용하는경우의제네릭타입을지칭하는용어 2 예 Data2 data = new Data2( hello ); 제네릭메소드와타입제한 이때 Data2 는제네릭타입 Data2<T> 의 raw 타입 자료형을 Object 로처리함 제네릭메소드 (1) 자료형을매개변수로가지는메소드 하나의메소드정의로여러유형의데이터를처리할때유용함 메소드정의에서반환형왼편, 각괄호 <> 안에타입매개변수를가짐 타입매개변수를메소드의반환형이나메소드인자의타입으로사용할수있음 지역변수의타입으로사용할수도있음 public static <T> T getlast(t[ ] 제네릭메소드 (2) 인스탄스메소드와 static 메소드모두제네릭메소드로정의가능 제네릭메소드를호출할때, 타입을명시하지않아도인자에의해추론이가능함 class Util { public static <K, V> boolean compare(pair<k, V> p1, Pair<K, V> p2) { return p1.getkey().equals(p2.getkey()) && p1.getvalue().equals(p2.getvalue()); a) { return a[a.length-1]; public class GenericsTest5 { public static void main(string args[]) { Pair<Integer, String> p1 = new Pair<>(1, "apple"); Pair<Integer, String> p2 = new Pair<>(2, "pear"); boolean same = Util.<Integer, String>compare(p1, p2); System.out.println(same);

28 제네릭의타입제한 자료형을매개변수화하여클래스 / 인터페이스 / 메소드를정의할때, 자료형에제한을두는것 <T extends Number> 와같이하면 T를상한으로정할수있음 타입매개변수는 Number의서브클래스라야함 class Data<T extends Number> { private T t; public Data(T t) { this.t = t; public void set(t t) { this.t = t; public T get( ) { return t; public class BoundedType { public static void main(string args[ ]) { Data<Integer> data = new Data<Integer>(20); System.out.println(data.get( )); 제네릭타입과형변환 상속관계가있어야상위 / 하위자료형의관계가존재함 Integer나 Double은 Number의자식클래스 Data <Number> 와 Data <Integer> 는상하위관계가없음 class Data<T> { class FormattedData<T> extends Data<T> { public class GenericTypeConversion1 { public static void main(string args[ ]) { Data<Number> data = new Data<Number>( ); data.set(new Integer(10)); data.set(new Double(10.1)); Data <Number> data1 = new Data <Integer>( ); // 컴파일오류 Data<Integer> data = new FormattedData<Integer>( ); 제네릭타입사용시유의사항 기본자료형은타입매개변수로지정할수없음 Data<int> d = new Data<>( ); // 오류 타입매개변수로객체생성을할수없음 class Data <T> { private T t1 = new T( ); // 오류 타입매개변수의타입으로 static 필드를선언할수없음 class Data <T> { private static T t2; // 오류 제네릭타입의배열을선언할수없음 Data <Integer>[ ] arrayofdata; // 오류 3 람다식

29 람다식 인터페이스를구현하는익명클래스의객체생성부분을수식화한것 구현할것이 1개의추상메소드일때간단히표현할수있음 람다식구문 Runnable runnable = new Runnable( ) { public void run( ) {... ; 메소드매개변수의괄호, 화살표, 메소드몸체로표현 인터페이스객체변수 = ( 매개변수목록 ) -> { 실행문목록 Runnable runnable = ( ) -> {... ; 람다식기본문법 (1) 익명구현클래스의객체생성부분만람다식으로표현함 익명서브클래스의객체생성은람다식이될수없음 이때인터페이스에는추상메소드가 1 개만있어야함 2개이상의추상메소드를포함하는인터페이스는사용불가 람다식의결과타입을타깃타입이라고함 1개의추상메소드를포함하는인터페이스를함수적인터페이스라함 메소드가 1개뿐이므로메소드이름을생략할수있음 람다식기본문법 (2) 람다식사용예 (1) 인터페이스객체변수 = ( 매개변수목록 ) -> { 실행문목록 매개변수목록에서자료형은인터페이스정의에서알수있으므로변수이름만사용가능 매개변수가 1개면괄호가생략가능하며변수이름하나만남음 매개변수를가지지않으면괄호만남음 실행문이 1개이면중괄호생략가능 실행문이 return문뿐이라면 retrun과중괄호를동시생략해야함 interface MyInterface1 { public void method(int a, int b); interface MyInterface2 { public void method(int a); public class LambdaTest1 { public static void main(string args[]) { MyInterface1 f1, f2, f3; MyInterface2 f4, f5; b); ; f1 = (int a, int b) -> { System.out.println(a + f1.method(3, 4); f2 = (a, b) -> { System.out.println(a + b); ; f2.method(5, 6); f3 = (a, b) -> System.out.println(a + b); f3.method(7, 8); f4 = (int a) -> { System.out.println(a); ; f4.method(9); f5 = a -> System.out.println(a); f5.method(10);

30 람다식사용예 (2) 람다식사용예 (3) interface MyInterface3 { public int method(int a, int b); public class LambdaTest2 { public static void main(string args[]) { MyInterface3 f1, f2; // f1 = (a, b) -> return a+b; / 컴파일에러 f1 = (a, b) -> { return a + b; ; System.out.println(f1.method(3, 4)); f2 = (a, b) -> a + b; System.out.println(f2.method(5, 6)); public class RunnableTest4 { public static void main(string args[]) { Thread thd = new Thread(( ) -> System.out.println("my thread")); thd.start( ); import java.util.function.*; public class ConsumerTest{ public static void main(string args[]) { Consumer<String>con = t -> System.out.println("Hello " + t); con.accept("java"); 패키지의미 시스템패키지 관련이있는클래스와인터페이스의묶음 클래스와인터페이스는패키지의멤버로존재 전체적으로계층구조의클래스라이브러리 패키지 ( 폴더와유사 ) 단위로계층적으로분류됨 패키지용도 쉽게찾아사용하기위해 이름충돌을피하기위해 접근제어를위해 Java 가제공하는클래스라이브러리 JDK 와함께설치됨 일반적으로 jar 파일로압축되어있음 예 : C:\Program Files\Java\jdk1.8.0_121\jre\lib\rt.jar 예를들어 java\lang\boolean.class 가존재함

31 시스템패키지의사용 사용자정의패키지 (1) 가장기본이되는최상위시스템패키지는 java 임 대부분의시스템패키지는 java. 으로시작됨 Java 프로그램에서상위와하위패키지의구분을위해도트 (.) 를사용 예 : java.lang, java.io, java.awt, java.util 등 Java 언어의기본클래스는 java.lang에존재 프로그램에서클래스를사용할때는 java.io.ioexception 과같이사용함 패키지정의문법 package 패키지이름 ; 1 개이상의클래스나인터페이스정의 package 구문은소스코드맨앞에위치해야함 패키지이름은관례상소문자로작명 하위패키지는. 으로구분하여작성 컴파일하면패키지가만들어지고 ( 또는기존패키지에 ) 클래스파일 (.class) 이패키지에저장됨 사용자정의패키지 (2) 사용자정의패키지 (3) 패키지만들기예 컴파일결과로 Car.class 가만들어짐 Car.class 는 com.vehicle 패키지에저장됨 com.vehicle 은어디에? package com.vehicle; public class Car { String sztype = " 승용차 "; 컴파일할때 d 옵션사용하여지정함 예 - javac Car.java d D:\javaClasses 이경우 D:\javaClasses\com\vehicle\Car.class Eclipse를사용한패키지정의 메뉴 [File/New/Package] 를선택 패키지에해당하는폴더가만들어짐 생성된패키지에서클래스를만들면됨 메뉴 [File/New/Class] 를선택하여클래스이름과함께패키지이름을입력함

32 같은패키지에있거나 public인외부의클래스를사용하려면패키지를포함한완전한클래스이름을사용해야함 예 패키지의사용 (1) graphics.rectangle myrect = new graphics.rectangle( ); java.util.scanner s = new java.util.scanner(system.in); 패키지의사용 (2) import 문 import 패키지이름. 클래스이름 ; import 패키지이름.* ; import 구문은소스코드맨앞에위치함 package 구문이있다면그다음에위치 프로그램에서패키지이름을생략하고클래스나인터페이스를사용할수있게함 Java 프로그램에서 import java.lang.*; 구문은자동포함됨 패키지의사용과접근제어 아래프로그램에서 package 구문이없다면패키지접근수준의 Car 클래스를사용할수없음 // package com.vehicle; import com.vehicle.*; class MyBus extends Bus { public class PackageTest { public static void main(string args[ ]) { Bus bus = new Bus( ); Car car = new Car( ); // 오류 package com.vehicle; class Car { package com.vehicle; public class Bus extends Car { 클래스찾기 (1) 컴파일하거나실행할때, 필요한클래스를찾아야함 컴파일러가 A.class가위치한경로또는 A.class를포함하고있는 jar 파일의존재를알아야함 JVM은다음에서클래스를찾음 Java 기본패키지 [Java설치폴더]\jre\lib\*.jar Java 확장패키지 [Java설치폴더]\jre\lib\ext\*.jar 사용자클래스도찾을수있음 이때방법이필요함

33 사용자클래스는환경변수 CLASSPATH 에지정된경로또는 jar 파일에서찾음 환경변수 CLASSPATH 컴파일러는 CLASSPATH 에지정된경로에서클래스를찾음 CLASSPATH 의경로는 jar 파일을포함할수있음 예 클래스찾기 (2) 프로그램에서 graphics.circle 클래스를사용하고 CLASSPATH=path1;path2;a.jar 라고가정 이때, path1\graphics\circle.class 또는 path2\graphics\circle.class 또는 a.jar 에 \graphics\circle.class 가있어야함 예외와에러 에러 (Error) 는심각한오류로더이상의실행이불가함 예외 (Exception) 는경미한오류로복구가가능함 예외발생 메소드를수행할때예외가발생하면예외객체를만들어던짐 예외처리코드가없으면, 메시지가출력되면서종료됨 예외처리코드가있으면, 계속수행됨 예외객체 Exception 클래스또는하위클래스로표현됨 예외객체는예외발생정보를가지고있음 예외관련클래스의계층구조 예외처리 (Exception handling) Error Object Throwable Exception RuntimeException IOException unchecked Exception checked Exception 예외처리예외가발생했을때이상황을바로잡아계속수행하도록함 예외발생은 Exception 객체를 throw 함 throw new MyException( ); throw 된예외객체를 catch 하여예외를처리함 checkedexception이발생할수있는경우, 반드시명시적인예외처리가필요함 RuntimeException의경우, 예외처리를안해도됨 잘못작성된프로그램때문에발생됨 ArithmeticException, NullpointException, IndexOutOfBoundsException 등

34 예외처리방법 예외의직접처리 (1) 직접처리 던져진예외객체를잡아처리하는것 try-catch 구문또는 try-catch-finally 구문을사용하여예외를처리함 일반코드와예외처리가분리되어가독성이좋아짐 간접처리 예외발생가능성이있는메소드의선언에서인자다음에 throws 예외이름을사용 그메소드를호출하는메소드에게예외처리를전달또는위임하는것 try-catch 구문문법 try { catch(exceptiontype1 ex1) { catch(exceptiontype2 ex2) { finally { 예외객체를 throw 하는문장또는예외발생가능성이있는메소드의호출부분을 try 블록에둠 catch 블록은예외유형의 1 개인자를가지는메소드와유사 처리해야하는예외유형이여럿이면 catch 블록도여럿 finally 블록은생략가능 예외의직접처리 (2) 예외의직접처리 (3) try-catch 구문의실행 예외가발생하면 try 블록은즉시종료됨 catch 블록이여럿이면, 가장적합한 ( 발생된예외자료형또는상위유형 ) 하나만실행됨 예외가발생하지않으면 catch 블록은실행되지않음 finally 블록은예외발생과무관하게 try 블록이종료되면항상실행됨 예외발생여부와무관하게 try 블록이종료된후 할당받아사용했던리소스를원상복구하기위해 finally 블록을주로사용함 public class A { public void problem( ) throws RuntimeException { throw new RuntimeException( ); public void trythis( ) { try { problem( ); System.out.print("1"); catch (RuntimeException x) { System.out.print("2"); catch (Exception x) { System.out.print("3"); finally { System.out.print("4"); System.out.print("5"); public static void main(string[ ] args){ A a=new A( ); a.trythis( );

35 예외의간접처리 (1) 예외를발생시킬수있는메소드를호출하는쪽에예외처리를위임하는것 ( 예외의전파 ) 메소드선언에예외발생가능성을표시 메소드의선언에서괄호다음에 throws 예외유형을사용 public char getinput( ) throws IOException { ninput = System.in.read( ) ; // 예외발생가능 throws 절이있는메소드를호출하는메소드에서예외처리를해야함 try { c = obj.getinput( ); catch(ioexception ex ) { 예외의간접처리 (2) 예외를발생시킬수있는메소드 public FileInputStream(String name) throws FileNotFoundException FileInputStream 클래스의생성자 public int read( ) throws IOException InputStream 클래스 /Reader 클래스의메소드 위와같은메소드를사용할때는반드시예외처리가필요함 예외처리프로그램 (1) import java.io.*; public class ExceptionTest1 { public static void main(string args[ ]) { int b = 0; try { b = System.in.read( ); catch (IOException ex) { System.out.println(ex); System.out.println((char)b); 예외처리프로그램 (2) import java.io.*; class CharInput { int ninput = 0; public char getinput( ) throws IOException { ninput = System.in.read( ); return (char)ninput; public class ExceptionTest4 { public static void main(string args[ ]) { CharInput charinput = new CharInput( ); try { System.out.println(charInput.getInput ( )); catch (IOException ex) { System.out.println(ex);

36 사용자정의예외 사용자가직접예외클래스를작성할수있음 일반적으로 Exception 클래스를상속받음 필요할때예외객체를 throw 함 class MyException extends Exception{ public MyException( ) { super( ); public String tostring( ) { return "MyException"; class MyExceptionTest { public void testfunc(int x) throws MyException { if (x > 10) throw new MyException( );

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

Microsoft PowerPoint - 2강

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

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

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

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

JAVA PROGRAMMING 실습 09. 예외처리

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

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

슬라이드 1

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

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

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 프레젠테이션

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

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

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

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

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

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

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

More information

Microsoft PowerPoint - CSharp-10-예외처리

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

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

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

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

More information

쉽게

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

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

(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 프레젠테이션 Lab 4 ADT Design 클래스로정의됨. 모든객체들은힙영역에할당됨. 캡슐화 (Encapsulation) : Data representation + Operation 정보은닉 (Information Hiding) : Opertion부분은가려져있고, 사용자가 operation으로만사용가능해야함. 클래스정의의형태 public class Person { private

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

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

쉽게 풀어쓴 C 프로그래밍

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

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

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

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

Microsoft PowerPoint - C++ 5 .pptx

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

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

PowerPoint Presentation

PowerPoint Presentation Class : Method Jo, Heeseung 목차 section 1 생성자 (Constructor) section 2 생성자오버로딩 (Overloading) section 3 예약어 this section 4 메소드 4-1 접근한정자 4-2 클래스메소드 4-3 final, abstract, synchronized 메소드 4-4 메소드반환값 (return

More information

No Slide Title

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

More information

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

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345]) Class Class, Collections 514770-1 2017 년봄학기 3/22/2017 박경신 클래스 (Class) 객체의속성과행위선언 객체의설계도혹은틀 객체 (Object) 클래스의틀로찍어낸실체 메모리공간을갖는구체적인실체 클래스를구체화한객체를인스턴스 (instance) 라고부름 객체와인스턴스는같은뜻으로사용 클래스구조 클래스접근권한, public 다른클래스들에서이클래스를사용하거나접근할수있음을선언

More information

슬라이드 1

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

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

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

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 왜생겼나요..? : 절차지향언어가가진단점을보완하고다음의목적을달성하기위해..! 1. 소프트웨어생산성향상 객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를 가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임. 2. 실세계에대한쉬운모델링 실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사. 캡슐화 메소드와데이터를클래스내에선언하고구현

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

PowerPoint Presentation

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

More information

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

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

쉽게 풀어쓴 C 프로그래밍

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

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 손시운 ssw5176@kangwon.ac.kr 실제세계는객체로이루어진다. 2 객체와메시지 3 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 4 객체 5 객체란? 객체 (Object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt 2008 학년도 1 학기 상지대학교컴퓨터정보공학부 고광만 강의내용 어휘구조 토큰 주석 자료형기본자료형 참조형배열, 열거형 2 어휘 (lexicon) 어휘구조와자료형 프로그램을구성하는최소기본단위토큰 (token) 이라부름문법적으로의미있는최소의단위컴파일과정의어휘분석단계에서처리 자료형 자료객체가갖는형 구조, 개념, 값, 연산자를정의 3 토큰 (token) 정의문법적으로의미있는최소의단위예,

More information

슬라이드 1

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

More information

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

Microsoft PowerPoint - chap03-변수와데이터형.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 학습목표 의 개념에 대해 알아본다.

More information

Microsoft PowerPoint - lec12 [호환 모드]

Microsoft PowerPoint - lec12 [호환 모드] 제네릭 제네릭클래스 제네릭인터페이스 제네릭메소드 형매개변수의제한 어노테이션 어노테이션형태시스템정의어노테이션사용자정의어노테이션 kkman@sangji.ac.kr 2 제네릭 (generic) 클래스나메소드에자료형을매개변수형식으로사용할수있는기능 자료형과무관하게알고리즘을기술 예전에작성한알고리즘을쉽게재사용가능 어노테이션 (annotation) 프로그램요소에다양한종류의속성정보를추가하기위해서사용

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

Microsoft PowerPoint - chap11

Microsoft PowerPoint - chap11 10 장객체 - 지향프로그래밍 II 상속 상속 (Inheritance) 상속이란무엇인가? 기존의클래스로부터새로운클래스를유도하는것 자식클래스는부모클래스의메쏘드와데이터를상속 자식클래스에새로운변수나메쏘드를추가할수있다. 기존클래스 부모클래스 (parent class), 수퍼클래스 (superclass), 기반클래스 (base class) 유도클래스 자식클래스 (child

More information

4장.문장

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

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

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

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

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

슬라이드 1

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

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 손시운 ssw5176@kangwon.ac.kr 인터페이스 인터페이스 (interafce) 는서로다른장치들이연결되어서상호데이터를주 고받는규격을의미한다 2 자바인터페이스 클래스와클래스사이의상호작용의규격을나타낸것이인터페이스이다 3 인터페이스의예 스마트홈시스템 (Smart Home System) 4 인터페이스의정의 public

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 실습 07. 상속

JAVA PROGRAMMING 실습 07. 상속 상속 부모클래스에정의된필드와메소드를자식클래스가물려받는것 슈퍼클래스 (superclass) 특성을물려주는상위클래스 서브클래스 (subclass) 특성을물려받는하위클래스 슈퍼클래스에자신만의특성 ( 필드, 메소드 ) 추가 슈퍼클래스의특성 ( 메소드 ) 을수정 = 오버라이딩구체화 class Phone 전화걸기전화받기 class MobilePhone 전화걸기전화받기무선기지국연결배터리충전하기

More information

Microsoft PowerPoint - java2 [호환 모드]

Microsoft PowerPoint - java2 [호환 모드] 10 장객체- 지향프로그래밍 II 창병모 1 상속 창병모 2 상속 (Inheritance) 상속이란무엇인가? 기존의클래스로부터새로운클래스를유도하는것 자식클래스는부모클래스의메쏘드와데이터를상속 자식클래스에새로운변수나메쏘드를추가할수있다. 기존클래스 부모클래스 (parent class), 수퍼클래스 (superclass), 기반클래스 (base class) 유도클래스

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

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

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

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

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 상속 배효철 th1g@nate.com 1 목차 상속개념 클래스상속 부모생성자호출 메소드재정의 final 클래스와 final 메소드 protected 접근제한자 타입변환과다형성 추상클래스 2 상속개념 상속 (Inheritance) 이란? 현실세계 : 부모가자식에게물려주는행위 부모가자식을선택해서물려줌 객체지향프로그램 : 자식 ( 하위, 파생 ) 클래스가부모 (

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

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

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 데이터타입과변수및조건문, 반복문 배효철 th1g@nate.com 1 목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 2 목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 3 자바프로그램구조 public class Hello2 { public static int sum(int n, int m) { return n + m; } 메소드 클래스

More information

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

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

More information

A Tour of Java V

A Tour of Java V A Tour of Java V Sungjoo Ha April 3rd, 2015 Sungjoo Ha 1 / 28 Review First principle 문제가생기면침착하게영어로구글에서찾아본다. 타입은가능한값의집합과연산의집합을정의한다. 기본형이아니라면이름표가메모리에달라붙는다. 클래스로사용자정의타입을만든다. 프로그래밍은복잡도관리가중요하다. OOP 는객체가서로메시지를주고받는방식으로프로그램을구성해서복잡도관리를꾀한다.

More information

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

JAVA PROGRAMMING 실습 02. 표준 입출력

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 클래스 ( 계속 ) 배효철 th1g@nate.com 1 목차 인스턴스멤버와 this 객체의소멸과가비지 정적멤버와 static final 필드와상수 패키지 접근제한자 Getter와 Setter 2 목차 인스턴스멤버와 this 객체의소멸과가비지 정적멤버와 static final 필드와상수 패키지 접근제한자 Getter와 Setter 3 인스턴스멤버와 this 인스턴스멤버란?

More information

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

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

TEST BANK & SOLUTION

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

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

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

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint 장강의노트.ppt 클래스와객체 클래스와객체 객체 : 우리주변의어떤대상의모델 - 예 : 사람, 차, TV, 개 객체 = 상태 (state) + 행동 (behavior) - 예 : 개의상태 - 종자, 이름, 색개의행동 - 짖다, 가져오다 상태는변수로행동은메소드로나타냄 객체는클래스에의해정의된다. 클래스는객체가생성되는틀혹은청사진이다. 2 예 : 클래스와객체 질문 : 클래스와객체의다른예는?

More information

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

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

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

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

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

쉽게 풀어쓴 C 프로그래밍

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

More information