Bag Implementations that Use Arrays Chapter 2 Copyright
Bag Implementations that Use Arrays Chapter 2 Copyright © 2012 by Pearson Education, Inc. All rights reserved
Contents • Using a Fixed-Size Array to Implement the ADT Bag § An Analogy § A Group of Core Methods § Implementing the Core Methods § Testing the Core Methods § Implementing More Methods § Methods That Remove Entries Copyright © 2012 by Pearson Education, Inc. All rights reserved
Contents • Using Array Resizing to Implement the ADT Bag § Resizing an Array § A New Implementation of a Bag • The Pros and Cons of Using an Array to Implement the ADT Bag Copyright © 2012 by Pearson Education, Inc. All rights reserved
Objectives • Implement ADT bag using § a fixed-size array or § an array that expanded dynamically • Discuss advantages and disadvantages of implementations presented Copyright © 2012 by Pearson Education, Inc. All rights reserved
Implement with Fixed Size Array • Define methods specified by previous interface Bag. Interface • Consider use of fixed size array § Not unlike a classroom with exactly 40 desks § Numbered from 0 to 39 Copyright © 2012 by Pearson Education, Inc. All rights reserved
Adding, Removing Students • Adding § Arbitrarily specify consecutively numbered desks be occupied § When desk #39 occupied, room is full • Removing § What to do when someone in middle of sequence is removed? § Move last person there or shift everyone? Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -1 A classroom that contains desks in fixed positions Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -2 UML notation for the class Array. Bag, including the class’s data fields Copyright © 2012 by Pearson Education, Inc. All rights reserved
Group of Core Methods • Do not attempt to define entire class, then test • Instead, identify group of core methods § Define § Test § Then finish rest of class • Note outline, Listing 2 -1 Note: Code listing files must be in same folder as Power. Point files for links to work Copyright © 2012 by Pearson Education, Inc. All rights reserved
Design Decisions • When array bag is partially full § Which array elements should contain entries? • Options § Start at element 0 or element 1 ? § Require elements to be sequential? Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -3 Adding entries to an array that represents a bag, whose capacity is six, until it becomes full Copyright © 2012 by Pearson Education, Inc. All rights reserved
Add Method • Note: entries in no order Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -4 An array of objects contains references to those objects Copyright © 2012 by Pearson Education, Inc. All rights reserved
Method is. Full Copyright © 2012 by Pearson Education, Inc. All rights reserved
Method to. Array Copyright © 2012 by Pearson Education, Inc. All rights reserved
Design Decisions • Should to. Array return the array bag or a copy? § Best to return a copy … think about why. • Temporarily make stub methods for testing at this stage • View test program, Listing 2 -2 § Output Copyright © 2012 by Pearson Education, Inc. All rights reserved
More Methods • Methods is. Empty and get. Current. Size Copyright © 2012 by Pearson Education, Inc. All rights reserved
More Methods • Method get. Frequency. Of Copyright © 2012 by Pearson Education, Inc. All rights reserved
More Methods • Method contains Copyright © 2012 by Pearson Education, Inc. All rights reserved
Methods That Remove Entries • Method clear § Remove all entries • Remove last entry in bag § How could this be more efficient? Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -5 The array bag after a successful search for the string "Alice" Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -6 (a) A gap in the array bag after setting the entry in bag[index] to null; (b) the array after shifting subsequent entries to avoid a gap Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -7 Avoiding a gap in the array while removing an entry Copyright © 2012 by Pearson Education, Inc. All rights reserved
Methods That Remove Entries • Method to remove a specified entry § Assumes presence of private get. Index. Of method Copyright © 2012 by Pearson Education, Inc. All rights reserved
Resizing Array • Need to accommodate more elements than originally specified for bag Figure 2 -8 Resizing an array copies its contents to a larger second array Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -9 (a) An array; (b) two references to the same array; Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -9 (a) An array; (b) two references to the same array; (c) the original array variable now references a new, larger array; Copyright © 2012 by Pearson Education, Inc. All rights reserved
Figure 2 -9 (d) the entries in the original array are copied to the new array; (e) the original array is discarded Copyright © 2012 by Pearson Education, Inc. All rights reserved
FIGURE 2 -10 The effect of the statement my. Array = Arrays. copy. Of (my. Array, 2 * my. Array. length); (a) The argument array; (b) the parameter that references the argument array; (c) a new, larger array that gets the contents of the argument array; (d) the return value that references the new array; (e) the argument variable is assigned the return value Copyright © 2012 by Pearson Education, Inc. All rights reserved
A New Implementation of a Bag • Change name of class to Resizable. Array. Bag, distinguish between implementations. • Remove modifier final from declaration of array bag to enable resizing. • Change the name of constant DEFAULT_CAPACITY to DEFAULT_INITIAL_CAPACITY. Copyright © 2012 by Pearson Education, Inc. All rights reserved
A New Implementation of a Bag • Although unnecessary, change clarifies new purpose of constant, § Bag’s capacity will increase as necessary. § Make same change in default constructor • Change names of constructors to match new class name. Copyright © 2012 by Pearson Education, Inc. All rights reserved
A New Implementation of a Bag • Revise definition of method add to always accommodate new entry. § Method will never return false. • Revise definition of method is. Full to always return false. § A bag will never become full. Copyright © 2012 by Pearson Education, Inc. All rights reserved
A New Implementation of a Bag • New add method § Assumes method ensure. Capacity Copyright © 2012 by Pearson Education, Inc. All rights reserved
End Chapter 2 Copyright © 2012 by Pearson Education, Inc. All rights reserved
- Slides: 34