Chapter 3 - Carl Rebman Associate Professor of Information

Download Report

Transcript Chapter 3 - Carl Rebman Associate Professor of Information

Java Programming, 3e
Concepts and Techniques
Chapter 3
Manipulating Data
Using Methods
Chapter Objectives
• Identify, declare, and use primitive data
types
• Use the System class to create data
streams
• Instantiate the BufferedReader class in
code
• Use the readLine() method to handle user
input
Chapter 3: Manipulating Data Using Methods
2
Chapter Objectives
• Convert strings to numbers using the
parse() method
• Use assignment statements to store data
with proper identifiers
• Use operators and parentheses correctly
in numeric and conditional expressions
• Round an answer using the round()
method of the Math class
Chapter 3: Manipulating Data Using Methods
3
Chapter Objectives
• Use Swing components to build the GUI
for a Swing program
• Use the exit() method to close a Swing
program
• Implement an ActionListener to handle
events
• Add interface components to an applet
Chapter 3: Manipulating Data Using Methods
4
Chapter Objectives
• Use the init() and paint() methods to load
the applet interface
• Use the actionPerformed() method
• Run and test an interactive applet
• Manage Java source code files and Java
class files
Chapter 3: Manipulating Data Using Methods
5
Introduction
• Data are collections of raw facts or figures
• A program performs operations on input
data to output information
• Input data can come from a variety of
sources
– The program itself
– Users of the program
– External files
Chapter 3: Manipulating Data Using Methods
6
The Body Mass Index Calculator
• An interactive program
– Accepts the weight and height from the user
– Calculates the BMI to gauge total body fat
– Displays the result
• Three versions
– Input/Output using the command prompt
– Input/Output using dialog boxes
– Web environments use an applet interface
Chapter 3: Manipulating Data Using Methods
7
(a) console application in a command prompt window
(b) console application using dialog boxes
(c) applet
Chapter 3: Manipulating Data Using Methods
8
Chapter 3: Manipulating Data Using Methods
9
Problem Analysis
• Convert user input to metric measurements
• Calculate the BMI
• Display the result
Chapter 3: Manipulating Data Using Methods
10
Design the Solution
• Design the three kinds of user interfaces
with storyboards
• Design the logic of the program
– Use pseudocode for sequential flow for all
programs
– Use an event diagram for the applet
• Validate the design
– Compare the program design with the original
requirements
Chapter 3: Manipulating Data Using Methods
11
Chapter 3: Manipulating Data Using Methods
12
Coding the Program
• Import the java.io package
– Provides classes to support system input and
output
• Add a throws IOException clause to the
method header
– Warns the compiler that the possibility of input
or output errors exists
– Gives the program the opportunity to handle
input or output errors during run-time without
aborting
Chapter 3: Manipulating Data Using Methods
13
Coding the Program
Chapter 3: Manipulating Data Using Methods
14
Storing Data
• Java is a strongly typed language
– Variables must be declared with a data type
– Variable locations can hold only that data type
• Java has two categories of data types
– Primitive data types hold single data items
• Integers, characters, floating point, and booleans
are primitive types
– Reference data types hold a value that refers
to the location of the data
• All Objects and arrays are reference types
Chapter 3: Manipulating Data Using Methods
15
Chapter 3: Manipulating Data Using Methods
16
Declaring Variables
Chapter 3: Manipulating Data Using Methods
17
User Input – Streams and the
System Class
• The act of data flowing in and out of a program
is called a stream
• The System class creates three streams when a
program executes
Chapter 3: Manipulating Data Using Methods
18
User Input – Streams and the
System Class
• Data from input streams are first sent to a buffer
• The java.io package contains several stream
classes
– InputStreamReader
• Decodes the bytes from the System.in buffer into characters
– BufferedReader
• Increases efficiency by temporarily storing the input received
from another class, such as InputStreamReader
• Aids in platform independence by simplifying the process of
reading text and numbers from various input sources
Chapter 3: Manipulating Data Using Methods
19
Using the BufferedReader class
• Call the BufferedReader constructor to
instantiate a BufferedReader object
• The argument of the BufferedReader() method
instantiates an InputStreamReader
• BufferedReader() returns a reference to the
input data from System.in
Chapter 3: Manipulating Data Using Methods
20
Chapter 3: Manipulating Data Using Methods
21
User Prompts, Inputs,
and Conversions
• The readLine() method reads a line of input text
and returns a String containing the line
• The returned String must be explicitly converted
if the data is to be used as another data type
• Each primitive data type has a wrapper class
allowing the primitive to be treated as an object
• The wrapper classes provides a parse() method
to convert Strings to primitives, and vice versa
– Example: height = dataIn.readLine();
inches = Integer.parseInt(height);
Chapter 3: Manipulating Data Using Methods
22
Assignment Statements
• General syntax: location = value
Chapter 3: Manipulating Data Using Methods
23
Arithmetic Operators
Chapter 3: Manipulating Data Using Methods
24
Arithmetic Operators
• The order of operator precedence is a
predetermined order that defines the sequence
in which operators are evaluated in an
expression
• Addition, subtraction, multiplication, and division
can manipulate any numeric data type
• When Java performs math on mixed data types,
the result is always the larger data type
• Casts allow programmers to force a conversion
from one primitive type to another
Chapter 3: Manipulating Data Using Methods
25
Comparison Operators
• A comparison operation results in a true or false value
that can be stored in a boolean variable
Chapter 3: Manipulating Data Using Methods
26
Numeric Expressions
• Numeric expressions evaluate to a number
• Only numeric primitive data types may be used in a
numeric expression
• A value and variable must be separated by an arithmetic
operator
• Unless parentheses supercede, an expression is
evaluated left to right with the following rules of
precedence:
–
–
–
–
Multiplication and/or division
Integer division
Modular division
Addition and/or subtraction
Chapter 3: Manipulating Data Using Methods
27
Conditional Expressions
• Conditional expression evaluate to either true or
false
• Comparison operators, values, variables, methods,
and Strings may be used in a conditional expression
• Two operands must be separated by a comparison
operator
• Unless parentheses supercede, an expression is
evaluated left to right with relational operators (<,
<=, >, >=) taking precedence over equality
operators (==, !=)
Chapter 3: Manipulating Data Using Methods
28
Parentheses in Expressions
• Parentheses may be used to change the order
of operations
– The part of the expression within the parentheses is
evaluated first
• Parentheses can provide clarity in complex
expressions
– Numeric and conditional expressions should be
grouped with parentheses
• Parentheses can be nested
– Java evaluates the innermost expression first and
then moves on to the outermost expression
Chapter 3: Manipulating Data Using Methods
29
Construction of Error-Free
Expressions
• Java may not be able to evaluate a validly
formed expression due to the following logic
errors:
–
–
–
–
Dividing by zero
Taking the square root of a negative value
Raising a negative value to a non-integer value
Using a value too great or too small for a given data
type
– Comparing different data types in a conditional
expression
Chapter 3: Manipulating Data Using Methods
30
The Math Class
Chapter 3: Manipulating Data Using Methods
31
Using Variables in Output
Chapter 3: Manipulating Data Using Methods
32
Compiling, Running, and
Documenting the Application
• Compile the Body Mass Index Calculator
program
• Execute the program
• Test the program by entering the sample
input data supplied in the requirements
phase at the prompts
• Verify the results
• Print the source code and screen images
for documentation
Chapter 3: Manipulating Data Using Methods
33
Using Swing Components
• Save the previous version of the Body
Mass Index Calculator with a new filename
• Import the javax.swing.JOptionPane class
– Contains methods to create dialog boxes for
input, confirmation, and messages
• Delete the IOException and
BufferedReader code
– The swing dialog boxes buffer data from the
user and handle IO errors
Chapter 3: Manipulating Data Using Methods
34
Swing Dialog Boxes
• Dialog boxes are created with the JOptionPane “show”
methods
• The showInputDialog() and showConfirmDialog return a
String containing the user input
Chapter 3: Manipulating Data Using Methods
35
Swing Dialog Boxes
Chapter 3: Manipulating Data Using Methods
36
Closing Programs that use
Swing
• System.exit() terminates an application
that displays a GUI
– The command prompt window closes when
this method is called
• System.exit accepts an integer argument
that serves as a status code
– 0 indicates successful termination
– 1 indicates abnormal termination
Chapter 3: Manipulating Data Using Methods
37
Saving, Compiling, and Running
the Swing Version
• Verify that the file name matches the class
name at the beginning of the code
• Compile the source code
• Test with the same sample data for all
versions to compare output results
• If incorrect or unrealistic data is entered by
the user, errors will occur
– Errors and exception handling will be
discussed in a later chapter
Chapter 3: Manipulating Data Using Methods
38
Moving to the Web
• The applet version of the Body Mass Index
Calculator has four kinds of objects
– Image, Labels, TextFields, and Buttons
• Import three packages
– Java.applet
– Java.awt
– Java.awt.event
• Implement an ActionListener interface in the
class header
– Informs the program to respond to user-driven events
Chapter 3: Manipulating Data Using Methods
39
Moving to the Web
• Every event class has one or more associated
listener interfaces
Chapter 3: Manipulating Data Using Methods
40
Moving to the Web
Chapter 3: Manipulating Data Using Methods
41
Adding Interface Components
to an Applet
• Label
– Displays text in the applet window
• TextField
– Displays a text box for users to enter text
• Buttons
– Displays a command button for users to click
Chapter 3: Manipulating Data Using Methods
42
The init() Method
• Initializes the window color and graphic
• Adds components to the applet window
• Registers the Button’s ActionListener
Chapter 3: Manipulating Data Using Methods
43
The actionPerformed() Method
• When a click event occurs, the ActionListener’s
actionPerformed() method is triggered
– Input values are retrieved with getText()
– Calculations are performed
– Output is sent to a label with setText()
Chapter 3: Manipulating Data Using Methods
44
The paint() Method
• Draws the initialized image in the applet window
Chapter 3: Manipulating Data Using Methods
45
Creating an HTML Host Document
for an Interactive Applet
• Compile the applet
• Write an HTML Host Document to execute
the applet
– Use the <APPLET> tag to specify the
bytecode file, and width and height of the
window
• Use the same sample data to test the
applet
• Document the source code
Chapter 3: Manipulating Data Using Methods
46
File Management
• Coding and compiling an application creates
several files on your storage device
• File naming conventions and the operating
system’s capability of displaying icons can help
the programmer maintain a logical order
– Three java files named after the program purpose and
user interface type
– Three class files after compilation
– HTML host document
– Image file
Chapter 3: Manipulating Data Using Methods
47
Chapter Summary
• Identify, declare, and use primitive data
types
• Use the System class to create data
streams
• Instantiate the BufferedReader class in
code
• Use the readLine() method to handle user
input
Chapter 3: Manipulating Data Using Methods
48
Chapter Summary
• Convert strings to numbers using the
parse() method
• Use assignment statements to store data
with proper identifiers
• Use operators and parentheses correctly
in numeric and conditional expressions
• Round an answer using the round()
method of the Math class
Chapter 3: Manipulating Data Using Methods
49
Chapter Summary
• Use Swing components to build the GUI
for a Swing program
• Use the exit() method to close a Swing
program
• Implement an ActionListener to handle
events
• Add interface components to an applet
Chapter 3: Manipulating Data Using Methods
50
Chapter Summary
• Use the init() and paint() methods to load
the applet interface
• Use the actionPerformed() method
• Run and test an interactive applet
• Manage Java source code files and Java
class files
Chapter 3: Manipulating Data Using Methods
51
Java Programming, 3e
Concepts and Techniques
Chapter 3 Complete