PowerPoint Presentation

Similar documents
PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Design Issues

PowerPoint Presentation

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

PowerPoint Presentation

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

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

Microsoft PowerPoint - 2강

JAVA PROGRAMMING 실습 05. 객체의 활용

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

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 장강의노트.ppt

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

Microsoft PowerPoint - Java7.pptx

제11장 프로세스와 쓰레드

Microsoft PowerPoint - C++ 5 .pptx

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

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - Lect04.pptx

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

자바 프로그래밍

PowerPoint 프레젠테이션

슬라이드 1

Microsoft Word - java19-1-midterm-answer.doc

Microsoft PowerPoint - Chapter 6.ppt

PowerPoint Presentation

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

설계란 무엇인가?

JAVA PROGRAMMING 실습 09. 예외처리

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

No Slide Title

PowerPoint 프레젠테이션

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

PowerPoint 프레젠테이션

PowerPoint Presentation

슬라이드 1

JAVA PROGRAMMING 실습 07. 상속

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

JVM 메모리구조

PowerPoint Presentation

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

05-class.key

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

예제 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 - java1 [호환 모드]

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

PowerPoint Presentation

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

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

PowerPoint 프레젠테이션


설계란 무엇인가?

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

Cluster management software

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Java ...

슬라이드 1

4장.문장

C++ Programming

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint 프레젠테이션

PowerPoint Presentation

17장 클래스와 메소드

PowerPoint Template

No Slide Title

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

Slide 1

C++ Programming

KNK_C_05_Pointers_Arrays_structures_summary_v02

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

02장.배열과 클래스

쉽게 풀어쓴 C 프로그래밍

TEST BANK & SOLUTION

PowerPoint Presentation

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

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

Chapter 6 Objects and Classes

Transcription:

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 value) section 5 메소드오버로딩 (Overloading) section 6 메소드에값전달 (Argument passing) 방법 2

클래스의일반구조 클래스의구성 멤버변수 : 속성 생성자 : 클래스가객체화될때수행되는메소드 메소드 : 기능 3

