강원대학교 3 클래스 구현 1. 강원대학교 클래스 구현 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 2.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

강원대학교 자바프로그래밍 4. 클래스 설계 2 자바프로그래밍 1. 객체 자신에게 메소드 호출하기 vs 다른 객체에게 메소드 호출하기 강원대학교자바프로그래밍 2.
강원대학교 자바프로그래밍 제 4 주 클래스 설계 2 자바프로그래밍 1. 객체 자신에게 메소드 호출하기 vs 다른 객체에게 메소드 호출하기 강원대학교자바프로그래밍 2.
3 클래스 구현 자바프로그래밍 강원대학교.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제13장 패키지(Package).
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
클래스 구성 요소 1개의 클래스는 최대 8개의 구성 요소를 가질 수 있다
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Java Presentation 중간 시험2 풀이
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
6장 객체-지향 설계 ①.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.
Power Java 제4장 자바 프로그래밍 기초.
7장 배열 ②.
Power Java 제15장 예외 처리 (Exception Handling).
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 6. 형변환.
윤 홍 란 4 장 클래스 작성 윤 홍 란
레퍼런스 타입에 대하여 열거 타입의 선언과 이용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
인터페이스(Interfaces) 강원대학교.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
3장 자바의 기본문법(2).
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
제 4 장 클래스 작성 4-1 LAB.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
제 4주 – 클래스 설계 제 4주 목표 클래스를 구현하는 법을 배운다. 변수 선언 메소드 구현 구성자 객체지향프로그래밍
제 6주 인터페이스 (Interfaces) 제 6주 목표 인터페이스 개념 이해 다형성 개념 이해 자바프로그래밍 강원대학교.
6장 객체-지향 설계 ①.
자바 5.0 프로그래밍.
C#.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
6장 객체-지향 설계 ①.
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Lesson 2. 기본 데이터형.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Effective Java [Issue 1 and 2]
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
JA A V W. 06.
Fucntion 요약.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
함수, 모듈.
Chapter 4 클래스 작성.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
7 생성자 함수.
3장 자바의 기본문법(2).
Presentation transcript:

강원대학교 3 클래스 구현 1

강원대학교 클래스 구현 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 2

강원대학교 외부에 보이는 개념 ( 기능과 사용법 ) 객체 (Object) 와 추상화 (Abstraction) 내부의 세부 내용 객체  외부에 나타나는 개념은 추상화 (abstraction) 를 통해 형성됨  추상화 (abstraction): 중요하지 않은 세부 내용을 제거함으로 써 핵심적인 내용만을 추출함 3

강원대학교 클래스의 공개 인터페이스 설계 (Designing the Public Interface of a Class) 클래스 사용법 = 공개 인터페이스 (public interface) – 지원되는 메소드의 종류, 각 메소드의 사용법 4

강원대학교 클래스의 공개 인터페이스 설계 (Designing the Public Interface of a Class) 예 : 자동차 (Car) 자동차가 갖추어야 할 기능 = 자동차 클래스의 공 개 인터페이스 –accelerate –break –turn 5

강원대학교 클래스의 공개 인터페이스 설계 (Designing the Public Interface of a Class) 예 : 은행계좌 (bank account) 은행계좌가 갖추어야 할 기능 = 은행계좌 클래스 의 공개 인터페이스 –deposit ( 예금하다 ) –withdraw ( 출금하다 ) –get balance ( 잔고를 조회하다 ) 6

강원대학교 클래스 설계 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 7

강원대학교 메소드 선언 (Method Delaration) Class BankAccount { public void deposit(double amount) {... } public void withdraw(double amount) {... } public double getBalance() {... } } access specifier return type method namelist of parameters method body 8

