160 likes | 448 Views
2. 클래스와 객체. 객 체. ShoppingCart. Button. 아는 것 ( 속성 ) – 인스턴스 변수. cartContents. label color. addToCart () removeFromCart () checkOut (). setColor () setLabel () dePress () unDepress (). 할 수 있는 것 – 메소드. 클래스와 객체. 클래스 하나. Q-S. N-P. L-M. 주소록. Dog. Name polly Morfism
E N D
객 체 ShoppingCart Button 아는 것 (속성) – 인스턴스변수 cartContents label color addToCart() removeFromCart() checkOut() setColor() setLabel() dePress() unDepress() 할 수 있는 것 – 메소드 Head First JAVA
클래스와 객체 클래스 하나 Q-S N-P L-M 주소록 Dog Name pollyMorfism Phone 555-0343 eMailpm@wickedlysmart Name pollyMorfism Phone 555-0343 eMailpm@wickedlysmart Name pollyMorfism Phone 555-0343 eMailpm@wickedlysmart size breed name bark() 객체 여러 개 Head First JAVA
객체 만들기 (1/3) Dog 1. 클래스를 만든다. class Dog { intsize; String breed; String name; void bark() { System.out.println("Ruff! Ruff!"); } } size breed name 인스턴스변수 bark() 메소드 Head First JAVA
객체 만들기 (2/3) 2. 테스트용 클래스를 만든다. classDogTestDrive { public static voidmain (String [] args) { // 클래스를테스트하기 위한 코드 } } Main 메소드의 용도 - 클래스를 테스트하기 위한 용도 - 자바 애플리케이션을 시작하기 위한 용도 Head First JAVA
객체 만들기 (3/3) 3. 객체를 만들고 변수와 메소드에 접근 classDogTestDrive { public static void main (String [] args) { Dog d = new Dog(); d.size = 40; d.bark(); } } ‘d’ 라는 Dog 객체 생성 ‘d’의 크기 설정 ‘d’의 bark() 메소드 호출 Head First JAVA
Movie 객체 (1/3) class Movie { String title; String genre; intrating; voidplayIt() { System.out.println("영화를 상영합니다."); } } Movie title genre rating playIt() Head First JAVA
Movie 객체 (2/3) 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) Title : 주식과 함께 사라지다 Genre : 비극 Rating : -2 1번 객체 Title : 로스트 인 큐비클 스페이스 Genre : 코미디 Rating : 5 2번 객체 Title : 바이트 클럽 Genre : 기분이 좋아지는 비극 Rating : 127 3번 객체 Head First JAVA
숫자 맞추기 게임 (1/5) 게임 객체 한 개와 선수 객체 세 개로 구성. 게임 객체에서는 0 ~ 9 의 난수를 발생시키고 선수 객체 세 개는 적당한 숫자를 찍어서 그 숫자를 맞춰야 함 – GuessGame, Player, GameLauncher 1) 게임은 GameLauncher클래스에서 시작 2) main() 메소드에서는GuessGame객체를 만들고 startGame() 메소드를 호출 3) 실제 게임은 모두 GuessGame객체의 startGame() 메소드에서 진행. 이 메소드에서는 선수 객체 세 개를 만들고 난수 하나를 생각. 그리고 각 선수에게 숫자를 물어보고 그 결과를 확인한 다음 승자에 대한 정보를 출력하거나 다시 맞춰보라는 메시지 출력 Head First JAVA
숫자 맞추기 게임 (2/5) GuessGame public class GuessGame { Player p1; Player p2; Player p3; public void startGame() { p1 = new Player(); p2 = new Player(); p3 = new Player(); int guessp1 = 0; intguessp2 = 0; int guessp3 = 0; boolean p1isRight = false; boolean p2isRight = false; boolean p3isRight = false; inttargetNumber = (int) (Math.random() * 10); System.out.println("0 이상 9 이하의 숫자를 맞춰보세요."); Player 객체 세 개를 저장하기 위한 인스턴트 변수 세 개 Player 객체 세 개 생성 찍은 숫자를 저장하기 위한 변수세 개 생성 찍은 숫자가 맞는지 여부를 저장하기 위한 변수 세 개를 선언 선수들이 맞출 숫자 생성 Head First JAVA
숫자 맞추기 게임 (3/5) GuessGame 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; } Player별로 guess() 메소드 호출 객체의 인스턴스 변수에 접근하여 Player가 찍은 숫자를 알아냄 Head First JAVA
숫자 맞추기 게임 (4/5) GuessGame 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("다시 시도해야 합니다."); } } } } 각 Player가 찍은 숫자 중에서 맞춘 숫자가 있는지를 확인 한 Payer라도 맞춘 자가 있으면 출력 후 게임 끝 그렇지 않으면 다시 순환문을 돌림 Head First JAVA
숫자 맞추기 게임 (5/5) Player public class Player { intnumber = 0; public void guess() { number = (int) (Math.random() * 10); System.out.println("찍은 숫자: "+ number); } } 숫자 찍음 GameLauncher public class GameLauncher { public static void main (String[] args) { GuessGame game = newGuessGame(); game.startGame(); } } 게임 실행 Head First JAVA
핵심정리 (1/2) 객체지향적인 프로그래밍을 하면 제작과 테스트 과정이 끝난 코드를 건드리지 않고도 프로그램을 확장할 수 있다. 모든 자바 코드는 클래스 내에서 정의된다. 클래스는 해당 클래스 유형의 객체를 만드는 방법을 설명하는 역할을 한다. 객체는 각자 알아서 자기 할 일을 처리할 수 있다. 객체에는 알고 있는 것을 나타내는 인스턴스변수와 할 수 있는 것을 나타내는 메소드가 있다. Head First JAVA
핵심정리 (2/2) 클래스를 새로 만들 때는 그 클래스 유형의 객체를 만들어서 테스트하는 테스트용 클래스를 따로 만들어 보는 것이 좋다. 클래스에는 덜 구체적인 상위클래스(superclass)로부터 하위클래스(subclass)로 인스턴스 변수와 메소드를상속(inheritance)할 수 있다. 프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와 대화를 하는 것에 불과하다. Head First JAVA