1
|
- Announcements
- hw4 due tonight
- Exam next Tuesday (sample posted)
- Agenda
- questions
- what’s on the exam?
- collections (Chapter 4)
- arrays
- better Banks and BankAccounts
|
2
|
- Based on course work so far (JOI Chapters 1,2,3)
- Given source code Foo.java to read:
- what does java Foo do?
- find tokens, keywords, identifiers, messages …
- comment on programming conventions
- draw a box-and-arrow picture
- Write simple code using if/else, while, for
- Sample posted on course web page
|
3
|
- java, token, keyword,
identifier, convention, API, message, method, int, double, boolean, if,
else, while, for, declaration, delegation, variable, class, instance,
field, source code, static, scope, client, comment, javadoc, compile,
constructor, final, flow control, object, main, string, syntax,
semantics, this, true, false, unit test, self documenting test, new,
null, void, public, private, pseudocode, …
|
4
|
- Bank, BankAccount
- LinearEquation, Temperatures, PhoneBill
- IntArithmetic, DoubleArithmetic, Exponentiate
- TextFile
- HLine, Box, Screen, VLine, Frame, …
|
5
|
- needs just main
- pseudocode
- create a Terminal
- get base and exponent from user
- create any BigIntegers you need
- send a message to do the computation
- print the result
|
6
|
- More programs manipulate data than do arithmetic
- Library catalog manages a collection of books
- Registrar maintains a database of student records
- EStore has list of Items in Warehouse and in ShoppingCart
- Bank deals with a list of BankAccounts
- Screen manages a set of pixels
- Windows folder holds files (and other folders)
- … list, set, database, group, collection, container ...
|
7
|
- A Collection is an object that stores things
- Collection API must provide ways to
- make an empty container (constructor)
- put things in: put, insert, add, store, ...
- know what’s there:
- get, retrieve, find, lookup, ...
- loop on contents
- throw things out: delete, remove, kill, ...
- Java provides array, List, Map, Set
|
8
|
- Maintains a list of BankAccounts
- Allows banker to create new accounts while the Bank is open
- Keeps track of the total balance of all the accounts in it, and of the
total number of transactions performed by its accounts
|
9
|
- Simplest Java object for managing a list
- array syntax uses square brackets [] several ways
- Bank.java (version 4) uses an array
- Declare field accountList of type “array of BankAccounts”
(line 32)
- private BankAccount[] accountList ;
- Create the array, ready to hold 3 Items (60)
- accountList = new BankAccount[NUM_ACCOUNTS];
|
10
|
- // fill array on lines 66-68 accountList [0] =
new BA( 0, this); accountList [1]
= new BA(100, this); accountList [2] = new BA(200, this);
- Improved BankAccount object has a field to hold a reference to the Bank
it belongs to (more later)
|
11
|
|
12
|
- BA acct = accountList[1];
- atm.println(“Account 1 balance: ” + acct.getBalance());
- prints
- Account 1 balance: 100
|
13
|
- // lines 211-214 in report method
- for (int i = 0; i < NUM_ACCOUNTS; i++) {
- terminal.println( i + “\t” +
accountList[i].getBalance() + … )
- }
- accountList[i] is (a reference to) the Object at position i.
- send a getBalance message to each account in the Bank in succession
- prints 0 0 x
1 100 x
2 200 x
|
14
|
- declare: Type[ ] myArray; // Type
is class name,
// or primitive
- create: myArray = new
Type[size]; // int size
- put: myArray[position] = …;
// int position
- get: Type x =
myArray[position];
myArray[position].message();
- length: myArray.length; // final public field
- range: 0,1,…, myArray.length-1
- read short self documenting program Array.java
|
15
|
- Created with new
- Size is determined at creation time but not at declaration time
- The square brackets provide the special syntax for sending an array a
message
- myArray[i] refers to the value stored at index i (which must be an
integer)
- Stored values may be primitive (in the box) or a reference to an object
(an arrow) but all values must have the same type
|
16
|
- Private fields (all have getter methods)
- int balance;
- int transactionCount;
- Bank issuingBank;
- Constructor
- public BankAccount(int initialBalance, Bank issuingBank)
- {
- this.issuingBank =
issuingBank;
- this.deposit(initialBalance);
- }
|
17
|
- public static void main(String[] args)
- args is a parameter for the main method
- The declaration says it’s an array of String objects
- Its contents are the words on the command line after java ClassName
- Argument array can have any name you wish
- args is conventional
- old C programmers may call it argv
|
18
|
- class CommandLineArgsDemo
- public static void main( String[] args )
- {
- for (int i = 0; i <
args.length; i++){
System.out.println('|'+args[i]+'|');
- }
- }
- %> java CLID message is
“hello, world”
- |message|
- |is|
- |hello, world|
- Experiment with %> java
Bank -e
|
19
|
- banker commands
- create new account
- report on totals
- deal with a customer
- deposit
- withdraw
- get balance
- transfer
|
20
|
- public int deposit(int amount)
- {
- this.incrementBalance(
amount);
- this.countTransaction();
- return amount ;
- }
- public void incrementBalance(int amount)
- {
- balance += amount;
- this.getIssuingBank(). incrementBalance( amount );
- }
|
21
|
|