3 클래스 구현 자바프로그래밍 강원대학교.

Slides:



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

강원대학교 자바프로그래밍 4. 클래스 설계 2 자바프로그래밍 1. 객체 자신에게 메소드 호출하기 vs 다른 객체에게 메소드 호출하기 강원대학교자바프로그래밍 2.
강원대학교 자바프로그래밍 제 4 주 클래스 설계 2 자바프로그래밍 1. 객체 자신에게 메소드 호출하기 vs 다른 객체에게 메소드 호출하기 강원대학교자바프로그래밍 2.
강원대학교 3 클래스 구현 1. 강원대학교 클래스 구현 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 2.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제13장 패키지(Package).
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
클래스 구성 요소 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 제10장 배열.
Power Java 제15장 예외 처리 (Exception Handling).
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
[Homework #3] 오류 찾기 문제 BankAccount 문제 MyMetric 문제
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장 객체-지향 설계 ①.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Lesson 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 생성자 함수.
6 객체.
3장 자바의 기본문법(2).
Presentation transcript:

3 클래스 구현 자바프로그래밍 강원대학교

클래스 구현 순서 클래스의 공개 인터페이스 설계 메소드 선언 (메소드 사용 사례를 적어 봄) 구성자 선언 주석 기입 및 API 문서 제작 필드 선언 메소드 구현 테스트 자바프로그래밍 강원대학교

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

클래스의 공개 인터페이스 설계(Designing the Public Interface of a Class) 지원되는 메소드의 종류, 각 메소드의 사용법 자바프로그래밍 강원대학교

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

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

클래스 설계 순서 클래스의 공개 인터페이스 설계 메소드 선언 (메소드 사용 사례를 적어 봄) 구성자 선언 주석 기입 및 API 문서 제작 필드 선언 메소드 구현 테스트 자바프로그래밍 강원대학교

메소드 선언 (Method Delaration) access specifier method name list of parameters Class BankAccount { public void deposit(double amount) { . . . } public void withdraw(double amount) { . . . } public double getBalance() { . . . } } return type method body 자바프로그래밍 강원대학교

메소드 사용 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()); } 자바프로그래밍 강원대학교

클래스 설계 순서 클래스의 공개 인터페이스 설계 메소드 선언 (메소드 사용 사례를 적어 봄) 구성자 선언 주석 기입 및 API 문서 제작 필드 선언 메소드 구현 테스트 자바프로그래밍 강원대학교

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

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 } 자바프로그래밍 강원대학교

클래스 설계 순서 클래스의 공개 인터페이스 설계 메소드 선언 (메소드 사용 사례를 적어 봄) 구성자 선언 주석 기입 및 API 문서 제작 필드 선언 메소드 구현 테스트 자바프로그래밍 강원대학교

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

/** 계좌에서 출금한다. @param amount 출금액수 /** 계좌에서 출금한다. @param amount 출금액수 */ public void withdraw(double amount) { // 구현은 나중에 함 (implementation filled in later ) } /** 잔고를 보여준다. @return 잔고 */ public double getBalance() { // 구현은 나중에 함 (implementation filled in later ) } 자바프로그래밍 강원대학교

자바프로그래밍 강원대학교

자바프로그래밍 강원대학교

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

클래스 설계 순서 클래스의 공개 인터페이스 설계 메소드 선언 (메소드 사용 사례를 적어 봄) 구성자 선언 주석 기입 및 API 문서 제작 필드 선언 메소드 구현 테스트 자바프로그래밍 강원대학교

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() { ...} } 자바프로그래밍 강원대학교

클래스 설계 순서 클래스의 공개 인터페이스 설계 메소드 선언 (메소드 사용 사례를 적어 봄) 구성자 선언 주석 기입 및 API 문서 제작 필드 선언 메소드 구현 테스트 자바프로그래밍 강원대학교

메소드 구현 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; } 자바프로그래밍 강원대학교

구성자 (constructor) 구현 public BankAccount() { balance = 0.0; } public BankAccount(double initialBalance) { balance = initialBalance; } BankAccount harrysChecking = new BankAccount(1000.0); BankAccount marysChecking = new BankAccount(); 1000.0 0.0 harrysChecking marysChecking 자바프로그래밍 강원대학교

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

완성된 BankAccount 클래스 자바프로그래밍 강원대학교

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. 17: @param initialBalance the initial balance 18: */ 자바프로그래밍 강원대학교

File BankAccount.java 19: public BankAccount(double initialBalance) 20: { 21: balance = initialBalance; 22: } 23: 24: /** 25: Deposits money into the bank account. 26: @param 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. 36: @param amount the amount to withdraw 자바프로그래밍 강원대학교

File BankAccount.java 37: */ 38: public void withdraw(double amount) 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. 46: @return the current balance 47: */ 48: public double getBalance() 49: { 50: return balance; 51: } 52: 53: private double balance; 54: } 자바프로그래밍 강원대학교

클래스 설계 순서 클래스의 공개 인터페이스 설계 메소드 선언 (메소드 사용 사례를 적어 봄) 구성자 선언 주석 기입 및 API 문서 제작 필드 선언 메소드 구현 테스트 자바프로그래밍 강원대학교

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

