Power Java 제13장 패키지(Package)
이번 장에서 학습할 내용 패키지는 연관된 클래스들을 묶는 기법입니다. 패키지의 개념 패키지로 묶는 방법 패키지 사용 기본 패키지 유틸리티 패키지
패키지란? 패키지(package) : 클래스들을 묶은 것 자바 라이브러리도 패키지로 구성 (예) java.net 패키지– 네트워크 관련 라이브러리
패키지의 장점 ① 관련된 클래스들을 쉽게 파악 ② 원하는 클래스들을 쉽게 찾을 수 있다. ③ 패키지마다 이름 공간을 따로 갖기 때문에 같은 클래스 이름을 여러 패키지가 사용 ④ 패키지별로 접근에 제약을 가할 수 있다.
Order 라는 클래스는 business 패키지에 속한다. 패키지 생성하기 package business; // 패키지 선언 public class Order { ... } Order 라는 클래스는 business 패키지에 속한다. Q: 만약 패키지 문을 사용하지 않은 경우에는 어떻게 되는가? A: 디폴트 패키지(default package)에 속하게 된다.
패키지의 이름 인터넷 도메인 이름을 역순으로 사용한다. 예를 들면 com.company.test라는 패키지 이름은 도메인 이름 company.com에서의 test라는 프로젝트를 의미한다.
소스 파일과 클래스 파일의 위치 Q: 만약 패키지문이 있는 경우에 소스 파일과 클래스 파일의 위치는? A:패키지 이름이 디렉토리가 되고 그 아래에 저장된다. package business; public class Order { ... }
클래스 경로 $ export CLASSPATH= “./BankDir:.” // in UNIX Q: 우리가 실행시키고 싶은 클래스 파일이 다른 디렉토리에 있는 경우에도 실행시킬 수 있을까? A: 실행이 가능하다. 다만 클래스 경로를 설정하여야 한다. 자바 가상 기계가 클래스 파일을 찾는 경로를 클래스 경로(class path)라고 한다. $ export CLASSPATH= “./BankDir:.” // in UNIX 탐색 순서 $ java –classpath “./Pack:.” BankTester // in UNIX
중간 점검 문제 패키지를 사용하는 이점은 무엇인가? 관련된 클래스들을 묶을 수 있고, 기능에 따라 클래스를 패키지로 분류할 수 있고, 같은 클래스 이름을 여러 패키지가 사용할 수 있고, 패키지 별로 접근에 제약을 가할 수 있다. 2. 패키지 이름을 짓는 일반적인 관례는 무엇인가? 패키지의 이름은 일반적으로 소문자만을 사용 3. 인터넷 도메인 이름이 hu.ac.kr이라면 권장되는 패키지 이름은? kr.ac.hu.프로젝트이름 4. 만약 패키지의 이름이 company.project와 같다면 소스 파일이 저장되는 디렉토리는? company.project 디렉토리에 저장 5. 만약 Server라는 클래스를 project.server 패키지로 만들고 싶으면 어떤 문장을 Server.java에 추가하여야 하는가? package문을 사용 6. 소스 파일과 클래스 파일을 분리하려면 어떻게 하면 되는가? 디렉토리의 상대적인 구조를 같게 한다.
패키지를 사용하는 방법 클래스에 패키지 이름을 붙여서 참조한다. 개별 클래스를 import한다. business.Order myOrder = new business.Order(); import business.Order; // business 패키지 안의 Order 클래스 포함 import business.*; // 패키지 전체 포함
주의할점!! Q: java.awt.* 문장은 java.awt.font 패키지를 포함하는가? A: java.awt.font 패키지는 java.awt 패키지 안에 포함되지 않는다. 만약 java.awt.font의 멤버와 java.awt의 멤버를 동시에 사용하려면 다음과 같이 따로 따로 포함하여야 한다. import java.awt.*; import java.awt.font.*;
현 디렉토리 ~kky/JavaT/Lect/Pack 소스파일 BankTester.java import BankDir.*; 패키지를 위한 기본 디렉토리와 하위 디렉토리 현 디렉토리 ~kky/JavaT/Lect/Pack 소스파일 BankTester.java import BankDir.*; 패키지 BankDir - Bank.java, BankAccount.java - Bank.class, BankAccount.class $ export CLASSPATH=“./BankDir:.” or $ java –classpath “./BankDir:.” BankTester Pack BankTester.java import BankDir.* BankDir package BankDir package BankDir Bank.java BankAccount.java
Jar(java ARchive) jar 압축 파일 만들기 형태 옵션 자바 압축 파일을 만들고, 압축을 풀어준다. jar [ option ] [ manifest-file ] destination input-file [ input-files ] 예) $ jar cvfm B.jar mymanifest *.class 옵션 c : 새로운 압축 파일을 만든다. t : 압축 파일의 내용을 화면에 보여준다. x <파일> : 파일의 압축을 푼다. f : 아카이브 파일 이름을 지정한다. m : manifest 파일을 포함한다. u : 기존의 jar 파일의 내용을 업데이트한다. v : 명령 프롬프트에 상세정보를 표시한다.
Jar(java ARchive) 매니페스트(manifest) 파일 매니페스트 파일은 JAR 파일에 들어 있는 파일의 정보를 기술한 파일이다. 매니페스트 파일을 지정하지 않고 아카이브를 생성하게 되면, 표준 매니페스트 파일이 포함된다. 아래와 같은 내용의 매니페스트 파일을 작성하고, JAR 파일에 포함시켜두면, JAR 파일을 직접 실행할 수 가 있다. main 메소드가 있는 클래스명을 매니페스트 파일에 적어주는 것이다. 클래스명을 적을때는, 클래스명 앞에서는 스페이스가 반드시 있어야 하며, 뒤에는 개행문자가 필요하다. $ jar tvf B.jar -> META-INF/ -> META-INF/MANIFEST.MF -> Bank.class -> BankAccount.class -> BankTester.class main-class: BankTester <Enter> mymanifest $ java –jar B.jar // jar 파일 실행하기
중간 점검 문제 1. graphics 패키지 안에 포함된 Rectangle이라는 클래스를 사용하기 위한 3가지의 방법을 말하라. 클래스에 패키지 이름을 붙여서 참조 개별 클래스를 import 전체 패키지를 import 2. 패키지 이름은 어떻게 지어야 하는가?? 패키지의 이름은 일반적으로 소문자만을 사용
자바에서 지원하는 패키지
자바 패키지 구조 java applet awt beans io lang math net nio rmi security sql text util beancontext spi color datatransfer dnd event font geom im image print spi renderable channels charset spi annotation instrument management ref reflect activation dgc registry server acl interfaces cert spec concurrent jar logging prefs regex spi zip atomic locks
Java.lang 패키지 Import 문을 사용할 필요가 없이 기본적으로 포함된다. Object 클래스: 기초적인 메소드를 제공하는 모든 클래스의 조상 클래스 Math 클래스: 각종 수학 함수들을 포함하는 클래스 Wrapper 클래스: Integer와 같이 기초 자료형을 감싸서 제공하는 랩퍼 클래스들(Double, Character, Boolean …) String 클래스, StringBuffer 클래스: 문자열을 다루는 클래스 System 클래스: 시스템 정보를 제공하거나 입출력을 제공하는 클래스 Thread 클래스: 스레드 기능을 제공하는 클래스 Class 클래스: 클래스에 대한 정보를 얻기 위한 클래스 11 장에서 이미 설명함
Math 클래스
Math 클래스
예제
Class 클래스 Class 객체는 실행 중인 클래스를 나타낸다.
System 클래스 System 클래스는 실행 시스템과 관련된 속성과 메소드를 제공
System 클래스
Wrapper 클래스 기초 자료형을 객체로 포장시켜주는 클래스 (예) Integer obj = new Integer(10);
Integer 클래스가 제공하는 메소드
문자열 <-> 기초 자료형
박싱과 언박싱 박싱(boxing) 기본 데이터 타입을 Wrapper 클래스로 변환하는 것 언박싱(unboxing) 반대의 경우를 언박싱이라고 한다. 박싱 (boxing) Integer 객체 10 int Integer ten = new Integer(10); 10 언박싱 (boxing) int i = ten.intValue();
자동포장(auto-boxing)& 자동비포장(auto-unboxing) JDK 5.0 이상부터 지원 Wrapper 객체와 기초 자료형 사이의 변환을 자동으로 수행한다. Integer box = new Integer(10); System.out.println(box + 1); // box는 자동으로 int형으로 변환 // 자동 비포장 // JDK5.0이상에서 Integer ten = 10; // 자동 박싱 int i = ten; // 자동 언박싱 참조(뒷 페이지) : ArrayList(배열리스트) 클래스는 제네릭(generic) 클래스로 동적 배열임!
The ArrayList class manages a sequence of objects import java.util.ArrayList; 배열 리스트(Array Lists) The ArrayList class manages a sequence of objects Can grow and shrink as needed !!!!! ArrayList class supplies methods for many common tasks, such as inserting and removing elements !!! The ArrayList class is a generic class(범용클래스): ArrayList<T> collects objects of type T: ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); accounts.add(new BankAccount(1001)); accounts.add(new BankAccount(1015)); accounts.add(new BankAccount(1022)); size method yields number of elements 초기는 크기 0, add 함에 따라 증가 기본 자료형을 매개변수로 사용불가 wrap
Array Lists 클래스의 메소드 add(Object o) 객체 매개변수(o)를 목록에 추가한다. remove(int index) index 매개변수로 지정한 위치에 있는 객체를 제거한다. contains(Object o) 객체 매개변수 o에 매치되는 것이 있으면 ‘참’을 리턴한다. isEmpty() 목록에 아무 원소도 없으면 ‘참’을 리턴한다. indexOf(Object o) 객체 매개변수(o)의 인덱스 또는 -1을 리턴한다. size() 현재 목록에 들어있는 원소의 개수를 리턴한다. get(int index) 주어진 index 매개변수 위치에 있는 객체를 리턴한다.
Use get method ( [ ] 사용불가) Index starts at 0 배열 리스트 요소 얻기 Use get method ( [ ] 사용불가) Index starts at 0 BankAccount anAccount = accounts.get(2); // gets the third element of the array list Bounds error if index is out of range Most common bounds error: int i = accounts.size(); anAccount = accounts.get(i); // Error //legal index values are 0. . .i-1 Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
set overwrites an existing value 배열 리스트 요소 추가하기 set overwrites an existing value BankAccount anAccount = new BankAccount(1729); accounts.set(2, anAccount); add adds a new value before the index (중간에 삽입할 때) accounts.add(i, a) Continued Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Adding Elements (cont.)
요소 제거하기 : 배열 리스트 remove removes an element at an index 요소 제거하기 : 배열 리스트 remove removes an element at an index accounts.remove(i)
ArrayListTester.java Continued 01: import java.util.ArrayList; 02: 03: /** 04: This program tests the ArrayList class. 05: */ 06: public class ArrayListTester 07: { 08: public static void main(String[] args) 09: { 10: ArrayList<BankAccount> accounts 11: = new ArrayList<BankAccount>(); 12: accounts.add(new BankAccount(1001)); 13: accounts.add(new BankAccount(1015)); 14: accounts.add(new BankAccount(1729)); 15: accounts.add(1, new BankAccount(1008)); 16: accounts.remove(0); 17: 18: System.out.println("Size: " + accounts.size()); 19: System.out.println("Expected: 3"); 20: BankAccount first = accounts.get(0); Continued
ArrayListTester.java (cont.) 21: System.out.println("First account number: " 22: + first.getAccountNumber()); 23: System.out.println("Expected: 1008"); 24: BankAccount last = accounts.get(accounts.size() - 1); 25: System.out.println("Last account number: " 26: + last.getAccountNumber()); 27: System.out.println("Expected: 1729"); 28: } 29: } Output: Size: 3 Expected: 3 First account number: 1008 Expected: 1008 Last account number: 1729 Expected: 1729
BankAccount.java Continued 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: @param anAccountNumber the account number for this account 10: */ 11: public BankAccount(int anAccountNumber) 12: { 13: accountNumber = anAccountNumber; 14: balance = 0; 15: } 16: 17: /** 18: Constructs a bank account with a given balance 19: @param anAccountNumber the account number for this account 20: @param initialBalance the initial balance 21: */ Continued
BankAccount.java (cont.) 22: public BankAccount(int anAccountNumber, double initialBalance) 23: { 24: accountNumber = anAccountNumber; 25: balance = initialBalance; 26: } 27: 28: /** 29: Gets the account number of this bank account. 30: @return the account number 31: */ 32: public int getAccountNumber() 33: { 34: return accountNumber; 35: } 36: 37: /** 38: Deposits money into the bank account. 39: @param amount the amount to deposit 40: */ 41: public void deposit(double amount) 42: { 43: double newBalance = balance + amount; 44: balance = newBalance; 45: } Continued Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
BankAccount.java (cont.) 46: 47: /** 48: Withdraws money from the bank account. 49: @param amount the amount to withdraw 50: */ 51: public void withdraw(double amount) 52: { 53: double newBalance = balance - amount; 54: balance = newBalance; 55: } 56: 57: /** 58: Gets the current balance of the bank account. 59: @return the current balance 60: */ 61: public double getBalance() 62: { 63: return balance; 64: } 65: 66: private int accountNumber; 67: private double balance; 68: } Continued
BankAccount.java (cont.) Output: Size: 3 Expected: 3 First account number: 1008 Expected: 1008 Last account number: 1729 Expected: 1729
How do you construct an array of 10 strings? An array list of strings? 자습 8.3 How do you construct an array of 10 strings? An array list of strings? Answer: 배열 new String[10]; 배열 리스트 new ArrayList<String>(); Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
자습 8.4 What is the content of names after the following statements? ArrayList<String> names = new ArrayList<String>(); names.add("A"); names.add(0, "B"); names.add("C"); names.remove(1); Answer: names contains the strings "B" and "C" at positions 0 and 1
기본 자료형을 객체로 취급하기 위해서는 랩퍼 클래스를 사용하여야 한다. : 랩퍼(Wrappers) 배열 리스트에 기본 자료형을 넣을 수 없다. 기본 자료형을 객체로 취급하기 위해서는 랩퍼 클래스를 사용하여야 한다. : ArrayList<Double> data = new ArrayList<Double>(); data.add(29.95); double x = data.get(0);
자동포장(Auto-boxing)과 자동비포장(auto-unboxing) Auto-boxing: Starting with Java 5.0, conversion between primitive types and the corresponding wrapper classes is automatic. Double d = 29.95; // auto-boxing; same as Double d = new Double(29.95); double x = d; // auto-unboxing; same as double x = d.doubleValue(); Auto-boxing even works inside arithmetic expressions Double e = d + 1; Means: auto-unbox d into a double add 1 auto-box the result into a new Double store a reference to the newly created wrapper object in e
What is the difference between the types double and Double? 자습 8.5 What is the difference between the types double and Double? Answer: double is one of the eight primitive types. Double is a class type. Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
String의 생성과 특징 String - java.lang.String String 클래스는 하나의 스트링만 표현 // 스트링 리터럴로 스트링 객체 생성 String str1 = "abcd"; // String 클래스의 생성자를 이용하여 스트링 생성 char data[] = {'a', 'b', 'c', 'd'}; String str2 = new String(data); String str3 = new String("abcd"); // str2와 str3은 모두 “abcd” 스트링임 생성자 설명 String() 빈 스트링 객체 생성 String(byte[] bytes) 플랫폼의 기본 문자집합을 이용하여 바이트 배열을 디코딩하여 스트링 객체 생성 String(String original) 인자로 주어진 스트링과 똑같은 스트링 객체를 생성 String(StringBuffer buffer) 스트링 버퍼에 포함된 일련의 문자들을 나타내는 스트링 객체 생성
스트링 리터럴과 new String() 스트링 생성 단순 리터럴로 생성, String s = "Hello"; JVM이 리터럴 관리, 응용프로그램 내에서 공유됨 String 객체로 생성, String t = new String("Hello"); 힙에 String 객체 생성 a “Hello” String a = “Hello”; String b = “Java”; String c = “Hello”; String d = new String("Hello"); String e = new String("Java"); String f = new String("Java"); b “Java” c 자바 가상 기계의 스트링 리터럴 테이블 d “Hello” e “Java” f “Java” 힙 메모리
스트링 객체의 주요 특징 스트링 객체는 수정 불가능 ==과 equals() “Hello” s.concat("Java")의 실행 결과 스트링 s는 변경되지않음 String s = new String("Hello"); String t = s.concat("Java"); t “HelloJava”
StringBuffer 클래스 String 클래스는 주로 상수 문자열, 즉 변경이 불가능한 문자열을 나타낸다. StringBuffer와 StringBuilder 클래스는 변경 가능한 문자열을 나타낸다. StringBuffer가 다중 스레드 환경에서 안전함. java.lang.StringBuffer 스트링과 달리 객체 생성 후 스트링 값 변경 가능 append와 insert 메소드를 통해 스트링 조작 StringBuffer 객체의 크기는 스트링 길이에 따라 가변적 StringBuffer sb = new StringBuffer(); // 기본적으로 16바이트의 공간이 할당된다. sb.append("Hello"); // 6바이트가 사용된다.
StringBuffer의 메소드
StringBuffer의 메소드 활용 예 a a p e n c i l a n i c e p e n c i l 6 앞까지 a b StringBuffer sb = new StringBuffer(“a”); sb sb a p e n c i l sb.append(“ pencil”); sb sb.insert(2, “nice”); a n i c e p e n c i l 인덱스 2 인덱스 6 6 앞까지 sb.replace(2, 6, “bad”); sb a b a d p e n c i l 인덱스 0 인덱스 2 2 앞까지 sb.delete(0, 2); sb b a d p e n c i l sb.reverse(); sb l i c n e p d a b int n = sb.length(); n = 10 sb l i c n e p d a b char c = sb.charAt(3); c n
중간 점검 문제 1. 자바에서 정수 10과 Integer(10)은 어떻게 다른가? 2. StringBuffer와 String은 어떻게 다른가? String클래스는 상수 문자열, 즉 변경이 불가능한 문자열을 나타낼 때 사용되고 StringBuffer는 내부적으로 문자열을 저장하는 메모리를 가지고 있어 변경 가능한 문자열을 저장한다.
java.util 패키지 여러 가지 유틸리티 클래스 들을 제공한다. 자바에서 정수 10과 Integer(10)은 어떻게 다른가? 2. StringBuffer와 String은 어떻게 다른가?
Random 클래스
예제 Random rand = new Random(System.currentTimeMillis()); // seed값을 배정하여 생성
Arrays 클래스(정수배열, 실수배열, …,객체배열)
예제
Date 클래스 현재 시각을 나타낸다.
Calendar 클래스 추상 클래스로 날짜와 시간에 대한 정보를 가진다.
예제
StringTokenizer 클래스 문자열을 분석하여서 토큰으로 분리시켜 주는 기능을 제공
예제 토큰분리문자: 공백 문자, 탭 문자 및 캐리지 리턴 문자입니다. 토큰분리문자: 공백 문자, 탭 문자 및 캐리지 리턴 문자입니다. StringTokenizer a = new StringTokenizer("i,love,cat", ",");
StringTokenizer 객체 생성과 문자열 파싱 "name=kitae" 토큰 1 String query = "name=kitae&addr=seoul&age=21"; StringTokenizer st = new StringTokenizer(query, "&"); "addr=seoul" 토큰 2 토큰 3 "age=21" st "name" 토큰 1 "kitae" 토큰 2 StringTokenizer st = new StringTokenizer(query, "&="); 토큰 3 "addr" "seoul" 토큰 4 "age" 토큰 5 토큰 6 "21" StringTokenizer 객체
중간 점검 문제 1. 1에서 1000사이의 난수를 발생하기 위한 문장을 작성하라. Random random = new Random(); System.out.println(random.nextInt(999)+1); // 1~999 2. 현재 날짜를 얻기 위한 문장을 작성하라. Date d = new Date(); System.out.println(d); import java.util.*;
LAB. 1 P. 375, #1 주사위 Simulation program(클래스 Die) 생성자 Die() 메소드 int roll() 메소드 void setValue(int) 메소드 int getValue() String toString() main 메소드 : 주사위를 n번 던저 나오는 값을 출력
import java.util.ArrayList; LAB. 2 : BankAccount 확장 ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); import java.util.ArrayList; Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
import java.util.ArrayList; /** This bank contains a collection of bank accounts. */ public class Bank { Constructs a bank with no bank accounts. public Bank() accounts = new ArrayList<BankAccount>(); } Adds an account to this bank. @param a the account to add public void addAccount(BankAccount a) accounts.add(a); Bank.java Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Gets the sum of the balances of all accounts in this bank. Bank.java /** Gets the sum of the balances of all accounts in this bank. @return the total balance */ public double getTotalBalance() { double total = 0; for (BankAccount a : accounts) total = total + a.getBalance(); } return total; Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Counts the number of bank account whose balance is at Bank.java /** Counts the number of bank account whose balance is at least a given value. @param atLeast the balance required to count an account @return the number of accounts having least the given balance */ public int count(double atLeast) { int matches = 0; for (BankAccount a : accounts) if (a.getBalance() >= atLeast) matches++; // found a match } return matches; Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Finds a bank account with a given number. Bank.java /** Finds a bank account with a given number. @param accountNumber the number to find @return the account with the given number, or null if there is no such account */ public BankAccount find(int accountNumber) { for (BankAccount a : accounts) if (a.getAccountNumber() == accountNumber) // found a match return a; } return null; // no match in the entire array list Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Gets the bank account with the largest balance. /** Gets the bank account with the largest balance. @return the account with the largest balance, or null if the bank has no accounts */ public BankAccount getMaximum() { if (accounts.size() == 0) return null; BankAccount largestYet = accounts.get(0); for (int i = 1; i < accounts.size(); i++) BankAccount a = accounts.get(i); if (a.getBalance() > largestYet.getBalance()) largestYet = a; } return largestYet; Bank.java Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
/** Add an account to the bank. @param accountNumber the account number of this account @param initialBalance the initial balance of this account */ public void addAccount(int accountNumber, double initialBalance) { . . .// account에 add 메소드 이용하여 새 bankAccount 객체추가 } Deposit money into an account. @param accountNumber the account number @param amount the amount to be deposited public void deposit(int accountNumber, double amount) . . . // find 메소드 이용하여 BankAccount 객체 찾은 다음 deposit 호출 Bank.java Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Big Java by Cay Horstmann Bank.java /** Withdraw money from an account. @param accountNumber the account number @param amount the amount to be withrawn */ public void withdraw(int accountNumber, double amount) { . . . // find 메소드 이용하여 BankAccount 객체 찾은 다음 withdraw 호출 } Get an account balance @return the account balance public double getBalance(int accountNumber) . . . // find 메소드 이용하여 BankAccount 객체 찾은 다음 getBalance 호출 private ArrayList<BankAccount> accounts; Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Big Java by Cay Horstmann /** A bank account has a balance that can be changed by deposits and withdrawals. */ public class BankAccount { Constructs a bank account with a zero balance. @param anAccountNumber the account number for this account public BankAccount(int anAccountNumber) accountNumber = anAccountNumber; balance = 0; } Constructs a bank account with a given balance. @param initialBalance the initial balance public BankAccount(int anAccountNumber, double initialBalance) balance = initialBalance; Gets the account number of this bank account. @return the account number public int getAccountNumber() return accountNumber; BankAccount.java Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
Big Java by Cay Horstmann /** Deposits money into the bank account. @param amount the amount to deposit */ public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } Withdraws money from the bank account. @param amount the amount to withdraw public void withdraw(double amount) double newBalance = balance - amount; Gets the current balance of the bank account. @return the current balance public double getBalance() return balance; private int accountNumber; private double balance; BankAccount.java Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved.
BankTester.java /** This program tests the Bank class. */ public class BankTester { public static void main(String[] args) Bank bank = new Bank(); int dannysAccount = 0; int sallysAccount = 1; int harrysAccount = 2; int jerrysAccount = 3; bank.addAccount(dannysAccount, 1000); bank.addAccount(sallysAccount, 2000); bank.addAccount(harrysAccount, 3000); bank.addAccount(jerrysAccount, 10000);
bank.deposit(dannysAccount, 200); bank.withdraw(sallysAccount, 500); bank.deposit(harrysAccount, 1000); bank.withdraw(jerrysAccount, 7000); System.out.println( "Danny's Account Balance: " + bank.getBalance(dannysAccount)); System.out.println("Expected: 1200"); "Sally's Account Balance: " + bank.getBalance(sallysAccount)); System.out.println("Expected: 1500"); "Harry's Account Balance: " + bank.getBalance(harrysAccount)); System.out.println("Expected: 4000"); "Jerry's Account Balance: " + bank.getBalance(jerrysAccount)); System.out.println("Expected: 3000"); }
Q & A