메소드 사용 강원대학교 Class BankTester { Public static void main(String[] args) { BankAccount myAccount = new BankAccount(); myAccount.deposit(2000.0); myAccount.withdraw(500.0); System.out.println(myAccount.getBalance()); } 9

강원대학교 클래스 설계 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 10

강원대학교 구성자 선언 (Constructor Declaration) 구성자는 객체를 구성할 때 실행한다. 객체의 상태변수 (field) 를 초기화하는 데 주로 사용된다. 구성자 이름은 클래스 이름과 같다. 반환값을 갖지 않는다. 파라미터리스트가 서로 다른 여러개의 구성자가 있을 수 있다. public BankAccount(); // 초기 잔고가 0 인 계좌 구성 public BankAccount(double initialBalance); // 초기 잔고가 initialBalance 인 계좌 구성 11

강원대학교 BankAccount Public Interface public interface of a class = public constructors + public methods public class BankAccount { public BankAccount() {... } public BankAccount(double initialBalance) {... } public void deposit(double amount) {... } public void withdraw(double amount) {... } public double getBalance() {...} // private fields } 12

강원대학교 클래스 설계 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 13

강원대학교 Commenting on the Public Interface 정해진 규칙에 맞추어 주석을 달면 javadoc 도구를 사용 해 API 문서를 만들어 낼 수 있다. $ javadoc BankAccount.java /** BankAccount 는 은행계좌로서 입금, 출금이 가능하며 현재 잔고를 확인할 수 있다. */ public class BankAccount {... } 14

강원대학교 /** 잔고를 잔고 */ public double getBalance() { // 구현은 나중에 함 (implementation filled in later ) } /** 계좌에서 amount 출금액수 */ public void withdraw(double amount) { // 구현은 나중에 함 (implementation filled in later ) } 15

강원대학교 16

강원대학교 17

강원대학교 클래스 설계 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 18

강원대학교 Fields public class BankAccount { private double balance; // 인스턴스 필드 public BankAccount() {... } public BankAccount(double initialBalance) {... } public void deposit(double amount) {... } public void withdraw(double amount) {... } public double getBalance() {...} } 19

강원대학교 Instance Instance of a class = an object of the class 철수, 영희는 사람 클래스의 인스턴스이다. 메리, 독구, 쫑은 개 클래스의 인스턴스이다. 철수, 영희, 메리, 독구, 쫑은 모두 객체이다. 20

강원대학교 클래스 설계 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 21

강원대학교 메소드 구현 Some methods do not return a value Some methods return an output value public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } public double getBalance() { return balance; } 22

강원대학교 인자와 매개변수 (arguments and parameters) public class BankAccount { private double balance; public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } } BankAccount harrysChecking = new BankAccount(); harrysChecking.deposit(3000.0); BankTester 클래스의 main 메소드 파라미터 인자 (argument) call-by-value ( 값 복사 ) 메소드 선언 메소드 활용 23

강원대학교 구성자 (constructor) 구현 public BankAccount() { balance = 0.0; } public BankAccount(double initialBalance) { balance = initialBalance; } BankAccount harrysChecking = new BankAccount(1000.0); BankAccount marysChecking = new BankAccount(); harrysCheckingmarysChecking 24

완성된 BankAccount 클래스 강원대학교 25

강원대학교 File BankAccount.java 01: /** 02: A bank account has a balance that can be changed by 03: deposits and withdrawals. 04: */ 05: public class BankAccount 06: { 07: /** 08: Constructs a bank account with a zero balance. 09: */ 10: public BankAccount() 11: { 12: balance = 0; 13: } 14: 15: /** 16: Constructs a bank account with a given balance. initialBalance the initial balance 18: */ 26

강원대학교 File BankAccount.java 19: public BankAccount(double initialBalance) 20: { 21: balance = initialBalance; 22: } 23: 24: /** 25: Deposits money into the bank account. amount the amount to deposit 27: */ 28: public void deposit(double amount) 29: { 30: double newBalance = balance + amount; 31: balance = newBalance; 32: } 33: 34: /** 35: Withdraws money from the bank account. amount the amount to withdraw 27

강원대학교 File BankAccount.java 37: */ 38: public void withdraw(double amount) 39: { 40: double newBalance = balance - amount; 41: balance = newBalance; 42: } 43: 44: /** 45: Gets the current balance of the bank account. the current balance 47: */ 48: public double getBalance() 49: { 50: return balance; 51: } 52: 53: private double balance; 54: } 28

강원대학교 클래스 설계 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 29

강원대학교 Testing a Class BlueJ 와 같은 도구를 이용 main 메소드가 들어 있는 Test 클래스를 작성 30

강원대학교 Testing with Bluej 31

강원대학교 File BankAccountTester.java 01: /** 02: A class to test the BankAccount class. 03: */ 04: public class BankAccountTester 05: { 06: /** 07: Tests the methods of the BankAccount class. args not used 09: */ 10: public static void main(String[] args) 11: { 12: BankAccount harrysChecking = new BankAccount(); 13: harrysChecking.deposit(2000.0); 14: harrysChecking.withdraw(500.0); 15: System.out.println(harrysChecking.getBalance()); 16: } 17: } 32

정리 강원대학교 33

강원대학교 클래스 선언문 구성 class ClassName { fields methods nested classes and interfaces } 클래스 멤버 class 앞에 public 을 붙일 수 있다. 이 경우 세상 누구나 이 클래스를 사용할 수 있다는 의미 public 이 없으면 같은 패키지 내에서만 사용할 수 있다. 34

강원대학교 Fields 필드 변수 선언 – 타입과 변수이름을 적어줌 int i; // i 는 int 타입 변수임 Student s; // s 는 Student 타입 레퍼런스 변수임 – 선언과 함께 초기값을 정해줄 수도 있음 int i = 4; Student s = new Student(); 35

강원대학교 필드와 메소드 public class Box { private int length, width, height; public void setLength(int p) {length=p;} public void setWidth(int p) {width=p;} public void setHeight(int p) {height=p;} public int displayVolume() {System.out.println(length*width*height);} } Length Width height Box 인스턴스 메소드 36 객체데이터 ( 상태변수 )

강원대학교 Categories of Variables Fields ( 인스턴스 필드 ) Local variables ( 지역변수 ) Parameter ( 파라미터 ) public class BankAccount { private double balance; public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } } 메소드에 속하며 메소드가 실행되는 동안에만 존재함 37

메소드를 구현할 때 파라미터 수를 미리 정하지 않을 수도 있다 (variable number of parameters) 강원대학교 38

가변수 파라미터 함수 (variable number of parameters) class Adder public int add(int... values) Adder adder = new Adder(); adder.add(1, 3, 7); adder.add(1, 2); adder.add(1, 3, 7, 8); 강원대학교 39

가변수 파라미터 함수의 구현 (variable number of parameters) class Adder public int add(int... values) { int sum = 0; for (int i = 0; i < values.length; i++) sum += values[i]; return sum; } 강원대학교 40

지역변수의 영역 강원대학교 41

강원대학교 지역변수의 영역 (Scope of a local variable) 지역변수의 영역 – 변수가 선언된 부분부터 변수가 포함되어 있는 블록의 끝까지 42

강원대학교 Scope of Local Variables 지역변수의 scope 내에는 같은 이름의 지역변수 가 있을 수 없다. Rectangle r = new Rectangle(5, 10, 20, 30); if (x >= 0) { double r = Math.sqrt(x); // Error–can't declare another variable called r here... } 43

강원대학교 Scope of Local Variables Scope 가 겹치지 않는다면 같은 이름의 지역변수 를 사용할 수 있다. if (x >= 0) { double r = Math.sqrt(x);... } // Scope of r ends here else { Rectangle r = new Rectangle(5, 10, 20, 30); // OK–it is legal to declare another r here... } 44

강원대학교 Overlapping Scope 지역변수와 필드가 같은 이름을 가질 때는 지역변 수가 필드를 가린다 (shadow). public class Coin {... public double getExchangeValue(double exchangeRate) { double value; // Local variable... return value; } private String name; private double value; // Field with the same name } 45

강원대학교 Overlapping Scope 가려진 필드에 접근하는 방법 – this 사용 public Coin(double value, String name) { this.value = value; this.name = name; } private String name; private double value; 46

기타 강원대학교 47

강원대학교 부울 타입 변수 Just use the simpler test if (married == true)... // Don't if (married)... 48

강원대학교 주의 if (0 < amount < 1000) … // 오류 if (0< amount && amount < 1000) … if (ch == ‘S’ || ‘M’) … // 오류 if (ch == ‘S’ || ch == ‘M’) … 49

강원대학교 Q 나 q 가 입력될 때까지 입력을 복창하는 루프 Scanner in = new Scanner(System.in) boolean done = false; while (!done) { System.out.print("Enter value, Q to quit: "); String input = in.next(); if (input.equalsIgnoreCase("Q")) done = true; else { System.out.println(input); } } 50

강원대학교 중간에서 완료여부를 판단하는 루프 boolean done = false; while (!done) { Print prompt String input = read input; if (end of input indicated) done = true; else { // Process input } } 51

강원대학교 초계값 (Sentinel Values) Sentinel value: 데이터 세트의 끝을 표시하는 값 System.out.print("Enter value, Q to quit: "); String input = in.next(); if (input.equalsIgnoreCase("Q")) We are done else { double x = Double.parseDouble(input);... } String 을 double 타입으로 변환해주는 메소드 52

강원대학교 같은 클래스 객체간에도 상호작용이 있을 수 있다. 53

강원대학교 BankAccount 계좌이체 (transfer) BankAccount

강원대학교 public class BankAccount { public BankAccount() public BankAccount(double initialBalance) public void deposit(double amount) public void withdraw(double amount) public void transfer(double amount, BankAccount other) public double getBalance() private double balance; } BankAccount kims, moms; kims = new BankAccount(); moms = new BankAccount(1000.0); moms.deposit(2000.0); moms.transfer(500.0, kims); System.out.println(moms.getBalance()); System.out.println(kims.getBalance()); 1000 moms 0 0 kims

강원대학교 public class BankAccount { public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } public void withdraw(double amount){...} public void transfer(double amount, BankAccount other) { withdraw(amount); other.deposit(amount); } private double balance; } BankAccount kims, moms; kims = new BankAccount(); moms = new BankAccount(1000.0); moms.deposit(2000.0); moms.transfer(500.0, kims); System.out.println(moms.getBalance()); System.out.println(kims.getBalance()); momskims 56

강원대학교 public class BankAccount { public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } public void withdraw(double amount){...} public void transfer(double amount, BankAccount other) { withdraw(amount); // 객체 자신에게 메소드를 호출할 때는 // 메소드 이름만 적어주면 됨 (this 생략 !) other.deposit(amount); // 다른 객체에게 메소드를 호출할 때는 // 그 객체를 가리키는 레퍼런스를 // 적어 주어야 함 } private double balance; } 57

강원대학교 public class BankAccount { public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } public void transfer(double amount, BankAccount other) { this.withdraw(amount) other.deposit(amount); } private double balance; } BankAccount kims, moms; kims = new BankAccount(); moms = new BankAccount(1000.0); moms.deposit(2000.0); moms.transfer(500.0, kims); System.out.println(moms.getBalance()); System.out.println(kims.getBalance()); momskims 58

구성자에서 구성자 호출하기 강원대학교 59

강원대학교 public BankAccount() { balance = 0; } public BankAccount(double initialBalance) { balance = initialBalance; } public BankAccount() { this(0); } public BankAccount(double initialBalance) { balance = initialBalance; } 60

인스턴스 멤버와 클래스 멤버 강원대학교 61

인스턴스 필드와 클래스 필드 인스턴스 필드 : 인스턴스마다 존재하는 필드 클래스 필드 : 클래스 공통으로 하나만 존재하는 필드 – 클래스 필드를 선언할 때는 static 으로 선언한다. public class BankAccount{ private double balance; private int accountNumber; private static int numberOfAccounts = 0; } 강원대학교 62

강원대학교 public class BankAccount{ private double balance; private int accountNumber; private static int numberOfAccounts = 0; public BankAccount(double initialBalance){ balance = initialBalance; // increment number of Accounts and assign account number accountNumber = ++numberOfAccounts; } public int getAccountNumber() { return accountNumber; } BankAccount numberOfAccounts: 0 63 클래스

강원대학교 public class BankAccount { private double balance; private int accountNumber; private static int numberOfAccounts = 0; public BankAccount(double initialBalance){ balance = initialBalance; accountNumber = ++numberOfAccounts; } BankAccount b1 = new BankAccount(100.0); BankAccount numberOfAccounts: 1 balance: accountNumber: 1 b1 64 클래스

강원대학교 public class BankAccount { private double balance; private int accountNumber; private static int numberOfAccounts = 0; public BankAccount(double initialBalance){ balance = initialBalance; accountNumber = ++numberOfAccounts; } BankAccount b1 = new BankAccount(100.0); BankAccount b2 = new BankAccount(200.0); BankAccount numberOfAccounts: 2 balance: accountNumber: 1 b1 balance: accountNumber: 2 b2 65

강원대학교 클래스 메소드 메소드를 static 르로 선언하면 그 메소드는 개별 객체에 작용하지 않 는다는 의미 Static 메소드는 아래와 같은 형식으로 호출 ClassName. methodName(parameters) Math 클래스 메소드들은 대부분 static 메소드 66

강원대학교 The Math class (-b + Math.sqrt(b*b - 4*a*c)) / (2*a) 67

강원대학교 Mathematical Methods in Java Math.sqrt(x) square root Math.pow(x, y) power x y Math.exp(x) exex Math.log(x) natural log Math.sin(x), Math.cos(x), Math.tan(x) sine, cosine, tangent (x in radian) Math.round(x) closest integer to x Math.min(x, y), Math.max(x, y) minimum, maximum 68

강원대학교 69 double r = Math.random(); Random generator = new Random(); double r = generator.nextDouble();

public class BankAccount { private double balance; private int accountNumber; private static int numberOfAccounts = 0; public BankAccount(double initialBalance) { balance = initialBalance; accountNumber = ++numberOfAccounts; } public void deposit(double amount) {balance = balance + amount;} public void withdraw(double amount) {balance = balance – amount;} public static int getNumberOfAccounts() {return numberOfAccounts;} public static void main(String[] args) { deposit(100.0);  에러 ! BankAccount account = new BankAccount(100.0); account.deposit(100.0); // OK! System.out.println(BankAccount.getNumberOfAccounts()); } 강원대학교 70

public class Adder { public int add(int a, int b) { return a + b; } public static void main(String[] args) { System.out.println(add(1, 2));// error! } Cannot make a static reference to the non-static method add(int, int) from the type Adder 강원대학교 71

public class Adder { public int add(int a, int b) { return a + b; } public static void main(String[] args) { Adder adder = new Adder(); System.out.println(adder.add(1, 2));// OK! } 강원대학교 72

public class Adder { public static int add(int a, int b) { return a + b; } public static void main(String[] args) { System.out.println(Adder.add(1, 2));// OK! } 강원대학교 73

public class Adder { public static int add(int a, int b) { return a + b; } public static void main(String[] args) { System.out.println(Adder.add(1, 2));// OK! System.out.println(add(1, 2)); // OK! // 클래스 내부에서는 // 클래스이름 생략 가능 ! } 강원대학교 74

강원대학교 static final Constants( 상수 ) static final constant 는 다른 클래스에 의해 주로 사 용됨 static final constant 예 public class Math {... public static final double E = ; public static final double PI = ; } double circumference = Math.PI * diameter; // Math 클래스 밖에서 사용 75

강원대학교 Converting between Strings and Numbers Convert to number: Convert to string: String str = “35”; String xstr = “12.3”; int n = Integer.parseInt(str); double x = Double.parseDouble(xstr); int n = 10; String str = "" + n; str = Integer.toString(n); 76

강원대학교 Scanner scanner = new Scanner(System.in); String id = scanner.next(); if (id.matches("[a-z]"))... if (id.matches("a.c"))...// 문자 하나 if (id.matches("a*c"))...// a 가 0 개 이상 if (id.matches("a+c"))...// a 가 1 개 이상 if (id.matches("a?c"))...// a 가 0 혹은 1 개 if (id.matches("a.*c"))...// 문자가 0 개 이상 정규식 (regular expression) 입력 값을 검사하는 법 77

강원대학교 Color c = panel.getBackground(); if(c.equals(Color.black))... if(panel.getBackground().equals(Color.black))... 이렇게 써도 된다. 78 Color 클래스의 static field Color 객체

강원대학교 경과 시간 측정하는 법 long start = System.currentTimeMillis();.... long duration = System.currentTimeMillis()-start; 79

코드 실행시간 측정법 class TimeTest1 { public static void main(String[] args) { long startTime = System.currentTimeMillis(); long total = 0; for (int i = 0; i < ; i++) { total += i; } long stopTime = System.currentTimeMillis(); long elapsedTime = stopTime - startTime; System.out.println(elapsedTime); } 강원대학교 80

강원대학교 Wrappers 81

강원대학교 Wrapper 인스턴스 82

강원대학교 자동포장기능 (Auto-boxing) 기본 데이터타입과 wrapper 클래스 간 자동 변환 Double d = new Double(29.95); // 기존 방법 Double d = 29.95; // auto-boxing double x = d.doubleValue(); // 기존 방법 double x = d; // auto-unboxing 83

강원대학교 Package Names and Locating Classes Use packages to avoid name clashes 패키지 이름은 혼동되지 않도록 정해야 한다. 권고 : 도메인 네임을 역순으로 사용 edu.sjsu.cs.walters: for Walters' classes java.util.Timer vs. javax.swing.Timer 84

강원대학교 Base Directories and Subdirectories for Packages com.horstmann.bigjava.Nemeric 85

강원대학교 Package Names and Locating Classes 소스 파일의 path name 은 package name 에 대응되도록 해 주어야 한 다. 기준 위치 (base directory) 는 classpath 환경변수에 지정해 준다. 기준위치에서 컴파일, 실행 등 작업을 할 때에는 classpath 를 설정해 주지 않아도 된다. com/horstmann/bigjava/Financial.java export CLASSPATH=/home/walters:. set CLASSPATH=c:\home\walters;. com.horstmann.bigjava.Nemeric 86

강원대학교 패키지를 사용한 프로그래밍 패키지명 결정 kr.ac.kangwon.ckjeong.homework1 기본 디렉토리 ( 기준 위치 ) 설정 mkdir c:\oop 기본 디렉토리 안에 패키지명과 일치하는 서브디렉토리를 만듦 cd c:\oop mkdir kr mkdir kr\ac mkdir kr\ac\kangwon mkdir kr\ac\kangwon\ckjeong mkdir kr\ac\kangwon\ckjeong\homework1 87

강원대학교 패키지를 사용한 프로그래밍 소스 파일을 맨 아래 디렉토리에 작성 c:\oop\kr\ac\kangwon\ckjeong\homework1\Test.java 소스 파일에 package 문장 삽입 package kr.ac.kangwon.ckjeong.homework1 기본 디렉토리에서 소스 파일 컴파일 cd c:\oop javac kr\ac\kangwon\ckjeong\homework1\Test.java 기본 디렉토리에서 프로그램 실행 java kr.ac.kangwon.ckjeong.homework1.Test 파일 이름 클래스 이름 88