2. 클래스와 객체

16
2. 클클클클 클클

Upload: morrison

Post on 03-Feb-2016

105 views

Category:

Documents


0 download

DESCRIPTION

2. 클래스와 객체. 객 체. ShoppingCart. Button. 아는 것 ( 속성 ) – 인스턴스 변수. cartContents. label color. addToCart () removeFromCart () checkOut (). setColor () setLabel () dePress () unDepress (). 할 수 있는 것 – 메소드. 클래스와 객체. 클래스 하나. Q-S. N-P. L-M. 주소록. Dog. Name polly Morfism - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 2.  클래스와 객체

2. 클래스와 객체

Page 2: 2.  클래스와 객체

Head First JAVA

객 체

2

ShoppingCart

cartContents

addToCart()

removeFromCart(

)

checkOut()

Button

label

color

setColor()

setLabel()

dePress()

unDepress()

아는 것 ( 속성 )

– 인스턴스 변수

할 수 있는 것 – 메소드

Page 3: 2.  클래스와 객체

Head First JAVA

클래스와 객체

3

Dog

size

breed

name

bark()

클래스 하나

객체 여러 개

주소록

Q-S

Name polly Morfism

Phone 555-0343

eMail pm@wickedlysmart

N-P

Name polly Morfism

Phone 555-0343

eMail pm@wickedlysmart

L-M

Name polly Morfism

Phone 555-0343

eMail pm@wickedlysmart

Page 4: 2.  클래스와 객체

Head First JAVA

객체 만들기 (1/3)

4

Dog

size

breed

name

bark()

class Dog {int size;String breed;String name;

void bark() {System.out.println ("Ruff!

Ruff!");}

}

1. 클래스를 만든다 .

인스턴스 변수

메소드

Page 5: 2.  클래스와 객체

Head First JAVA

객체 만들기 (2/3)

5

class DogTestDrive {

public static void main (String []

args) {

// 클래스를 테스트하기 위한 코드

}

}

2. 테스트용 클래스를 만든다 .

Main 메소드의 용도

- 클래스를 테스트하기 위한 용도

- 자바 애플리케이션을 시작하기 위한 용도

Page 6: 2.  클래스와 객체

Head First JAVA

객체 만들기 (3/3)

6

class DogTestDrive {

public static void main (String [] args) {

Dog d = new Dog();

d.size = 40;

d.bark();

}

}

3. 객체를 만들고 변수와 메소드에 접근

‘d’ 라는 Dog 객체 생성

‘d’ 의 크기 설정‘d’ 의 bark() 메소드

호출

Page 7: 2.  클래스와 객체

Head First JAVA

Movie 객체 (1/3)

7

class Movie {

String title;

String genre;

int rating;

void playIt() {

System.out.println(" 영화를 상영합니다 .");

}

}

Movie

title

genre

rating

playIt()

Page 8: 2.  클래스와 객체

Head First JAVA

Movie 객체 (2/3)

8

public class MovieTestDrive { public static void main (String [] args) { Movie one = new Movie();

one.title = " 주식과 함께 사라지다 ";one.genre = " 비극 ";one.rating = -2;Movie two = new Movie();two.title = " 로스트 인 큐비클 스페이스 ";two.genre = " 코미디 ";two.rating = 5;Movie three = new Movie();three.title = " 바이트 클럽 ";three.genre = " 기분이 좋아지는 비극 ";three.rating = 127;

}}

Page 9: 2.  클래스와 객체

Head First JAVA

Movie 객체 (3/3)

9

Title : 주식과 함께 사라지다Genre : 비극Rating : -2

Title : 로스트 인 큐비클 스페이스Genre : 코미디Rating : 5

Title : 바이트 클럽Genre : 기분이 좋아지는 비극Rating : 127

1 번 객체

2 번 객체

3 번 객체

Page 10: 2.  클래스와 객체

Head First JAVA

숫자 맞추기 게임 (1/5)

10

게임 객체 한 개와 선수 객체 세 개로 구성 . 게임 객체에서는 0 ~ 9 의 난수를 발생시키고 선수 객체 세 개는 적당한 숫자를 찍어서 그 숫자를 맞춰야 함 – GuessGame, Player, GameLauncher

1) 게임은 GameLauncher 클래스에서 시작

2) main() 메소드에서는 GuessGame 객체를 만들고 startGame() 메소드를 호출

