PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

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

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

PowerPoint Presentation

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

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - 2강

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

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

Microsoft PowerPoint - Chap12-OOP.ppt

Design Issues

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint 장강의노트.ppt

PowerPoint 프레젠테이션

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

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

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

설계란 무엇인가?

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

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

PowerPoint Presentation

JVM 메모리구조

PowerPoint 프레젠테이션

슬라이드 1

C++ Programming

Microsoft PowerPoint - Chapter 6.ppt

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

No Slide Title

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - java1 [호환 모드]

No Slide Title

PowerPoint Presentation

C++ Programming

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft Word - EEL2 Lab4.docx

PowerPoint Presentation

PowerPoint Presentation

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

Chapter 01. HTML

17장 클래스와 메소드

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

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

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

슬라이드 1

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 07. 상속

슬라이드 1

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

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

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

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

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

Slide 1

PowerPoint Template

PowerPoint Presentation

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint Presentation

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

슬라이드 1

교육자료

유니티 변수-함수.key

슬라이드 1

Slide 1

쉽게 풀어쓴 C 프로그래밊

Network Programming

JAVA PROGRAMMING 실습 09. 예외처리

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

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

Microsoft PowerPoint - java1-lecture4.ppt [호환 모드]

설계란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint - 04-UDP Programming.ppt

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

11장 포인터

제11장 프로세스와 쓰레드

쉽게 풀어쓴 C 프로그래밍

자바 프로그래밍

슬라이드 1

KNK_C_05_Pointers_Arrays_structures_summary_v02

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint Presentation

Microsoft PowerPoint - chap06-2pointer.ppt

Blog

Microsoft PowerPoint - chap10-함수의활용.pptx

Transcription:

클래스 배효철 th1g@nate.com 1

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 2

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 3

객체지향프로그래밍 객체지향프로그래밍이란? OOP ( Object Oriented Programming ) 부품객체를먼저만들고이것들을하나씩조립해완성된프로그램을만드는기법 객체 (Object) 란? 물리적으로존재하는것 ( 자동차, 책, 사람 ) 추상적인것 ( 회사, 날짜 ) 중에서자신의속성과동작을가지는모든것 객체는필드 ( 속성 ) 과메소드 ( 동작 ) 로구성된자바객체로모델링가능 4

객체지향프로그래밍 객체의상호작용 객체들은서로간에기능 ( 동작 ) 을이용하고데이터를주고받음 5

객체지향프로그래밍 객체간의관계 객체지향프로그램에서는객체는다른객체와관계를맺음 관계의종류 집합관계 : 완성품과부품의관계 사용관계 : 객체가다른객체를사용하는관계 상속관계 : 종류객체와구체적인사물객체관계 6

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 7

객체지향프로그래밍의특징 캡술화 함수 ( 메소드 ) 와데이터 ( 필드 ) 를클래스내에선언하고구현 캡슐화된함수및데이터는멤버라고부름 외부에서는공개된메소드의인터페이스만접근가능 외부에서는비공개데이터에직접접근하거나메소드의구현을알수없음 객체내데이터에대한보안, 보호, 외부접근제한 외부의잘못된사용으로인해객체가손상되지않도록 접근제한자 (Access Modifier) 사용하여캡슐화된멤버의노출을선택 8

객체지향프로그래밍의특징 상속 유전적상속관계표현 나무는식물의속성과생물의속성을모두가짐 사람은생물의속성은가지지만식물의속성은가지고있지않음 9

객체지향프로그래밍의특징 상속 객체지향언어에서의상속 상위 ( 부모 ) 객체의필드와메소드를하위 ( 자식 ) 객체에게물려주는행위 하위객체는상위객체를확장해서추가적인필드와메소드를가질수있음 상속대상 : 필드와메소드 상속의효과 상위객체를재사용해서하위객체를빨리개발가능 반복된코드의중복을줄임 유지보수의편리성제공 객체의다형성구현 10

객체지향프로그래밍의특징 상속 11

객체지향프로그래밍의특징 다형성 같은타입이지만실행결과가다양한객체를대입할수있는성질 부모타입에는모든자식객체가대입 효과 객체를부품화시키는것가능 유지보수용이 12

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 13

객체와클래스 객체 (Object) 와클래스 (Class) 현실세계 : 설계도 객체 자바 : 클래스 객체 클래스에는객체를생성하기위한필드와메소드가정의 클래스로부터만들어진객체를해당클래스의인스턴스 (instance) 하나의클래스로부터여러개의인스턴스를만들수있음 14

객체와클래스 붕어빵틀 : 클래스 붕어빵 : 객체 15

