Title: Chapter 7: UserDefined Methods
1Chapter 7 User-Defined Methods
- Java Programming
- From Problem Analysis to Program Design,
- Second Edition
2Chapter Objectives
- Understand how methods are used in Java
programming. - Learn about standard (predefined) methods and
discover how to use them in a program. - Learn about user-defined methods.
- Examine value-returning methods, including actual
and formal parameters.
3Chapter Objectives
- Explore how to construct and use a
value-returning, user-defined method in a
program. - Learn how to construct and use user-defined void
methods in a program. - Explore variables as parameters.
- Learn about the scope of an identifier.
- Become aware of method overloading.
4Predefined Classes
- Methods already written and provided by Java.
- Organized as a collection of classes (class
libraries). - To use, import package.
- Method type The data type of the value returned
by the method.
5Predefined Classes
6Predefined Classes
7Predefined Classes
8class Character (Package java.lang)
9class Character (Package java.lang)
10Syntax of Value-Returning Method
modifier(s) returnType methodName
(formal parameter list) statements
11User-Defined Methods
- Value-returning methods
- Used in expressions.
- Calculate and return a value.
- Can save value for later calculation or print
value. - modifiers public, private, protected, static,
abstract, final. - returnType Type of the value that the method
calculates and returns (using return statement). - methodName Java identifier name of method.
12Syntax
- Syntax of formal parameter list
- dataType identifier, dataType identifier,...
- Syntax to call a value-returning method
- methodName(actual parameter list)
13Syntax
- Syntax of the actual parameter list
- expression or variable, expression or variable,
... - Syntax of the return statement
- return expr
14Equivalent Method Definitions
public static double larger(double x, double
y) double max if (x gt y)
max x else max y return
max
15Equivalent Method Definitions
- public static double larger(double x, double y)
-
- if (x gt y)
- return x
- else
- return y
-
16Equivalent Method Definitions
- public static double larger(double x, double y)
-
- if (x gt y)
- return x
-
- return y
-
17Programming Example Palindrome Number
- Palindrome An integer or string that reads the
same forwards and backwards. - Input Integer or string.
- Output Boolean message indicating whether
integer string is a palindrome.
18Solution isPalindrome Method
public static boolean isPalindrome(String str)
int len str.length()
int i, j j len - 1 for (i 0 i lt
(len - 1) / 2 i) if
(str.charAt(i) ! str.charAt(j))
return false j--
return true
19Sample Runs Palindrome Number
20Sample Runs Palindrome Number
21Flow of Execution
- Execution always begins with the first statement
in the method main. - User-defined methods execute only when called.
- Call to method transfers control from caller to
called method. - In the method call statement, specify only actual
parameters, not data type or method type. - Control goes back to caller when method exits.
22Programming Example Largest Number
- Input Set of 10 numbers
- Output Largest of 10 numbers
- Solution
- Get numbers one at a time.
- Method largest number Returns the larger of 2
numbers. - For loop Calls method largest number on each
number received and compares to current largest
number.
23Solution Largest Number
static Scanner console new Scanner(System.in)
public static void main(String args)
double num double max int count
System.out.println("Enter 10 numbers.") num
console.nextDouble() max num
for (count 1 count lt 10 count)
num console.nextDouble() max
larger(max, num) System.out.println("
The largest number is "
max)
24Sample Run Largest Number
Sample Run Enter 10 numbers 10.5 56.34 73.3 42
22 67 88.55 26 62 11 The largest number is 88.55
25Void Methods
- Similar in structure to value-returning methods.
- Call to method is always stand-alone statement.
- Can use return statement to exit method early.
26Void Methods Syntax
- Method definition
- The general form (syntax) of a void method
without parameters is as follows - modifier(s) void methodName()
-
- statements
-
- Method call (within the class)
- The method call has the following syntax
- methodName()
27Void Methods with Parameters Syntax
- Method definition
- The definition of a void method with parameters
has the following syntax - modifier(s) void methodName
- (formal parameter list)
-
- statements
-
- Formal parameter list
- The formal parameter list has the following
syntax - dataType variable, dataType variable, ...
28Void Methods with Parameters Syntax
Method call The method call has the following
syntax methodName(actual parameter
list) Actual parameter list The actual
parameter list has the following
syntax expression or variable, expression or
variable, ...
29Primitive Data Type Variables as Parameters
- A formal parameter receives a copy of its
corresponding actual parameter. - If a formal parameter is a variable of a
primitive data type - Value of actual parameter is directly stored.
- Cannot pass information outside the method.
- Provides only a one-way link between actual
parameters and formal parameters.
30Reference Variables as Parameters
- If a formal parameter is a reference variable
- Copies value of corresponding actual parameter.
- Value of actual parameter is address of the
object where actual data is stored. - Both formal and actual parameters refer to same
object.
31Uses of Reference Variables as Parameters
- Can return more than one value from a method.
- Can change the value of the actual object.
- When passing an address, saves memory space and
time, relative to copying large amount of data.
32Reference Variables as Parameters type String
33Scope of an Identifier within a Class
- Local identifier An identifier that is declared
within a method or block and that is visible only
within that method or block. - Java does not allow the nesting of methods. That
is, you cannot include the definition of one
method in the body of another method. - Within a method or a block, an identifier must be
declared before it can be used. Note that a block
is a set of statements enclosed within braces. - A methods definition can contain several blocks.
The body of a loop or an if statement also forms
a block. - Within a class, outside of every method
definition (and block), an identifier can be
declared anywhere.
34Scope of an Identifier within a Class
- Within a method, an identifier that is used to
name a variable in the outer block of the method
cannot be used to name any other variable in an
inner block of the method. For example, in the
following method definition, the second
declaration of the variable x is illegal - public static void illegalIdentifierDeclaration()
-
- int x
-
- //block
-
- double x //illegal declaration,
- //x is already declared
- ...
-
35Scope Rules
- Scope rules of an identifier that is declared
within a class and accessed within a method
(block) of the class. - An identifier, say X, that is declared within a
method (block) is accessible - Only within the block from the point at which it
is declared until the end of the block. - By those blocks that are nested within that
block. - Suppose X is an identifier that is declared
within a class and outside of every methods
definition (block). - If X is declared without the reserved word static
(such as a named constant or a method name), then
it cannot be accessed in a static method. - If X is declared with the reserved word static
(such as a named constant or a method name), then
it can be accessed within a method (block)
provided the method (block) does not have any
other identifier named X.
36Scope Rules
- Example 7-12
- public class ScopeRules
-
- static final double rate 10.50
- static int z
- static double t
- public static void main(String args)
-
- int num
- double x, z
- char ch
- //...
-
- public static void one(int x, char y)
-
- //...
-
37Scope Rules
- public static int w
- public static void two(int one, int z)
-
- char ch
- int a
-
- //block three
-
- int x 12
- //...
- //end block three
- //...
-
38Scope Rules Demonstrated
39Method Overloading An Introduction
- Method overloading More than one method can have
the same name. - Two methods are said to have different formal
parameter lists - If both methods have a different number of formal
parameters. - If the number of formal parameters is the same in
both methods, the data type of the formal
parameters in the order you list must differ in
at least one position.
40Method Overloading
- public void methodOne(int x)
- public void methodTwo(int x, double y)
- public void methodThree(double y, int x)
- public int methodFour(char ch, int x,
- double y)
- public int methodFive(char ch, int x,
- String name)
- These methods all have different formal parameter
lists.
41Method Overloading
- public void methodSix(int x, double y,
- char ch)
- public void methodSeven(int one, double u,
- char firstCh)
- The methods methodSix and methodSeven both have
three formal parameters, and the data type of the
corresponding parameters is the same. - These methods all have the same formal parameter
lists.
42Method Overloading
- Method overloading Creating several methods
within a class with the same name. - The signature of a method consists of the method
name and its formal parameter list. Two methods
have different signatures if they have either
different names or different formal parameter
lists. (Note that the signature of a method does
not include the return type of the method.)
43Method Overloading
- The following method headings correctly overload
the method methodXYZ - public void methodXYZ()
- public void methodXYZ(int x, double y)
- public void methodXYZ(double one, int y)
- public void methodXYZ(int x, double y,
- char ch)
44Method Overloading
- public void methodABC(int x, double y)
- public int methodABC(int x, double y)
- Both these method headings have the same name and
same formal parameter list. - These method headings to overload the method
methodABC are incorrect. - In this case, the compiler will generate a syntax
error. (Notice that the return types of these
method headings are different.)
45Programming Example Data Comparison
- Input Data from two different files.
- Data format Course number followed by scores.
- Output Course number, group number, course
average. - Solution
- Read from more than one file write output to
file. - Generate bar graphs.
- User-defined methods and re-use (calculateAverage
and printResult). - Parameter passing.
46Programming Example Data Comparison
- Sample Output
- Course No Group No Course Average
- CSC 1 83.71
- 2 80.82
- ENG 1 82.00
- 2 78.20
- HIS 1 77.69
- 2 84.15
- MTH 1 83.57
- 2 84.29
- PHY 1 83.22
- 2 82.60
- Avg for group 1 82.04
47Programming Example Data Comparison
48Chapter Summary
- Pre-defined methods
- User-defined methods
- Value-returning methods
- Void methods
- Formal parameters
- Actual parameters
- Flow of execution
49Chapter Summary
- Primitive data type variables as parameters
- One-way link between actual parameters and formal
parameters (limitations caused). - Reference variables as parameters
- Can pass one or more variables from a method.
- Can change value of actual parameter.
- Scope of an identifier within a class
- Method overloading