Java Programming, 2E Introductory Concepts and Techniques Chapter 4 Decision Making and Repetition with Reusable Objects Objectives • Design a program using methods • Code a selection structure to make decisions in code • Describe the use of the logical AND, OR, and NOT operators • Define exceptions and exception handling Chapter 4: Decision Making and Repetition with Reusable Objects 2 Objectives • Code a try statement and a catch statement to handle exceptions • Create a user-defined method • Code a repetition structure using the while statement • Write a switch statement to test for multiple values in data Chapter 4: Decision Making and Repetition with Reusable Objects 3 Objectives • Format numbers using a pattern and the format() method • Construct a Color object • Use a Checkbox and a CheckboxGroup in the user interface Chapter 4: Decision Making and Repetition with Reusable Objects 4 Introduction • Control structures alter the sequential execution of code – Selection structure – Repetition structure • User-defined methods break tasks into reusable sections of code • Exception handling in Java allows for the testing of valid and accurate input Chapter 4: Decision Making and Repetition with Reusable Objects 5 The Sales Commission Program • Calculate sales commission for agents in a travel agency • Coded as a console application and an applet • Input – The user chooses from three types of commission codes • The commission code identifies the type of sale and the commission rate – The user enters a sales amount • Calculate commission and display output Chapter 4: Decision Making and Repetition with Reusable Objects 6 Chapter 4: Decision Making and Repetition with Reusable Objects 7 Program Development • Problem analysis – Each user decision corresponds to a program task – Develop and test each task before adding it to the program • Design the solution – Design storyboards for the two user interfaces • Program design – Design a flowchart consisting of required methods – Write related pseudocode for each method • Validate Design Chapter 4: Decision Making and Repetition with Reusable Objects 8 Chapter 4: Decision Making and Repetition with Reusable Objects 9 Coding the Program • Code the program using program stubs – Stubs are incomplete portions of code that serve as a template or placeholder for later code – Stubs allow ease in debugging through incremental compilation and testing • Import java.swing.JOptionPane • Import java.text.DecimalFormat – Formats decimal output into Strings • Declare variables • Compile and test the program stub Chapter 4: Decision Making and Repetition with Reusable Objects 10 Coding the Program Chapter 4: Decision Making and Repetition with Reusable Objects 11 Writing Methods • A program with modules allows for clarity, reusability, and refinement • The code for each module can be separated into programmer-defined methods • The main() method transfers execution to the methods through a call statement • The called method returns control to its caller with the return statement or the ending brace – The return statement returns any required data back to the calling method Chapter 4: Decision Making and Repetition with Reusable Objects 12 Chapter 4: Decision Making and Repetition with Reusable Objects 13 The if…else Statement • Single: line 29, line 30 • Block: lines 15-26, lines 19-20, lines 23-24 • Nested: lines 17-25, lines 29-30 Chapter 4: Decision Making and Repetition with Reusable Objects 14 Chapter 4: Decision Making and Repetition with Reusable Objects 15 Testing with an if statement • Testing a single condition – if (answer == null) – if (!done) • Testing multiple conditions – if ((gender == “male”) && (age >= 18)) – if ((age < 13) || (age > 65)) – AND and OR expressions evaluate the right operand only if the left operand is not sufficient to decide the condition Chapter 4: Decision Making and Repetition with Reusable Objects 16 Exception Handling • An exception is an event resulting from an erroneous situation which disrupts normal program flow • Exception handling is the concept of planning for possible exceptions by directing the program to deal with them gracefully, without terminating • Two kinds of exceptions – Run-time – Checked • The compiler checks each method to ensure each method has a handler Chapter 4: Decision Making and Repetition with Reusable Objects 17 Handling Exceptions • The try statement identifies a block of statements that may potentially throw an exception • The throw statement transfers execution from the method that caused the exception to the handler – Transfers execution to the catch statement if the throw is placed within a try statement • The catch statement identifies the type of exception being caught and statements to describe or fix the error • The finally statement is optional and is always executed regardless of whether an exception has taken place – Placed after the catch statement Chapter 4: Decision Making and Repetition with Reusable Objects 18 Chapter 4: Decision Making and Repetition with Reusable Objects 19 Chapter 4: Decision Making and Repetition with Reusable Objects 20 Catch an exception Throw an exception Chapter 4: Decision Making and Repetition with Reusable Objects 21 Testing methods • Compile the program after coding each method and call statement • Run the program with correct input • Run the program to test the exception handling with invalid input – Alphabetic data – Negative values – Null or zero values • Verify that the user is allowed to reenter data • Verify the program closes correctly Chapter 4: Decision Making and Repetition with Reusable Objects 22 Repetition Structure Chapter 4: Decision Making and Repetition with Reusable Objects 23 The getSales() method Chapter 4: Decision Making and Repetition with Reusable Objects 24 The getCode() method Chapter 4: Decision Making and Repetition with Reusable Objects 25 The Case Structure • A type of selection structure that allows for more than two choices when the condition is evaluated • Used when there are many possible, valid choices for user input • The code evaluates the user choice with a switch statement and looks for a match in each case statement • Each case statement contains a ending break statement which forces exit of the structure Chapter 4: Decision Making and Repetition with Reusable Objects 26 Chapter 4: Decision Making and Repetition with Reusable Objects 27 Arguments and Parameters • When a method is called, the calling method sends arguments; the called method accepts the values as parameters • Different but related identifier names for the arguments and the parameters should be used for good program design – The variables are only visible in their respective methods • Arguments and parameters for a called method and the calling statement must be of the same number, order, and data type Chapter 4: Decision Making and Repetition with Reusable Objects 28 The getComm() Method Chapter 4: Decision Making and Repetition with Reusable Objects 29 Formatting Numeric Output • The DecimalFormat class formats decimal numbers into Strings for output • Supports different locales, leading and trailing zeros, prefixes/suffixes, and separators • The argument is a pattern, which determines how the formatted number should be displayed Chapter 4: Decision Making and Repetition with Reusable Objects 30 Chapter 4: Decision Making and Repetition with Reusable Objects 31 The output() method Chapter 4: Decision Making and Repetition with Reusable Objects 32 The finish() method Exits system when program completes successfully Chapter 4: Decision Making and Repetition with Reusable Objects 33 Moving to the Web • Create the host document to execute the applet Chapter 4: Decision Making and Repetition with Reusable Objects 34 Coding an Applet Stub • Enter general block comments • Import java.awt.*, java.applet.*, java.awt.event.*, and java.text.DecimalFormat • Implement the ItemListener interface to listen for the user choice on a Checkbox • Code the method headers for the init() and the itemStateChanged() method – itemStateChanged() is an ItemListener method to process user choices • Declare variables and construct a Color object Chapter 4: Decision Making and Repetition with Reusable Objects 35 Chapter 4: Decision Making and Repetition with Reusable Objects 36 Making Decisions in Applets • Use a CheckboxGroup to allow user choices Chapter 4: Decision Making and Repetition with Reusable Objects 37 Constructing Components • Construct Labels for input and output • Construct a CheckboxGroup for user options Chapter 4: Decision Making and Repetition with Reusable Objects 38 Adding Components • Add Labels and CheckboxGroup to the applet • Add an ItemListener to each Checkbox component with the addItemListener() method • Add color with the setForeground() and the setBackground() methods • Set the insertion point with the requestFocus() method Chapter 4: Decision Making and Repetition with Reusable Objects 39 The init() Method Chapter 4: Decision Making and Repetition with Reusable Objects 40 Handling Exceptions • Check for valid data when the itemStateChanged() method is triggered, which happens when the user clicks an option button Chapter 4: Decision Making and Repetition with Reusable Objects 41 The getSales() Method • Parse the data from the TextField and return a valid sales amount or throw an exception to the init() method Chapter 4: Decision Making and Repetition with Reusable Objects 42 The getCode() Method • Initialize the code to 0 • Use nested if statements to assess the boolean state of the Checkboxes and return the code to init() Chapter 4: Decision Making and Repetition with Reusable Objects 43 The getComm() Method • Identical to the application • Return the commission value to init() Chapter 4: Decision Making and Repetition with Reusable Objects 44 The getOutput() Method • Send output to the Label using setText() • Construct and use DecimalFormat, using the special character # to make a leading zero absent Chapter 4: Decision Making and Repetition with Reusable Objects 45 The paint() Method • Display a graphic Chapter 4: Decision Making and Repetition with Reusable Objects 46 Testing the Applet • Compile the applet • Execute the applet using AppletViewer • Test exception handling by clicking an option button and then typing invalid data into the text box • Verify the error message and the data clearing mechanisms • Test all options with valid data • Test in a browser window • Document the applet interface and source code Chapter 4: Decision Making and Repetition with Reusable Objects 47 Summary • Repetition Structures – while statement • Selection Structure – if…else statement – switch and case statements • Exception handling – Try and catch statements • Modularity – Smaller segments of reusable code through methods – Program clarity and refinement Chapter 4: Decision Making and Repetition with Reusable Objects 48 Summary • Program stubs – Incremental testing • CheckboxGroup – User options for user interfaces • Responding to user options – ItemListener, addItemListener(), itemStateChanged() • Data validation and error messages • Testing invalid data Chapter 4: Decision Making and Repetition with Reusable Objects 49 Java Programming, 2E Introductory Concepts and Techniques Chapter 4 Complete