객체와클래스 클래스 : 사람 멤버데이터 : 직업, 나이, 성별, 혈액형 멤버메소드 : 밥먹기, 잠자기, 말하기, 걷기 이름 최승희 직업 의사 나이 45 성별 여 혈액형 A 이름 이미녀 직업 골프선수 나이 28 성별 여 혈액형 O 이름 김미남 직업 교수 나이 47 성별 남 혈액형 AB 객체 : 최승희 객체 : 이미녀 객체 : 김미남 16

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 17

클래스 클래스의용도 라이브러리 (API: Application Program Interface) 용 자체적으로실행되지않음 다른클래스에서이용할목적으로만든클래스 실행용 main() 메소드를가지고있는클래스로실행할목적으로만든클래스 18

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 19

클래스의구성 20

클래스의구성 클래스의이름 자바식별자작성규칙에따라야함 첫글자와연결된다른단어의첫글자는대문자로작성하는것이관례 Ex> Calculator, Car, Member, ChatClient, ChatServer, Web_Browser 접근제한자 다른클래스들에대한해당클래스, 필드및메소드의접근여부를선언 필드 (field) 값을저장할멤버변수 생성자 (constructor) 클래스의이름과동일한메소드 클래스의객체가생성될때만호출되는메소드 메소드 (method) 21 메소드는함수이며객체의행위를구현

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 22

