Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 101 CS110 Lecture 10 Thursday, February 26 2004 Announcements –hw4 due tonight –Exam next Tuesday (sample posted) Agenda –questions –what’s on.

Similar presentations


Presentation on theme: "Lecture 101 CS110 Lecture 10 Thursday, February 26 2004 Announcements –hw4 due tonight –Exam next Tuesday (sample posted) Agenda –questions –what’s on."— Presentation transcript:

1 Lecture 101 CS110 Lecture 10 Thursday, February 26 2004 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 Lecture 102 Exam 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

3 Lecture 103 Vocabulary 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 Lecture 104 Applications Bank, BankAccount LinearEquation, Temperatures, PhoneBill IntArithmetic, DoubleArithmetic, Exponentiate TextFile HLine, Box, Screen, VLine, Frame, …

5 Lecture 105 hw4 - 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

6 Lecture 106 Collections 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 Lecture 107 Collections 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 Lecture 108 A 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

9 Lecture 109 Array 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 Lecture 1010 An 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)

11 Lecture 1011 boxes and arrows for arrays aList BA[]; declares array of BA (line 32) 0: BankAccount[] 1: 2: Bank account List: 0: BankAccount[] 1: 2: BankAccount BankAccount[] Bank account List: null Bank account List: aList = new BA[3]; creates array object (60) BankAccount[] aList[0] =new BA(); fills array object (66-)

12 Lecture 1012 Seeing what’s in an array BA acct = accountList[1]; atm.println(“Account 1 balance: ” + acct.getBalance()); prints Account 1 balance: 100

13 Lecture 1013 looping over an array // 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 prints00 x 1100 x 2 200 x \t is tab

14 Lecture 1014 array summary 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 Lecture 1015 arrays 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 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 Lecture 1016 Improved 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); }

17 Lecture 1017 Command line arguments in Java 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 Lecture 1018 Command line arguments in Java 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 Lecture 1019 Improved Bank banker commands –create new account –report on totals –deal with a customer deposit withdraw get balance transfer

20 Lecture 1020 Bank 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 Lecture 1021 A Bank object and its fields Bank atm: account List: balance: transaction Count: BankAccount[] Terminal balance: int transaction Count: issuing Bank: int Bank BankAccount 300 4 bankName: BankAccount[] 0: 1: 2: int Terminal String “River Bank” 600 9 balance: int transaction Count: issuing Bank: int Bank BankAccount 200 3 balance: int transaction Count: issuing Bank: int Bank BankAccount 100 2


Download ppt "Lecture 101 CS110 Lecture 10 Thursday, February 26 2004 Announcements –hw4 due tonight –Exam next Tuesday (sample posted) Agenda –questions –what’s on."

Similar presentations


Ads by Google