Objects First With Java A Practical Introduction Using

Objects First With Java A Practical Introduction Using Blue. J Grouping objects Collections and iterators 1. 0

Main concepts to be covered • • Collections Loops Iterators Arrays Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 2

The requirement to group objects • Many applications involve collections of objects: – Personal organizers. – Library catalogs. – Student-record system. • The number of items to be stored varies. – Items added. – Items deleted. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 3

A personal notebook • Notes may be stored. • Individual notes can be viewed. • There is no limit to the number of notes. • It will tell how many notes are stored. • Explore the notebook 1 project. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 4

Class libraries • Collections of useful classes. • We don’t have to write everything from scratch. • Java calls its libraries, packages. • Grouping objects is a recurring requirement. – The java. util package contains classes for doing this. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 5

import java. util. Array. List; /** *. . . */ public class Notebook { // Storage for an arbitrary number of notes. private Array. List notes; /** * Perform any initialization required for the * notebook. */ public Notebook() { notes = new Array. List(); }. . . } Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 6

Object structures with collections Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 7

Adding a third note Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 8

Features of the collection • It increases its capacity as necessary. • It keeps a private count (size() accessor). • It keeps the objects in order. • Details of how all this is done are hidden. – Does that matter? Does not knowing how prevent us from using it? Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 9

Using the collection public class Notebook { private Array. List notes; . . . public void store. Note(String note) { notes. add(note); Adding a new note } public int number. Of. Notes() { return notes. size(); } Returning the number of notes (delegation). . } Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 10

Index numbering Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 11

Retrieving an object Index validity checks public void show. Note(int note. Number) { if(note. Number < 0) { // This is not a valid note number. } else if(note. Number < number. Of. Notes()) { System. out. println(notes. get(note. Number)); } else { // This is not a valid note number. } } Retrieve and print the note Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 12

Removal may affect numbering Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 13

Review • Collections allow an arbitrary number of objects to be stored. • Class libraries usually contain triedand-tested collection classes. • Java’s class libraries are called packages. • We have used the Array. List class from the java. util package. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 14

Review • Items may be added and removed. • Each item has an index. • Index values may change if items are removed (or further items added). • The main Array. List methods are add, get, remove and size. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 15

Iteration • We often want to perform some actions an arbitrary number of times. – E. g. , print all the notes in the notebook. How many are there? • Most programming languages include loop statements to make this possible. • Java has three sorts of loop statement. – We will focus on its while loop. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 16

While loop pseudo code General form of a while loop while keyword Boolean test while(loop condition) { loop body } Statements to be repeated Pseudo-code example to print every note while(there is at least one more note to be printed) { show the next note } Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 17

A Java example /** * List all notes in the notebook. */ public void list. Notes() { int index = 0; while(index < notes. size()) { System. out. println(notes. get(index)); index++; } } Increment by one Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 18

Iterating over a collection java. util. Iterator Returns an Iterator object Iterator it = my. Collection. iterator(); while(it. has. Next()) { call it. next() to get the next object do something with that object } public void list. Notes() { Iterator it = notes. iterator(); while(it. has. Next()) { System. out. println(it. next()); } } Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 19

The auction project • The auction project provides further illustration of collections and iteration. • Two further points to follow up: – The null value. – Casting. Used to store the result of get into a variable: • String message = (String) notes. get(0); Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 20

Review • Loop statements allow a block of statements to be repeated. • A Java while loop allows the repetition to be controlled by a boolean expression. • Collection classes have special Iterator objects that simplify iteration over the whole collection. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 21

Fixed-size collections • Sometimes the maximum collection size can be pre-determined. • Programming languages usually offer a special fixed-size collection type: an array. • Java arrays can store objects or primitive-type values. • Arrays use a special syntax. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 22

The weblog-analyzer project • Web server records details of each access. • Supports webmaster’s tasks. – – Most popular pages. Busiest periods. How much data is being delivered. Broken references. • Analyze accesses by hour. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 23
![Creating an array object public class Log. Analyzer { private int[] hour. Counts; private Creating an array object public class Log. Analyzer { private int[] hour. Counts; private](http://slidetodoc.com/presentation_image_h2/6a6b4997fdb4040b2f3fd69add1c789f/image-24.jpg)
Creating an array object public class Log. Analyzer { private int[] hour. Counts; private Logfile. Reader reader; Array variable declaration public Log. Analyzer() { hour. Counts = new int[24]; reader = new Logfile. Reader(); }. . . Array object creation } Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 24

The hour. Counts array Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 25

Using an array • Square-bracket notation is used to access an array element: hour. Counts[. . . ] • Elements are used like ordinary variables. – On the left of an assignment: • hour. Counts[hour] =. . . ; – In an expression: • adjusted = hour. Counts[hour] – 3; • hour. Counts[hour]++; Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 26

The for loop • Similar to a while loop. • Often used to iterate a fixed number of times. • Often used to iterate over an array. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 27

For loop pseudo-code General form of a for loop for(initialization; condition; post-body action) { statements to be repeated } Equivalent in while-loop form initialization; while(condition) { statements to be repeated post-body action } Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 28

A Java example for loop version for(int hour = 0; hour < hour. Counts. length; hour++) { System. out. println(hour + ": " + hour. Counts[hour]); } while loop version int hour = 0; while(hour < hour. Counts. length) { System. out. println(hour + ": " + hour. Counts[hour]); hour++; } Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 29

Review • Arrays are appropriate where a fixedsize collection is required. • Arrays use special syntax. • For loops offer an alternative to while loops when the number of repetitions is known. • For loops are often used to iterate over arrays. Objects First with Java - A Practical Introduction using Blue. J, © David J. Barnes, Michael Kölling 30
- Slides: 30