생성자 (Constructor) 생성자 클래스로부터객체가생성될때객체의초기화과정을기술하는특수한메소드 객체가생성될때무조건수행 객체가생성될때한번만수행 return 값지정하지않음 형식 [public/private] 클래스이름 ( 매개변수 ){... 초기화문장들... 4

생성자 (Constructor) 생성자 class Box { private int width; private int height; private int depth; private int vol; public Box(int w, int h, int d) { width = w; height = h; depth = d; class BoxTest {... Box mybox1 = new Box(10,20,30); Box mybox2 = new Box();... 오류발생, 적합한생성자가없다. 5

생성자 (Constructor) 실습예제 Box5Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 class Box5 { int width; int height; int depth; public Box5(int w, int h, int d) { width = w; height = h; depth = d; public class Box5Test { public static void main(string args[]) { Box5 mybox1 = new Box5(10,20,30); int vol = mybox1.width * mybox1.height * mybox1.depth; System.out.println(" 박스의부피 : " + vol); 생성자로서초기화과정수행 3 개의매개변수로객체생성 6

생성자 (Constructor) 7

생성자오버로딩 (Overloading) 같은이름의생성자를여러개중첩 (overloading) 하여사용 class Box5 { int width; int height; int depth; public Box5() { width = 1; height = 1; depth = 1; public Box5(int w) { width = w; height = 1; depth = 1; public Box5(int w, int h) { width = w; height = h; depth = 1; 8

생성자오버로딩 (Overloading) public Box5(int w, int h, int d) { width = w; height = h; depth = d; public class Box5Test {... Box5 mybox1 = new Box5(); Box5 mybox2 = new Box5(10); Box5 mybox3 = new Box5(10,20); Box5 mybox4 = new Box5(10,20,30);... 매개변수의개수와형식에따라적합한생성자수행 9

생성자오버로딩 (Overloading) 실습예제 Box6Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 class Box6 { int width; int height; int depth; double dwidth; double dheight; double ddepth; public Box6(int w, int h, int d) { width = w; height = h; depth = d; public Box6(double w, double h, double d) { dwidth = w; dheight = h; ddepth = d; 두개의생성자를오버로딩 두개의생성자를오버로딩 10

생성자오버로딩 (Overloading) 실습예제 Box6Test.java 21 22 23 24 25 26 27 28 29 30 31 32 33 34 public class Box6Test { public static void main(string args[]) { Box6 mybox1 = new Box6(10,20,30); Box6 mybox2 = new Box6(10.5,20.5,30.5); Box6 mybox3 = new Box6(10.5,20.5,30); int vol1 = mybox1.width * mybox1.height * mybox1.depth; 생성자의매개변수에적합한생성자수행 double vol2 = mybox2.dwidth * mybox2.dheight * mybox2.ddepth; double vol3 = mybox3.dwidth * mybox3.dheight * mybox3.ddepth; System.out.println (" 정수박스의부피 : " + vol1); System.out.println (" 실수박스의부피 : " + vol2); System.out.println (" 정수와실수가섞여있는박스의부피 : " + vol3); 11

생성자오버로딩 (Overloading) 12

예약어 this this 자바의예약어 (reserved word) 현재의객체를의미 class Box { int width; int height; int depth; public Box(int width, int height, int depth) { width=width; height=height; depth=depth; 13

예약어 this this class Box { int width; int height; int depth; public Box(int width, int height, int depth) { this.width=width; this.height=height; this.depth=depth; 이객체변수를의미 14

예약어 this class Box5 { int width; int height; int depth; public Box5() { this(1,1,1); public Box5(int w) { this(w,1,1); public Box5(int w, int h) { this(w,h,1); public Box5(int w, int h, int d) { width = w; height = h; depth = d; 같은클래스내의다른생성자호출 public class Box5Test {... Box5 mybox1 = new Box5(); Box5 mybox2 = new Box5(10); Box5 mybox3 = new Box5(10,20); Box5 mybox4 = new Box5(10,20,30);... 15

메소드 메소드 객체가할수있는행동을정의 형식 [ 접근한정자 ] [static/final/abstract/synchronized] 반환값타입메소드이름 ([ 매개변수들 ]) {... 지역변수선언및메소드행위기술... static : 클래스메소드 final : 종단메소드 abstract : 추상메소드 synchronized : 스레드의동기화를위한메소드 16

접근한정자 메소드선언시사용되는접근한정자 멤버변수접근한정자와같이 public, private 가사용 public class Test1 { public int a; int b; private int c; public void method1() { void method2() { private void method3() { public 멤버변수선언접근한정자를지정하지않고선언 private 멤버변수선언 public 메소드선언접근한정자를지정하지않음 private 메소드선언 17

접근한정자 같은패키지에속해있는클래스에서사용하는예 public class SamePackage { Test1 t1 = new Test1(); t1.a = 3; t1.b = 5; t1.c = 7; t1.method1(); t1.method2(); t1.method3(); 접근가능접근가능접근불가능접근가능접근가능접근불가능 public class Test1 { public int a; int b; private int c; public void method1() { void method2() { private void method3() { 18

접근한정자 다른패키지에속해있는클래스에서사용하는예 public class OtherPackage { Test1 t2 = new Test1(); t2.a = 3; t2.b = 5; t2.c = 7; t2.method1(); t2.method2(); t2.method3(); 접근가능접근불가능접근불가능접근가능접근불가능접근불가능 public class Test1 { public int a; int b; private int c; public void method1() { void method2() { private void method3() { 19

접근한정자 실습예제 Box8Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 class Box8 { private int width; private int height; private int depth; private int vol; public Box8(int w, int h, int d) { width = w; height = h; depth = d; volume(); private void volume() { vol = width * height * depth; private 접근한정자로객체변수선언 부피를구하는메소드를 private 로선언 20

접근한정자 실습예제 Box8Test.java 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public int getvolume() { return vol; public class Box8Test { public static void main(string args[]) { Box8 mybox1 = new Box8(10,20,30); // mybox1.width = 20; // mybox1.volume(); System.out.println 부피의값을읽어오는메소드만 public 으로선언 (" 정수박스의부피 : " + mybox1.getvolume()); private 로선언된변수에접근하면오류발생 private 로선언된메소드에접근하면오류발생 21

접근한정자 22

클래스메소드 클래스메소드 클래스변수와비슷한특징을가짐 class Box { int width; int height; int depth; long idnum; static long boxid = 100; static long getcurrentid() { depth++; return boxid++; 클래스메소드는클래스변수만사용. depth 는객체변수이므로오류발생 23

클래스메소드 실습예제 Box9Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 class Box9 { private int width; private int height; private int depth; public long idnum; static long boxid = 100; static long getcurrentid() { int count = 1; boxid = boxid + count; return boxid; public class Box9Test { public static void main(string args[]) { Box9 mybox1 = new Box9(); 클래스변수선언 클래스메소드선언 ( 지역변수사용가능 ) 24

클래스메소드 실습예제 Box9Test.java 17 18 19 20 21 22 23 24 25 26 27 28 mybox1.idnum = Box9.getCurrentID(); Box9 mybox2 = new Box9(); mybox2.idnum = Box9.getCurrentID(); System.out.println ("mybox1의 id 번호 : "+ mybox1.idnum); System.out.println ("mybox2의 id 번호 : "+ mybox2.idnum); System.out.println (" 다음박스의번호는 "+ Box9.getCurrentID() + " 번입니다 "); 클래스메소드호출 ( 클래스이름사용 ) 클래스메소드호출 ( 클래스이름사용 ) 클래스메소드호출 ( 클래스이름사용 ) 25

클래스메소드 26

final, abstract, synchronized 메소드 final 로선언된메소드 서브클래스에서오버라이딩 (overriding) 될수없음 abstract 로선언된메소드 추상메소드로써추상클래스내에서선언 추상메소드는선언부분만가지고몸체부분은가질수없음 몸체부분은서브클래스에서오버라이딩해야함 synchronized 메소드 스레드를동기화할수있는기법을제공하기위해사용 28

메소드반환값 (return value) 메소드선언부에는그메소드반환값의자료형이지정되어야함 반드시지정된형과같은값을 return 문을사용하여반환 반환값이없을경우에는 void 로지정 29

메소드반환값 (return value) public int sum(int a, int b) { int c; c = a + b; return c; // 정수값을반환 public Box volume_compute(box instance_box) {... Box v_box = new Box(); v_box.width = instance_box.width; v_box.height = instance_box.height; v_box.depth = instance_box.depth; v_box.volume= v_box.width * v_box.height * v_box.depth; return v_box; // Box 객체를반환 30

메소드오버로딩 (Overloading) 메소드오버로딩 객체지향언어의특징중에하나인다형성 (polymorphism) 을제공 하나의메소드이름으로다양한연산을수행할수있는방법을제공 중첩된메소드가호출되면매개변수의형과개수를비교하여적합한메소드가실행 31

메소드오버로딩 (Overloading) 실습예제 Box10Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 class Box10 { private int i_volume; private double d_volume; public Box10(int w, int h, int d) { volume(w, h, d); public Box10(double w, double h, double d) { volume(w, h, d); private void volume(int w, int h, int d) { i_volume = w * h * d; private void volume(double w, double h, double d) { d_volume = w * h * d; 데이터형에적합한메소드실행 데이터형에적합한메소드실행 같은이름의메소드오버로딩선언 32

메소드오버로딩 (Overloading) Box10Test.java 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 public int get_i_volume() { return i_volume; public double get_d_volume() { return d_volume; public class Box10Test { public static void main(string args[]) { Box10 mybox1 = new Box10(10,20,30); Box10 mybox2 = new Box10(10.5,20.5,30.5); Box10 mybox3 = new Box10(10.5,20.5,30); System.out.println (" 정수박스의부피 : " + mybox1.get_i_volume()); System.out.println (" 실수박스의부피 : " + mybox2.get_d_volume()); System.out.println (" 정수와실수가섞여있는박스의부피 : " + mybox3.get_d_volume()); 33

메소드오버로딩 (Overloading) 34

메소드오버로딩 (Overloading) 실습예제 OverloadTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 class Overload{ void calc(){ System.out.println(" 매개변수가없습니다."); void calc(int width){ System.out.println(" 정사각형의넓이 : " + width * width); void calc(int width, int height){ System.out.println(" 직사각형의넓이 : " + width * height); void calc(int width, int height, int depth){ System.out.println(" 직육면체의부피 : " + width * height * depth); public class OverloadTest { 메소드를오버로딩으로선언 메소드를오버로딩으로선언 메소드를오버로딩으로선언 메소드를오버로딩으로선언 35

메소드오버로딩 (Overloading) OverloadTest.java 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 public static void main(string args[]){ Overload ol = new Overload(); int input[] = new int[args.length]; for(int i=0; i<args.length; i++) input[i] = Integer.parseInt(args[i]); switch (args.length){ case 0: ol.calc(); break; case 1: ol.calc(input[0]); break; case 2: ol.calc(input[0], input[1]); break; case 3: ol.calc(input[0], input[1], input[2]); break; default: System.out.println(" 인수의개수가많습니다."); 오버로딩메소드호출 오버로딩메소드호출 오버로딩메소드호출 오버로딩메소드호출 36

메소드오버로딩 (Overloading) 37

메소드에값전달 (Argument passing) 방법 실매개변수와형식매개변수로기본자료형이사용되는경우 39

메소드에값전달 (Argument passing) 방법 매개변수와형식매개변수로참조자료형이사용되는경우 40

메소드에값전달 (Argument passing) 방법 실습예제 ArgumentTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 class Argument { public void change(int i, int j[], StringBuffer sb) { i = 20; j[3] = 400; sb.append(" 화이팅자바."); public void display(int i, int j[], StringBuffer sb) { System.out.println(" 객체변수 i 의값 : " + i); System.out.print(" 배열의값 : "); for(int index = 0; index < j.length; index++) System.out.print(j[index] + " "); System.out.println(""); 기본자료형의값을변환 System.out.println(" 문자열 sb 의값 : " + sb); 배열 ( 참조자료형 ) 의요소를변환 문자열 ( 참조자료형 ) 뒤에문자열을첨가 매개변수로받은데이터를출력하는메소드 41

메소드에값전달 (Argument passing) 방법 실습예제 ArgumentTest1.java 16 17 18 19 20 21 22 23 24 25 26 27 28 29 class ArgumentTest1 { public static void main(string args[]) { Argument d = new Argument(); int a = 10; int b[] = { 1, 2, 3, 4 ; StringBuffer c = new StringBuffer(" 배우기쉽죠?"); System.out.println(" 첫번째 display() 메소드호출 "); d.display(a, b, c); d.change(a, b, c); System.out.println("============================="); System.out.println(" 값을변환한다음두번째 display() 호출 "); d.display(a, b, c); 3 개의매개변수로 display() 호출 3 개의매개변수로 change() 호출 42

메소드에값전달 (Argument passing) 방법 43

메소드에값전달 (Argument passing) 방법 실습예제 ArgumentTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 class Test { public void change(int i, int arr[]) { i = 20; arr[0]=20; class ex1 { public static void main(string args[]) { Test d = new Test(); int a = 10; int b[] = { 1, 2, 3 ; d.change(a, b); System.out.println("a = "+ a); System.out.println("b = "+ b[0]); 44

학습정리 생성자 생성자는클래스로부터객체가생성될때초기화과정을수행하는메소드 생성자의이름은클래스이름과동일해야함 생성자오버로딩 하나의클래스에같은이름의생성자를중첩하여선언하는것 오버로딩되는생성자는매개변수의개수나타입이반드시달라야함 생성자오버로딩은객체지향의다형성을구현 45

학습정리 예약어 this this 예약어는현재의객체를의미 this 예약어는클래스내에서다른생성자를호출할때도사용 메소드와오버로딩 메소드는클래스의핵심인기능을나타내는부분 메소드의접근한정자는객체변수의접근한정자의의미 클래스메소드는클래스이름을통해접근가능 - 클래스메소드내에서는클래스변수만을사용 메소드역시생성자와같이중첩사용될수있으며, 중첩된메소드는매개변수의개수와타입이반드시달라야함 46

학습정리 메소드에값전달기법 자바는메소드호출시매개변수에값을전하기위해값 - 전달 (call by value) 방법을사용 값 - 전달기법은실매개변수의값을형식매개변수에복사하는기법 매개변수의형이기본자료형일경우에는실제값이복사되어전달 참조자료형인경우에는주소가복사되어전달 (call by reference) 47