클래스선언및객체생성 클래스선언과컴파일 소스파일생성 : 클래스이름.java ( 대소문자주의 ) 소스작성 컴파일 javac.exe 클래스이름.class 소스파일당하나의클래스를선언하는것이관례 두개이상의클래스도선언가능 소스파일이름과동일한클래스만 public으로선언가능 선언한개수만큼바이트코드파일이생성 Car.java public class Car { class Tire { 컴파일 javac.exe Car.class Tire.class 23

클래스선언및객체생성 객체생성 new 연산자를이용하여객체생성 생성된객체는힙메모리영역에생성 new 연산자는객체를생성후객체생성번지리턴 객체생성과정 Person aperson; aperson = new Person(" 김미남 "); // 1. 레퍼런스변수 aperson 선언 // 2. Person 객체생성및생성자호출 생성자호출 24

class Vehicle { 클래스 private int speed = 0; private int maxspeed = 100; public int showspeed() { return speed; public int showmaxspeed() { return maxspeed; public void speedup(int increment) { if(speed + increment > maxspeed){ System.out.println(" 최대속도 " + maxspeed + "km/h 를넘어설수없습니다."); else{ speed += increment; public void speeddown(int decrement) { if(speed - decrement < 0){ System.out.println(" 속도는 0 아래로떨어질수없습니다."); else{ speed -= decrement; 25

클래스 class VehicleMain { public static void main(string[] args) { Vehicle bike = new Vehicle(); bike.speedup(10); System.out.println(" 현재오토바이의속도 : " + bike.showspeed() + "km/h"); bike.speedup(50); System.out.println(" 현재오토바이의속도 : " + bike.showspeed() + "km/h"); bike.speedup(60); System.out.println(" 현재오토바이의속도 : " + bike.showspeed() + "km/h"); bike.speeddown(40); System.out.println(" 현재오토바이의속도 : " + bike.showspeed() + "km/h"); 26

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 27

필드 필드 (field) 란? 객체의고유데이터 객체가가져야할부품객체 객체의현재상태데이터 28

필드 필드선언 초기값지정가능 초기값지정되지않은경우자동으로초기화 29

필드 필드사용 필드값을읽고, 변경하는작업 필드사용위치 객체내부 : 필드이름 으로바로접근 객체외부 : 변수. 필드이름 으로접근 30

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 31

생성자 생성자란? new 연산자에의해호출되어객체의초기화담당 필드의값설정 메소드호출해객체를사용할수있도록준비하는역할수행 기본생성자 (Default Constructor) 모든클래스는생성자가반드시존재하며하나이상가질수있음 생성자선언을생략하면컴파일러는다음과같은기본생성자추가 32

생성자 생성자선언 디폴트생성자대신개발자가직접선언 개발자선언한생성자존재시컴파일러는기본생성자추가하지않음 new 연산자로객체생성시개발자가선언한생성자반드시사용 33

생성자 필드초기화 초기값없이선언된필드는객체가생성될때기본값으로자동설정 다른값으로필드초기화하는방법 필드선언할때초기값설정 생성자의매개값으로초기값설정 매개변수와필드명이같은경우 this 사용 this 란? 현재실행되는메소드가속한객체에대한레퍼런스 class Samp { int id; public Samp(int id) { this.id = id; public Samp me() { return this; 34

생성자 생성자다양화해야하는이유 객체생성할때외부값으로객체를초기화할필요 외부값이어떤타입으로몇개가제공될지모름 - 생성자도다양화 생성자오버로딩 (Overloading) 매개변수의타입, 개수, 순서가다른생성자여러개선언 35

생성자 다른생성자호출 생성자간의중복된코드최소화 this() 로호출 생성자의가장첫줄에서사용 Car (String model) { this(model, " 흰색 ", 250) ; Car (String model, String color) { this(model, color, 250) ; Car (String model, String color, int maxspeed) { this.model = model ; this.color = color ; this.maxspeed = maxspeed ; 36

생성자 class Book { String title, writer; Book(String title, String writer) { this.title =title; this.writer = writer; Book(Book copy) { title =copy.title; writer = copy.writer; void print() { System.out.println("title : " + title); System.out.println("writer : " + writer); class Books { public static void main(string[] args) { Book book1 = new Book("book1", "KIM"); book1.print(); Book book2 = new Book(book1); book2.title = "Java book"; book2.print(); book1.print(); book2.print(); 37

목차 객체지향프로그래밍 객체지향프로그래밍의특징 객체와클래스 클래스 클래스의구성 클래스의선언및객체생성 필드 생성자 메소드 38

메소드 메소드 (method) 란? 객체의동작 ( 기능 ) 호출해서실행할수있는중괄호 { 블록 메소드호출하면중괄호 { 블록에있는모든코드들이일괄실행 메소드구성형식 39

메소드 메소드리턴타입 메소드실행된후리턴하는값의타입 메소드는리턴값이있을수도있고없을수도있음 [ 메소드선언 ] [ 메소드호출 ] 메소드이름 자바식별자규칙에맞게작성 40

메소드 메소드매개변수선언 매개변수는메소드를실행할때필요한데이터를외부에서받기위해사용 매개변수도필요없을수있음 [ 메소드선언 ] [ 메소드호출 ] 41

메소드 리턴 (return) 문 메소드실행을중지하고, 리턴값을지정하는역할 리턴값이있는메소드 반드시리턴 (return) 문을사용하여, 리턴값을지정해야함 return 문뒤에는실행문이올수없음 리턴값이없는메소드 메소드실행을강제종료시키는역할 42

메소드 메소드호출 메소드는클래스내 외부의호출에의해실행 클래스내부 : 메소드이름으로호출 클래스외부 : 객체생성후, 참조변수를이용해호출 43

메소드 class AddMethod { public static void main(string[] args) { add(500, 4000); add(600, 700); System.out.println( add2(800, 700)); public static void add(int a, int b) { System.out.println(a + b); public static int add2(int a, int b) { return a+b; 44

메소드 매개변수의전달 값에의한호출 (call by value) 기본타입의값을전달하는경우 값이복사되어전달 메소드의매개변수가변경되어도호출한실인자값은변경되지않음 객체혹은배열을전달하는경우 객체나배열의레퍼런스만전달 객체혹은배열이통째로복사되어전달되는것이아님 메소드의매개변수와호출한실인자가객체나배열을공유하게됨 45

메소드 기본타입의값이전달되는경우 46

메소드 레퍼런스타입의값이전달되는경우 47

메소드 class Updator { public void update(int count) { count++; public class Counter { int count = 0; public static void main(string[] args) { Counter mycounter = new Counter(); System.out.println("before update:"+mycounter.count); Updator myupdator = new Updator(); myupdator.update(mycounter.count); System.out.println("after update:"+mycounter.count); 48

메소드 class StringArray { public static int[] addnumarray(int[] ar) { for(int i=0; i<ar.length; i++) ar[i] += 10; return ar; public static void main(string[] args) { int[] numarr1 = {10, 20, 30, 40, 50; int[] numarr2; numarr2=addnumarray(numarr1); for(int i=0; i<numarr2.length; i++) System.out.println("numArr2[" + i + "]: " + numarr2[i]); 49

메소드 메소드오버로딩 (Overloading) 클래스내에같은이름의메소드를여러개선언하는것 하나의메소드이름으로다양한매개값받기위해메소드오버로딩 오버로딩의조건 : 매개변수의타입, 개수, 순서가달라야? 50

메소드 public class examoverloading { public static void main(string[] args) { prtmsg(); prtmsg("hi~"); prtmsg(5); public static void prtmsg(){ System.out.println("Hello World!!"); public static void prtmsg(string msg){ System.out.println(msg); public static void prtmsg(int testnum){ System.out.println(testNum); 51