Methods Declarations Methods
Allow programmers to modularize programs
Makes program development more manageable
Software reusability
Avoid repeating code
Local variables
Declared in method declaration
Parameters
Communicates information between methods via method calls
Lecture 4: Chapter 6 - Methods
Outline Introduction Program Modules in Java Math-Class Methods Method Declarations Java API Packages Random-Number Generation Scope of Declarations Methods of Class JApplet Method Overloading Example Using Recursion: The Fibonacci Series
Introduction
Modules
Small pieces of a problem
Facilitate design, implementation, operation and maintenance of large programs
Program Modules in Java
Modules in Java
Methods
Classes
Java API provides several modules
Programmers can also create modules
e.g., programmer-defined methods
Methods
Invoked by a method call
Returns a result to calling method (caller)
Similar to a boss (caller) asking a worker (called method) to complete a task
Math-Class Methods
Class java.lang.Math
Provides common mathematical calculations
Calculate the square root of 900.0:
Math.sqrt( 900.0 )
Method sqrt belongs to class Math
Dot (.) allows access to method sqrt
The argument 900.0 is located inside parentheses
Methods Declarations
Methods
Allow programmers to modularize programs
Makes program development more manageable
Software reusability
Avoid repeating code
Local variables
Declared in method declaration
Parameters
Communicates information between methods via method calls
SquareIntegers.javaLine 21Declare result to store square of number Line 26Method init invokes method square Line 26Method square returns int that result stores 1 // Fig. 6.3: SquareIntegers.java
2 // Creating and using a programmer-defined method.
3 import java.awt.Container;
4
5 import javax.swing.*;
6
7 public class SquareIntegers extends JApplet {
8
9 // set up GUI and calculate squares of integers from 1 to 10
10 public void init()
11 {
12 // JTextArea to display results
13 JTextArea outputArea = new JTextArea();
14
15 // get applet's content pane (GUI component display area)
16 Container container = getContentPane();
17
18 // attach outputArea to container
19 container.add( outputArea );
20
21 int result; // store result of call to method square
22 String output = ""; // String containin
Declare result to store square of number Method square returns int that result stores Method init invokes method square (next slide)
SquareIntegers.javaLine 38y is the parameter of method squareLine 40Method square returns the square of y 32
33 outputArea.setText( output ); // place results in JTextArea
34
35 } // end method init
36
37 // square method declaration
38 public int square( int y )
39 {
40 return y * y; // return square of y
41
42 } // end method square
43
44 } // end class SquareIntegers
y is the parameter of method square Method square returns the square of y
Method Declarations (cont.)
General format of method declaration:return-value-type method-name( parameter1, parameter2, …, parameterN ){ declarations and statements}
Method can also return values:
return expression;
Maximum.javaLines 13-18User inputs three StringsLines 21-23Convert Strings to doubles Line 25Method init passes doubles as arguments to method maximum 1 // Fig. 6.4: MaximumTest.java
2 // Finding the maximum of three floating-point numbers.
3 import java.awt.Container;
4
5 import javax.swing.*;
6
7 public class MaximumTest extends JApplet {
8
9 // initialize applet by obtaining user input and creating GUI
10 public void init()
11 {
12 // obtain user input
13 String s1 = JOptionPane.showInputDialog(
14 "Enter first floating-point value" );
15 String s2 = JOptionPane.showInputDialog(
16 "Enter second floating-point value" );
17 String s3 = JOptionPane.showInputDialog(
18 "Enter third floating-point value" );
19
20 // convert user input to double values
21 double number1 = Double.parseDouble( s1 );
22 double number2
User inputs three Strings Convert Strings to doubles Method init passes doubles as arguments to method maximum
Maximum.javaLine 46Method maximum returns value from method max of class Math 34 // get applet's GUI component display area
35 Container container = getContentPane();
36
37 // attach outputArea to Container c
38 container.add( outputArea );
39
40 } // end method init
41
42 // maximum method uses Math class method max to help
43 // determine maximum value
44 public double maximum( double x, double y, double z )
45 {
46 return Math.max( x, Math.max( y, z ) );
47
48 } // end method maximum
49
50 } // end class Maximum
Method maximum returns value from method max of class Math
Java API Packages
Packages
Classes grouped into categories of related classes
Promotes software reuse
import statements specify classes used in Java programs
e.g., import javax.swing.JApplet;
6.7 Random-Number Generation
Java random-number generators
Math.random()
( int ) ( Math.random() * 6 )
Produces integers from 0 - 5
Use a seed for different random-number sequences
RandomIntegers.javaLine 16Produce integers in range 1-6Line 16Math.random returns doubles. We cast the double as an int 1 // Fig. 6.7: RandomIntegers.java
2 // Shifted, scaled random integers.
3 import javax.swing.JOptionPane;
4
5 public class RandomIntegers {
6
7 public static void main( String args[] )
8 {
9 int value;
10 String output = "";
11
12 // loop 20 times
13 for ( int counter = 1; counter <= 20; counter++ ) {
14
15 // pick random integer between 1 and 6
16 value = 1 + ( int ) ( Math.random() * 6 );
17
18 output += value + " "; // append value to output
19
20 // if counter divisible by 5, append newline to String output
21 if ( counter % 5 == 0 )
22 output += "\n";
23
24 } // end for
25
Produce integers in range 1-6 Math.random returns doubles. We cast the double as an int
RandomIntegers.java 26 JOptionPane.showMessageDialog( null, output,
27 "20 Random Numbers from 1 to 6",
28 JOptionPane.INFORMATION_MESSAGE );
29
30 System.exit( 0 ); // terminate application
31
32 } // end main
33
34 } // end class RandomIntegers
Scope of Declarations
Scope
Portion of the program that can reference an entity by its name
Basic scope rules
Scope of a parameter declaration
Scope of a local-variable declaration
Scope of a method or field of a class
Scoping.javaLine 11field x Line 26Local variable x Line 28Method start uses local variable x 1 // Fig. 6.10: Scoping.java
2 // A scoping example.
3 import java.awt.Container;
4
5 import javax.swing.*;
6
7 public class Scoping extends JApplet {
8 JTextArea outputArea;
9
10 // field that is accessible to all methods of this class
11 int x = 1;
12
13 // create applet's GUI
14 public void init()
15 {
16 outputArea = new JTextArea();
17 Container container = getContentPane();
18 container.add( outputArea );
19
20 } // end method init
21
22 // method start called after init completes; start calls
23 // methods useLocal and useField
24 public void start()
25 {
26 int x = 5; // local variable in method start that shadows field x
27
28 outputArea.append( "local x in st
Field x has class scope Local variable x has block scope Method start uses local variable x
Scoping.javaLine 42Recreate variable x and initialize it to 25Lines 40-50Method useLocal uses local variable x 30 useLocal(); // useLocal has local x
31 useField(); // useInstance uses Scoping's field x
32 useLocal(); // useLocal reinitializes local x
33 useField(); // Scoping's field x retains its value
34
35 outputArea.append( "\n\nlocal x in start is " + x );
36
37 } // end method start
38
39 // useLocal creates and initializes local variable x during each call
40 public void useLocal()
41 {
42 int x = 25; // initialized each time useLocal is called
43
44 outputArea.append( "\n\nlocal x in useLocal is " + x +
45 " after entering useLocal" );
46 ++x;
47 outputArea.append( "\nlocal x in useLocal is " + x +
48 " before exiting useLocal" );
49
50 } // end method useLocal
51
Re-create variable x and initialize it to 25 Method useLocal uses local variable x
Scoping.java Lines 53-61Method useField uses field x 52 // useField modifies Scoping's field x during each call
53 public void useField()
54 {
55 outputArea.append( "\n\nfield x is " + x +
56 " on entering useField" );
57 x *= 10;
58 outputArea.append( "\nfield x is " + x +
59 " on exiting useField" );
60
61 } // end method useInstance
62
63 } // end class Scoping
Comments