1 / 79

2 주 객체와 클래스에 익숙해지기

2 주 객체와 클래스에 익숙해지기. 제 2 주 목표 약간 복잡한 클래스 살펴보기 다른 사람이 작성해 놓은 클래스를 이용하는 연습 API 문서를 찾아 보고 이용하는 법을 알게 됨. BlueJ. 자바 프로그램 개발 도구 (eclipse 처럼 ...) 주로 교육용으로 사용됨 클래스와 객체를 그림으로 표현 대화형으로 객체를 조작할 수 있다. BlueJ. Shapes. 실습과제 1 TicketMachine. BlueJ. 실습과제 2. 자바 표준 라이브러리 클래스.

leo-love
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주 목표 • 약간 복잡한 클래스 살펴보기 • 다른 사람이 작성해 놓은 클래스를 이용하는 연습 • API 문서를 찾아 보고 이용하는 법을 알게 됨 강원대학교

  2. BlueJ • 자바 프로그램 개발 도구 (eclipse처럼...) • 주로 교육용으로 사용됨 • 클래스와 객체를 그림으로 표현 • 대화형으로 객체를 조작할 수 있다. 강원대학교

  3. BlueJ • Shapes 강원대학교

  4. 실습과제 1 • TicketMachine 강원대학교

  5. BlueJ • 실습과제 2 강원대학교

  6. 자바 표준 라이브러리 클래스 강원대학교

  7. 라이브러리와 API Document • API: Application Programming Interface • 라이브러리에 들어 있는 클래스이 지원하는 메소드와 메소드 사용법을 보여줌 • 아래 사이트에서 온라인으로 볼 수 있으며 http://docs.oracle.com/javase/7/docs/api/ 내 컴퓨터에 저장해 놓고 볼 수 도 있음 강원대학교

  8. The API Document 강원대학교

  9. 라이브러리에 들어 있는 클래스 이용하기 • 클래스들은 그룹으로 분류되어 있으며 이 그룹을 패키지라고 함 • Rectangle 클래스는 java.awt패키지에 들어 있음 • Rectangle 클래스의 full name = java.awt.Rectangle • 클래스를 import하면 프로그램을 작성할 때 클래스의 full name(java.awt.Rectangle) 대신 Rectangle이라고만 적을 수 있음 import java.awt.Rectangle; 강원대학교

  10. java.lang패키지 • java.lang패키지에는 가장 기본적이며 많이 사용되는 클래스들이 들어 있음 • java.lang패키지에 들어 있는 클래스들은 import 하지 않고도 짧은 이름을 사용할 수 있음 • String 클래스와 System 클래스는 java.lang패키지에 들어 있음 강원대학교

  11. Rectangle Objects 라이브러리 클래스 활용 예 class Rectangle • 클래스는 그에 속하는 각 객체의 상태를 나타내는 데이터와 수행 가능한 메소드들을 정의한다. • 이 중 데이터 부분을 필드(field) 혹은 상태변수라고 부른다. 강원대학교

  12. Rectangle Objects 라이브러리 클래스 활용 예 (0, 0) 30 x (x, y) 사각형의 위치 (30, 20) Rectangle의 field 20 int height int width int x int y height y width 강원대학교

  13. 구성자(constructor) 강원대학교

  14. 객체를 만드는(construct) 법 • new는 연산자(operator)로서 Rectangle 클래스의 객체를 하나 구성하여 반환한다. • 새로이 구성되는 Rectangle 객체는 주어진 인자에 맞춰 만들어진다. 위치가 (5, 10)이고 폭이 20, 높이가 30 • 새로이 만들어진 객체는 Rectangle 타입 변수인 box에 저장된다. Rectangle box = new Rectangle(5, 10, 20, 30); 강원대학교

  15. 구성자 다중정의 (overloading) 위치가 (0, 0)이고 폭이 0, 높이가 0 Rectangle box = new Rectangle(); Rectangle box = new Rectangle(10, 20); 위치가 (0, 0)이고 폭이 10, 높이가 20 강원대학교

  16. 메소드 강원대학교

  17. Mutator methods 객체의 상태(필드)를 변화시키는 메소드 public void insertMoney(int amount) { balance += amount; } 강원대학교

  18. Accessor methods 객체의 상태를 변화시키지 않는 메소드 public intgetPrice() { return price; } 강원대학교

  19. File MoveTester.java 01:import java.awt.Rectangle; 02: 03:public classMoveTester 04:{ 05:public static voidmain(String[] args) 06:{ 07:Rectangle box =newRectangle(5, 10, 20, 30); 08: 09:// Move the rectangle 10:box.translate(15, 25); 11: 12:// Print information about the moved rectangle 13:System.out.println("After moving, the top-left corner is:"); 14:System.out.println(box.getX()); 15:System.out.println(box.getY()); 16:} 17:} 강원대학교

  20. File MoveTester.java 07:Rectangle box =newRectangle(5, 10, 20, 30); 08: 09:// Move the rectangle 10:box.translate(15, 25); 11: 12:// Print information about the moved rectangle 13:System.out.println("After moving, the top-left corner is:"); 14:System.out.println(box.getX()); 15:System.out.println(box.getY()); After moving, the top-left corner is: 20.0 35.0 강원대학교

  21. java.awt.Rectangle • Mutator? Or Accessor? 무엇을 리턴하는가? • grow • union • BlueJ • 실습과제 3 강원대학교

  22. java.util.Random intnextInt(int n): 0보다 크거나 같고 n보다 작은 정수 값을 반환 double nextDouble(): 0.0보다 크거나 같고 1.0보다 작은 double 형 값을 반환 강원대학교

  23. java.util.Random Random random= new Random(); intdie = random.nextInt(6) + 1; 강원대학교

  24. java.util.Random • 항상 같은 순서의 “임의의” 수가 생성되도록 하는 방법 • Random(...)에 long 타입 “시드(seed)”를 준다. • Random rand = new Random(12345678); //123456768는 시드 강원대학교

  25. 실습과제 4 강원대학교

  26. 객체간 상호작용 Object Interaction 강원대학교

  27. clock example 15:06 강원대학교

  28. 15:06 • 복잡도에 따라 • 하나의 클래스로 구현 • 작은 클래스로 분해 강원대학교

  29. 모듈화와 추상화modularization and abstraction 강원대학교

  30. 모듈화와 추상화modularization and abstraction 강원대학교

  31. 모듈화와 추상화modularization and abstraction clock clock 15:06 rollover counter 강원대학교

  32. clock clock 15:06 rollover counter public class Clock { private RolloverCounter hours; private RolloverCounter minutes; // 구성자와메소드 생략 } public class RolloverCounter { private int limit; private int value; // 구성자와메소드 생략 } 강원대학교

  33. :Clock hours minutes :RolloverCounter 15 Object diagram referencing :RolloverCounter 06 Clock using Class diagram RolloverCounter 강원대학교

  34. Clock public class Clock { private RolloverCounter hours; private RolloverCounter minutes; public Clock() public Clock(int hour, int minute) public void timeTick() public void setTime(int hour, int minute) public String getTime() } 강원대학교

  35. RolloverCounter public class RolloverCounter { private int limit; private int value; public RolloverCounter(introllOverLimit) public intgetValue() public String getTwoDigitString() public void setValue(intreplacementValue) public void increment() } 강원대학교

  36. 실습과제 5, 6, 7 강원대학교

  37. java.util.Scanner Scanner in = new Scanner(System.in); String st = in.next(); // 한 단어 String line = in.nextLine(); // 현재 줄의 끝까지 inti= in.nextInt(); // 정수 하나 강원대학교

  38. java.util.Scanner next() nextLine() nextInt() nextShort() nextLong() nextDouble() nextFloat() nextBoolean() 강원대학교

  39. nextLine() 메소드 • Scanner를 현재 위치에서 다음 줄의 첫머리로 이동시키고, 그 사이에 있는 모든 문자들로 구성된 String 객체를 (가리키는 참조를)반환한다. • 행 분리 기호 (new line) 제외, 공백문자 (space) 포함 강원대학교

  40. nextLine() 메소드 String message = input.nextLine(); intnum = input.nextInt() ; <입력> Hello 8 <실행 결과> message는 “Hello”를 가리킴 num은 8 . 강원대학교

  41. nextLine() 메소드 intnum = input.nextInt() ; String message = input.nextLine(); <입력> 8 Hello <실행 결과> num은 8 message는"" (빈 문자열) 을 가리킴 . 강원대학교

  42. nextLine() 메소드 • 문장들을 한 행씩 읽기 위해 nextLine()을 사용할 때는 보통 문제가 없다. • next(), nextInt(), nextDouble()과 같은 다른 Scanner 호출과 nextLine()을 혼합하여 사용할 때는 주의해야 한다. 강원대학교

  43. Strings 강원대학교

  44. Strings are objects String은 기본 (primitive) 데이터 타입이 아니다. Sting은 객체이므로 여러 가지 메소드를 갖는다. String lang = new String("Java"); System.out.println(lang.isEmpty()); System.out.println(lang.length()); false 4 강원대학교

  45. String Literal Stringliteral - "Java", "123", "" "java" 라는 내용을 갖는 String 객체를 만든다는 점에서 아래 두 문장이 같은 효과를 갖는다. String lang = "Java"; String lang = new String("Java"); 강원대학교

  46. String - Immutable • 자바 String 객체는 변경할 수 없다. 읽기 전용(read-only)이다.  • No mutator method • No exposed field • String s = "E.T."; s = s.toLowerCase(); s "E.T" s "E.T" "e.t" 새 객체가 만들어진다. 강원대학교

  47. String concatenation String s = "꽃이" + " 되었다."; "꽃이" " 되었다." s "꽃이 되었다." 새 객체가 만들어진다. 강원대학교

  48. StringBuiler - Mutable • StringBuiler객체는 변할 수 있다.   • String s = "E.T."; s.setCharAt(0, 'e'); s.setCharAt(2, 't'); s s "e.t" "E.T" 기존 객체의 내용이 변한다. 강원대학교

  49. String concatenation StringBuildersb = "꽃이"; sb.add(" 되었다."); sb "꽃이" " 되었다." sb "꽃이 되었다." 기존 객체가 변한다. 강원대학교

  50. StringBuilder 클래스 StringBuilder객체를 생성하기 위해서는 new 연산자를 사용한다:  StringBuilder s = new StringBuilder(); // 초기 용량은 16개 문자 StringBuilder s = new StringBuilder(50); // 초기 용량은 50개의 문자 StringBuilder s = new StringBuilder (“Hello”); // s를 “Hello”로 초기화 StringBuilder객체의 용량은 프로그램이 실행될 때 필요한 만큼 자동적으로 확장된다. 강원대학교

More Related