3) 실제 게임은 모두 GuessGame 객체의 startGame() 메소드에서 진행 . 이 메소드에서는 선수 객체 세 개를 만들고 난수 하나를 생각 . 그리고 각 선수에게 숫자를 물어보고 그 결과를 확인한 다음 승자에 대한 정보를 출력하거나 다시 맞춰보라는 메시지 출력

Page 11: 2.  클래스와 객체

Head First JAVA

숫자 맞추기 게임 (2/5)

11

public class GuessGame {Player p1;Player p2;Player p3;

public void startGame() {p1 = new Player();p2 = new Player();p3 = new Player();

int guessp1 = 0;int guessp2 = 0;int guessp3 = 0;

boolean p1isRight = false;boolean p2isRight = false;boolean p3isRight = false;

int targetNumber = (int) (Math.random() * 10);System.out.println("0 이상 9 이하의 숫자를 맞춰보세요 .");

GuessGame

Player 객체 세 개를 저장하기 위한 인스턴트 변수 세 개

Player 객체 세 개 생성

찍은 숫자를 저장하기 위한 변수 세 개 생성

찍은 숫자가 맞는지 여부를 저장하기 위한 변수 세 개를 선언

선수들이 맞출 숫자 생성

Page 12: 2.  클래스와 객체

Head First JAVA

숫자 맞추기 게임 (3/5)

12

while(true) {System.out.println(" 맞춰야 할 숫자는 " + targetNumber + "

입니다 .");

p1.guess();p2.guess();p3.guess();

guessp1 = p1.number;System.out.println ("1 번 선수가 찍은 숫자 : " +

guessp1);

guessp2 = p2.number;System.out.println ("2 번 선수가 찍은 숫자 : " +

guessp2);

guessp3 = p3.number;System.out.println ("3 번 선수가 찍은 숫자 : " +

guessp3);

if (guessp1 == targetNumber) {p1isRight = true;

}

GuessGame

Player 별로 guess() 메소드 호출

객체의 인스턴스

변수에 접근하여

Player 가 찍은

숫자를 알아냄

Page 13: 2.  클래스와 객체

Head First JAVA

숫자 맞추기 게임 (4/5)

13

if (guessp2 == targetNumber) {p2isRight = true;

}if (guessp3 == targetNumber) {

p3isRight = true;}if (p1isRight || p2isRight || p3isRight) {

System.out.println(" 맞춘 선수가 있습니다 .");System.out.println("1 번 선수 : " +

p1isRight);System.out.println("2 번 선수 : " +

p2isRight);System.out.println("3 번 선수 : " +

p3isRight);System.out.println(" 게임 끝 ");break;

}else {

System.out.println(" 다시 시도해야 합니다 .");}

}}

}

GuessGame각 Player 가 찍은 숫자 중에서 맞춘 숫자가 있는지를

확인

한 Payer 라도

맞춘 자가 있으면

출력 후 게임 끝

그렇지 않으면 다시 순환문을 돌림

Page 14: 2.  클래스와 객체

Head First JAVA

숫자 맞추기 게임 (5/5)

14

public class Player {int number = 0;

public void guess() {number = (int) (Math.random() * 10);System.out.println(" 찍은 숫자 : " + number);

}}

Player

public class GameLauncher {public static void main (String[] args) {

GuessGame game = new GuessGame();game.startGame();

}}

GameLauncher

게임 실행

숫자 찍음

Page 15: 2.  클래스와 객체

Head First JAVA

핵심정리 (1/2)

15

객체지향적인 프로그래밍을 하면 제작과 테스트 과정이 끝난

코드를 건드리지 않고도 프로그램을 확장할 수 있다 .

모든 자바 코드는 클래스 내에서 정의된다 .

클래스는 해당 클래스 유형의 객체를 만드는 방법을 설명하는

역할을 한다 .

객체는 각자 알아서 자기 할 일을 처리할 수 있다 .

객체에는 알고 있는 것을 나타내는 인스턴스 변수와 할 수 있는

것을 나타내는 메소드가 있다 .

Page 16: 2.  클래스와 객체

Head First JAVA

핵심정리 (2/2)

16

클래스를 새로 만들 때는 그 클래스 유형의 객체를 만들어서

테스트하는 테스트용 클래스를 따로 만들어 보는 것이 좋다 .

클래스에는 덜 구체적인 상위클래스 (superclass) 로부터

하위클래스 (subclass) 로 인스턴스 변수와 메소드를 상속

(inheritance) 할 수 있다 .

프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와

대화를 하는 것에 불과하다 .