Title: CS110 Lecture 10 Thursday, February 26 2004
1CS110 Lecture 10Thursday, February 26 2004
- Announcements
- hw4 due tonight
- Exam next Tuesday (sample posted)
- Agenda
- questions
- whats on the exam?
- collections (Chapter 4)
- arrays
- better Banks and BankAccounts
2Exam preview
- 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
3Vocabulary
- 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,
4Applications
- Bank, BankAccount
- LinearEquation, Temperatures, PhoneBill
- IntArithmetic, DoubleArithmetic, Exponentiate
- TextFile
- HLine, Box, Screen, VLine, Frame,
5hw4 - Exponentiate
- 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
6Collections
- 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 ...
7Collections
- 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 whats there
- get, retrieve, find, lookup, ...
- loop on contents
- throw things out delete, remove, kill, ...
- Java provides array, List, Map, Set
8A better Bank (Version 4)...
- 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
9Array
- 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 BankAccountNUM_ACCOUNTS
10An array for 3 BankAccounts
- // 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)
11boxes and arrows for arrays
Bank
aList BA declares array of BA (line 32)
accountList
BankAccount
null
aList new BA3 creates array object (60)
BankAccount
Bank
null
accountList
BankAccount
aList0 new BA() fills array
object (66-)
null
null
BankAccount
BankAccount
Bank
accountList
BankAccount
BankAccount
BankAccount
12Seeing whats in an array
- BA acct accountList1
- atm.println(Account 1 balance
acct.getBalance()) - prints
- Account 1 balance 100
13looping over an array
- // lines 211-214 in report method
- for (int i 0 i lt NUM_ACCOUNTS i)
- terminal.println( i \t accountListi.ge
tBalance() ) -
- accountListi 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
\t is tab
14array summary
- declare Type myArray // Type is class name,
// or primitive - create myArray new Typesize // int size
- put myArrayposition // int
position - get Type x myArrayposition
myArrayposition.message() - length myArray.length // final public
field - range 0,1,, myArray.length-1
- read short self documenting program Array.java
15arrays are Objects
- 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 - myArrayi 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
16Improved BankAccount
- 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)
17Command line arguments in Java
- public static void main(String args)
- args is a parameter for the main method
- The declaration says its 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
18Command line arguments in Java
- class CommandLineArgsDemo
- public static void main( String args )
-
- for (int i 0 i lt args.length i)
System.out.println(''argsi'') -
-
- gt java CLID message is hello, world
- message
- is
- hello, world
- Experiment with gt java Bank -e
19Improved Bank
- banker commands
- create new account
- report on totals
- deal with a customer
- deposit
- withdraw
- get balance
- transfer
20Bank and BankAccount cooperate
- public int deposit(int amount)
-
- this.incrementBalance( amount)
- this.countTransaction()
- return amount
-
- public void incrementBalance(int amount)
-
- balance amount
- this.getIssuingBank().
incrementBalance( amount )
this BankAccount asks the Bank it is in to update
its own balance field
21 A Bank object and its fields
Bank
bankName
River Bank
atm
balance
600
transactionCount
9
accountList
BankAccount