Chapter 14 A List ADT Review the Java
![Chapter 14 A List ADT Chapter 14 A List ADT](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-1.jpg)
![Review the Java interface construct A Java interface describes a set of methods: no Review the Java interface construct A Java interface describes a set of methods: no](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-2.jpg)
![An ADT specified as an interface /** * This interface specifies the methods for An ADT specified as an interface /** * This interface specifies the methods for](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-3.jpg)
![Implement 2 methods at once • Like the current project, you should begin by Implement 2 methods at once • Like the current project, you should begin by](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-4.jpg)
![Inserting elements almost anywhere You must keep elements together The 1 st must go Inserting elements almost anywhere You must keep elements together The 1 st must go](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-5.jpg)
![Exceptions When programs run, exceptional events occur division by zero invalid input next() when Exceptions When programs run, exceptional events occur division by zero invalid input next() when](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-6.jpg)
![Handling exceptional events Put code that "throws" exceptional event into a try block and Handling exceptional events Put code that "throws" exceptional event into a try block and](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-7.jpg)
![Example may be passed a string that does not represent a valid number Double. Example may be passed a string that does not represent a valid number Double.](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-8.jpg)
![parse. Double public double parse. Double(String s) throws Number. Format. Exception Returns a number parse. Double public double parse. Double(String s) throws Number. Format. Exception Returns a number](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-9.jpg)
![A small piece of Java's large Exception hierarchy Code that throws Runtime. Exception need A small piece of Java's large Exception hierarchy Code that throws Runtime. Exception need](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-10.jpg)
![Examples of Exceptions parse. Double and parse. Int when the String argument does not Examples of Exceptions parse. Double and parse. Int when the String argument does not](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-11.jpg)
![Two Examples of Exceptions String str = null; String str. As. Upper. Case = Two Examples of Exceptions String str = null; String str. As. Upper. Case =](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-12.jpg)
![Throwing your own Exceptions throws and throw are keywords The object after throw must Throwing your own Exceptions throws and throw are keywords The object after throw must](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-13.jpg)
![Testing exception is thrown /** Return a reference to the element at the given Testing exception is thrown /** Return a reference to the element at the given](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-14.jpg)
- Slides: 14
![Chapter 14 A List ADT Chapter 14 A List ADT](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-1.jpg)
Chapter 14 A List ADT
![Review the Java interface construct A Java interface describes a set of methods no Review the Java interface construct A Java interface describes a set of methods: no](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-2.jpg)
Review the Java interface construct A Java interface describes a set of methods: no constructors no instance variables will be implemented by two different classes using different data structures interface Our. List<E> Our. Array. List<E> implements Our. List<E> ch. 14 Our. Linked. List<E> implements Our. List<E> ch. 15
![An ADT specified as an interface This interface specifies the methods for An ADT specified as an interface /** * This interface specifies the methods for](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-3.jpg)
An ADT specified as an interface /** * This interface specifies the methods for a generic List ADT. * Its 7 methods are a subset of the 25 specified in List<E>. */ public interface Our. List<E> { // Return the number of elements currently in the list public int size(); // Insert an element at the specified location // Precondition: insert. Index >= 0 && insert. Index <= size() public void add(int insert. Index, E element) throws Illegal. Argument. Exception; // Get the element stored at a specific index // Precondition: insert. Index >= 0 and insert. Index < size() public E get(int get. Index) throws Illegal. Argument. Exception; // Four other methods are listed in Chapter 14: // set, find, remove. Element. At }
![Implement 2 methods at once Like the current project you should begin by Implement 2 methods at once • Like the current project, you should begin by](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-4.jpg)
Implement 2 methods at once • Like the current project, you should begin by inserting elements, You’ll have different method names @Test public void test. Add. With. Get() { Our. List<String> list = new Our. Array. List<String>(); list. add(0, "A"); list. add(1, "B"); list. add(2, "C"); assert. Equals("A", list. get(0)); assert. Equals("B", list. get(1)); assert. Equals("C", list. get(2)); }
![Inserting elements almost anywhere You must keep elements together The 1 st must go Inserting elements almost anywhere You must keep elements together The 1 st must go](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-5.jpg)
Inserting elements almost anywhere You must keep elements together The 1 st must go at index 0 The 2 nd element can be at index 0 or 1 The 3 rd at index 0, 1, or 2 only data -> |”A”|”B”|”C”|null|null|…|null| You must shift array elements, add(0, “D”) data -> |”D”|”A”|”B”|”C”|null|…|null| You can not leave gaps, , add(6, “No”) This should throw Illegal. Argument. Exception
![Exceptions When programs run exceptional events occur division by zero invalid input next when Exceptions When programs run, exceptional events occur division by zero invalid input next() when](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-6.jpg)
Exceptions When programs run, exceptional events occur division by zero invalid input next() when a Scanner has no more data open a file that does not exist add an element where you shouldn't Both add and get methods claim to throw an Illegal. Argument. Exception Next slide shows when and how to do that, and a test to ensure get(0) from an empty list throws it
![Handling exceptional events Put code that throws exceptional event into a try block and Handling exceptional events Put code that "throws" exceptional event into a try block and](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-7.jpg)
Handling exceptional events Put code that "throws" exceptional event into a try block and add a catch block try { code that cause an exceptional event (throws an exception) } catch(Exception an. Exception) { code that executes when the code in try above throws an exception } If code in the try block causes an exceptional event, program control transfers to the catch block
![Example may be passed a string that does not represent a valid number Double Example may be passed a string that does not represent a valid number Double.](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-8.jpg)
Example may be passed a string that does not represent a valid number Double. parse. Double String number. As. String = "x"; double amount = 0. 0; try { // the next message may "throw an exception" amount = Double. parse. Double(number. As. String); System. out. println("This message may not be sent"); } catch (Number. Format. Exception nfe) { System. out. println(number. As. String + “ not valid"); } System. out. println("amount = " + amount);
![parse Double public double parse DoubleString s throws Number Format Exception Returns a number parse. Double public double parse. Double(String s) throws Number. Format. Exception Returns a number](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-9.jpg)
parse. Double public double parse. Double(String s) throws Number. Format. Exception Returns a number new represented by s Parameters: s - the string to be parsed. Returns: the double value represented by the string argument. Throws: Number. Format. Exception - if the string does not represent a valid number, “ 1 o 0. 0” for example Many methods throw an exception Your methods may too, in fact some must
![A small piece of Javas large Exception hierarchy Code that throws Runtime Exception need A small piece of Java's large Exception hierarchy Code that throws Runtime. Exception need](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-10.jpg)
A small piece of Java's large Exception hierarchy Code that throws Runtime. Exception need not be in a try block, all others must be "tried” Exception IOException n File. Not. Found. Exceptio Illegal. Argument. Exception EOFException Arithmetic. Exception Run. Time. Exception Number. Format. Exception
![Examples of Exceptions parse Double and parse Int when the String argument does not Examples of Exceptions parse. Double and parse. Int when the String argument does not](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-11.jpg)
Examples of Exceptions parse. Double and parse. Int when the String argument does not represent a valid number Integer expressions that result in division by 0 Sending a message to an object when the reference variable has the value of null Indexing exceptions: attempting to access an List element with an index that is out of range or a character in a String outside the range of 0 through length()-1
![Two Examples of Exceptions String str null String str As Upper Case Two Examples of Exceptions String str = null; String str. As. Upper. Case =](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-12.jpg)
Two Examples of Exceptions String str = null; String str. As. Upper. Case = str. to. Upper. Case(); Output Exception in thread "main" java. lang. Null. Pointer. Exception at main(Other. Run. Time. Exceptions. java: 6) List<String> string. List = new Array. List<String>(); string. List. add("first"); String third = string. List. get(1); Output Index. Out. Of. Bounds. Exception: Index: 1, Size: 1 java. util. Array. List. Range. Check(Array. List. java: 491) at java. util. Array. List. get(Array. List. java: 307) at main(Other. Run. Time. Exceptions. java: 10)
![Throwing your own Exceptions throws and throw are keywords The object after throw must Throwing your own Exceptions throws and throw are keywords The object after throw must](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-13.jpg)
Throwing your own Exceptions throws and throw are keywords The object after throw must be an instance of a class that extends the Throwable class public void deposit(double deposit. Amount) throws Illegal. Argument. Exception { // Another way to handle preconditions if (deposit. Amount <= 0. 0) throw new Illegal. Argument. Exception(); balance = balance + deposit. Amount; }
![Testing exception is thrown Return a reference to the element at the given Testing exception is thrown /** Return a reference to the element at the given](https://slidetodoc.com/presentation_image/c796325286df92a951f785242a5e5bc9/image-14.jpg)
Testing exception is thrown /** Return a reference to the element at the given index. * Runtime: O(1) * @returns Reference to object at index if 0 <= index < size() * @throws Illegal. Argument. Exception when index < 0 or index>=size() */ public E get(int index) throws Illegal. Argument. Exception { if (index < 0 || index > size()) BUG throw new Illegal. Argument. Exception("" + index); return (E)data[index]; } Write tests to ensure the exception is thrown watch for bugs! @Test(expected = Illegal. Argument. Exception. class) public void test. Exception. Get. Element. At. Zero. When. Size. Is. Zero() { Our. List<String> list = new Our. Array. List<String>(); // size()==0 so exception should be thrown from the get method list. get(0); // If the exception was not thrown in get, this test fails } RED BAR