Testing with Bluej 자바프로그래밍 강원대학교

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. 08: @param 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: } 자바프로그래밍 강원대학교

정리 자바프로그래밍 강원대학교

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

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

필드와 메소드 public class Box { private int length, width, height; Box 인스턴스 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);} } Box 인스턴스 Length Width height 객체데이터 (상태변수) 메소드 자바프로그래밍 강원대학교

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

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

가변수 파라미터 함수 (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); 자바프로그래밍 강원대학교

가변수 파라미터 함수의 구현 (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; } 자바프로그래밍 강원대학교

지역변수의 영역 자바프로그래밍 강원대학교

지역변수의 영역 (Scope of a local variable) 변수가 선언된 부분부터 변수가 포함되어 있는 블록의 끝까지 자바프로그래밍 강원대학교

Scope of Local Variables 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 . . . } 자바프로그래밍 강원대학교

Scope of Local Variables 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 . . . } 자바프로그래밍 강원대학교

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 } 자바프로그래밍 강원대학교

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

기타 자바프로그래밍 강원대학교

부울 타입 변수 Just use the simpler test if (married == true) . . . // Don't 자바프로그래밍 강원대학교

주의 if (0 < amount < 1000) … // 오류 if (0< amount && amount < 1000) … if (ch == ‘S’ || ‘M’) … // 오류 if (ch == ‘S’ || ch == ‘M’) … 자바프로그래밍 강원대학교

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); } } 자바프로그래밍 강원대학교

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

초계값 (Sentinel Values) Sentinel value: 데이터 세트의 끝을 표시하는 값 0이나 -1같은 숫자보다는 Q와 같은 문자를 사용하는 것이 좋음 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 타입으로 변환해주는 메소드 자바프로그래밍 강원대학교

같은 클래스 객체간에도 상호작용이 있을 수 있다. 같은 클래스 객체간에도 상호작용이 있을 수 있다. 자바프로그래밍 강원대학교

BankAccount BankAccount 1000 계좌이체 (transfer) 300 BankAccount 계좌이체 (transfer) 300 BankAccount BankAccount 700 300 자바프로그래밍 강원대학교

public void withdraw(double amount) 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()); moms 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()); moms 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; 자바프로그래밍 강원대학교

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()); moms kims 자바프로그래밍 강원대학교

구성자에서 구성자 호출하기 자바프로그래밍 강원대학교

public BankAccount() { balance = 0; } public BankAccount(double initialBalance) { balance = initialBalance; } public BankAccount() { this(0); } public BankAccount(double initialBalance) { balance = initialBalance; } 자바프로그래밍 강원대학교

인스턴스 멤버와 클래스 멤버 자바프로그래밍 강원대학교

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

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 자바프로그래밍 강원대학교

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); 클래스 balance: 100.0 accountNumber: 1 BankAccount numberOfAccounts: 1 b1 자바프로그래밍 강원대학교

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); balance: 100.0 accountNumber: 1 b1 BankAccount numberOfAccounts: 2 balance: 200.0 accountNumber: 2 b2 자바프로그래밍 강원대학교

클래스 메소드 메소드를 static르로 선언하면 그 메소드는 개별 객체에 작용하지 않는다는 의미 ClassName. methodName(parameters) Math 클래스 메소드들은 대부분 static 메소드 자바프로그래밍 강원대학교

The Math class (-b + Math.sqrt(b*b - 4*a*c)) / (2*a) 자바프로그래밍 강원대학교

Mathematical Methods in Java Math.sqrt(x) square root Math.pow(x, y) power xy Math.exp(x) ex 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 자바프로그래밍 강원대학교

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()); 자바프로그래밍 강원대학교

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 자바프로그래밍 강원대학교

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! 자바프로그래밍 강원대학교

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! 자바프로그래밍 강원대학교

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! // 클래스 내부에서는 // 클래스이름 생략 가능! 자바프로그래밍 강원대학교

static final Constants(상수) public class Math { . . . public static final double E = 2.7182818284590452354; public static final double PI = 3.14159265358979323846; } double circumference = Math.PI * diameter; // Math 클래스 밖에서 사용 자바프로그래밍 강원대학교

자바프로그래밍 강원대학교

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); 자바프로그래밍 강원대학교

입력 값을 검사하는 법 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")) ... if (id.matches("a*c")) ... if (id.matches("a+c")) ... if (id.matches("a.*c")) ... 정규식 (regular expression) 자바프로그래밍 강원대학교

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

경과 시간 측정하는 법 long start = System.currentTimeMillis(); .... long duration = System.currentTimeMillis()-start; 자바프로그래밍 강원대학교

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

Wrappers 자바프로그래밍 강원대학교

Wrapper 인스턴스 자바프로그래밍 강원대학교

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

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

Base Directories and Subdirectories for Packages com.horstmann.bigjava.Nemeric 객체지향프로그래밍 강원대학교

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

패키지를 사용한 프로그래밍 패키지명 결정 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 객체지향프로그래밍 강원대학교

패키지를 사용한 프로그래밍 소스 파일을 맨 아래 디렉토리에 작성 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 파일 이름 클래스 이름 객체지향프로그래밍 강원대학교