1 / 16

2. 클래스와 객체

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

morrison
Download Presentation

2. 클래스와 객체

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2. 클래스와 객체

  2. 객 체 ShoppingCart Button 아는 것 (속성) – 인스턴스변수 cartContents label color addToCart() removeFromCart() checkOut() setColor() setLabel() dePress() unDepress() 할 수 있는 것 – 메소드 Head First JAVA

  3. 클래스와 객체 클래스 하나 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

  4. 객체 만들기 (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

  5. 객체 만들기 (2/3) 2. 테스트용 클래스를 만든다. classDogTestDrive { public static voidmain (String [] args) { // 클래스를테스트하기 위한 코드 } } Main 메소드의 용도 - 클래스를 테스트하기 위한 용도 - 자바 애플리케이션을 시작하기 위한 용도 Head First JAVA

  6. 객체 만들기 (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

  7. Movie 객체 (1/3) class Movie { String title; String genre; intrating; voidplayIt() { System.out.println("영화를 상영합니다."); } } Movie title genre rating playIt() Head First JAVA

  8. 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

  9. Movie 객체 (3/3) Title : 주식과 함께 사라지다 Genre : 비극 Rating : -2 1번 객체 Title : 로스트 인 큐비클 스페이스 Genre : 코미디 Rating : 5 2번 객체 Title : 바이트 클럽 Genre : 기분이 좋아지는 비극 Rating : 127 3번 객체 Head First JAVA

  10. 숫자 맞추기 게임 (1/5) 게임 객체 한 개와 선수 객체 세 개로 구성. 게임 객체에서는 0 ~ 9 의 난수를 발생시키고 선수 객체 세 개는 적당한 숫자를 찍어서 그 숫자를 맞춰야 함 – GuessGame, Player, GameLauncher 1) 게임은 GameLauncher클래스에서 시작 2) main() 메소드에서는GuessGame객체를 만들고 startGame() 메소드를 호출 3) 실제 게임은 모두 GuessGame객체의 startGame() 메소드에서 진행. 이 메소드에서는 선수 객체 세 개를 만들고 난수 하나를 생각. 그리고 각 선수에게 숫자를 물어보고 그 결과를 확인한 다음 승자에 대한 정보를 출력하거나 다시 맞춰보라는 메시지 출력 Head First JAVA

  11. 숫자 맞추기 게임 (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

  12. 숫자 맞추기 게임 (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

  13. 숫자 맞추기 게임 (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

  14. 숫자 맞추기 게임 (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

  15. 핵심정리 (1/2) 객체지향적인 프로그래밍을 하면 제작과 테스트 과정이 끝난 코드를 건드리지 않고도 프로그램을 확장할 수 있다. 모든 자바 코드는 클래스 내에서 정의된다. 클래스는 해당 클래스 유형의 객체를 만드는 방법을 설명하는 역할을 한다. 객체는 각자 알아서 자기 할 일을 처리할 수 있다. 객체에는 알고 있는 것을 나타내는 인스턴스변수와 할 수 있는 것을 나타내는 메소드가 있다. Head First JAVA

  16. 핵심정리 (2/2) 클래스를 새로 만들 때는 그 클래스 유형의 객체를 만들어서 테스트하는 테스트용 클래스를 따로 만들어 보는 것이 좋다. 클래스에는 덜 구체적인 상위클래스(superclass)로부터 하위클래스(subclass)로 인스턴스 변수와 메소드를상속(inheritance)할 수 있다. 프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와 대화를 하는 것에 불과하다. Head First JAVA

More Related