2. 클클클클 클클
Feb 03, 2016
2. 클래스와 객체
Head First JAVA
객 체
2
ShoppingCart
cartContents
addToCart()
removeFromCart(
)
checkOut()
Button
label
color
setColor()
setLabel()
dePress()
unDepress()
아는 것 ( 속성 )
– 인스턴스 변수
할 수 있는 것 – 메소드
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
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. 클래스를 만든다 .
인스턴스 변수
메소드
Head First JAVA
객체 만들기 (2/3)
5
class DogTestDrive {
public static void main (String []
args) {
// 클래스를 테스트하기 위한 코드
}
}
2. 테스트용 클래스를 만든다 .
Main 메소드의 용도
- 클래스를 테스트하기 위한 용도
- 자바 애플리케이션을 시작하기 위한 용도
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() 메소드
호출
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()
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;
}}
Head First JAVA
Movie 객체 (3/3)
9
Title : 주식과 함께 사라지다Genre : 비극Rating : -2
Title : 로스트 인 큐비클 스페이스Genre : 코미디Rating : 5
Title : 바이트 클럽Genre : 기분이 좋아지는 비극Rating : 127
1 번 객체
2 번 객체
3 번 객체
Head First JAVA
숫자 맞추기 게임 (1/5)
10
게임 객체 한 개와 선수 객체 세 개로 구성 . 게임 객체에서는 0 ~ 9 의 난수를 발생시키고 선수 객체 세 개는 적당한 숫자를 찍어서 그 숫자를 맞춰야 함 – GuessGame, Player, GameLauncher
1) 게임은 GameLauncher 클래스에서 시작
2) main() 메소드에서는 GuessGame 객체를 만들고 startGame() 메소드를 호출
3) 실제 게임은 모두 GuessGame 객체의 startGame() 메소드에서 진행 . 이 메소드에서는 선수 객체 세 개를 만들고 난수 하나를 생각 . 그리고 각 선수에게 숫자를 물어보고 그 결과를 확인한 다음 승자에 대한 정보를 출력하거나 다시 맞춰보라는 메시지 출력
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 객체 세 개 생성
찍은 숫자를 저장하기 위한 변수 세 개 생성
찍은 숫자가 맞는지 여부를 저장하기 위한 변수 세 개를 선언
선수들이 맞출 숫자 생성
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 가 찍은
숫자를 알아냄
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 라도
맞춘 자가 있으면
출력 후 게임 끝
그렇지 않으면 다시 순환문을 돌림
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
게임 실행
숫자 찍음
Head First JAVA
핵심정리 (1/2)
15
객체지향적인 프로그래밍을 하면 제작과 테스트 과정이 끝난
코드를 건드리지 않고도 프로그램을 확장할 수 있다 .
모든 자바 코드는 클래스 내에서 정의된다 .
클래스는 해당 클래스 유형의 객체를 만드는 방법을 설명하는
역할을 한다 .
객체는 각자 알아서 자기 할 일을 처리할 수 있다 .
객체에는 알고 있는 것을 나타내는 인스턴스 변수와 할 수 있는
것을 나타내는 메소드가 있다 .
Head First JAVA
핵심정리 (2/2)
16
클래스를 새로 만들 때는 그 클래스 유형의 객체를 만들어서
테스트하는 테스트용 클래스를 따로 만들어 보는 것이 좋다 .
클래스에는 덜 구체적인 상위클래스 (superclass) 로부터
하위클래스 (subclass) 로 인스턴스 변수와 메소드를 상속
(inheritance) 할 수 있다 .
프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와
대화를 하는 것에 불과하다 .