Вы находитесь на странице: 1из 49

Chapter 7: User-Defined Methods

Java Programming:
From Problem Analysis to Program Design,
Second Edition

Chapter 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.
Java Programming: From Problem Analysis to Program Desig

Chapter Objectives
Explore how to construct and use a valuereturning, 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.
Java Programming: From Problem Analysis to Program Desig

Predefined 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.
Java Programming: From Problem Analysis to Program Desig

Predefined Classes

Java Programming: From Problem Analysis to Program Desig

Predefined Classes

Java Programming: From Problem Analysis to Program Desig

Predefined Classes

Java Programming: From Problem Analysis to Program Desig

class Character (Package: java.lang)

Java Programming: From Problem Analysis to Program Desig

class Character (Package: java.lang)

Java Programming: From Problem Analysis to Program Desig

Syntax of Value-Returning Method


modifier(s) returnType methodName
(formal parameter list)
{
statements
}

Java Programming: From Problem Analysis to Program Desig 10

User-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.
Java Programming: From Problem Analysis to Program Desig 11

Syntax
Syntax of formal parameter list:
dataType identifier, dataType
identifier,...

Syntax to call a value-returning method:


methodName(actual parameter list)

Java Programming: From Problem Analysis to Program Desig 12

Syntax
Syntax of the actual parameter list:
expression or variable, expression
or variable, ...

Syntax of the return statement:


return expr;

Java Programming: From Problem Analysis to Program Desig 13

Equivalent Method Definitions


public static double larger(double x, double y)
{
double max;
if (x >= y)
max = x;
else
max = y;
return max;
}

Java Programming: From Problem Analysis to Program Desig 14

Equivalent Method Definitions


public static double larger(double x, double
y)
{
if (x >= y)
return x;
else
return y;
}

Java Programming: From Problem Analysis to Program Desig 15

Equivalent Method Definitions


public static double larger(double x, double y)
{
if (x >= y)
return x;
return y;
}

Java Programming: From Problem Analysis to Program Desig 16

Programming 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.

Java Programming: From Problem Analysis to Program Desig 17

Solution: isPalindrome Method


public static boolean isPalindrome(String str)
{
int len = str.length();
int i, j;
j = len - 1;
for (i = 0; i <= (len - 1) / 2; i++)
{
if (str.charAt(i) != str.charAt(j))
return false;
j--;
}
return true;
}

Java Programming: From Problem Analysis to Program Desig 18

Sample Runs: Palindrome Number

Java Programming: From Problem Analysis to Program Desig 19

Sample Runs: Palindrome Number

Java Programming: From Problem Analysis to Program Desig 20

Flow 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.
Java Programming: From Problem Analysis to Program Desig 21

Programming Example: Largest


Number
Input: Set of 10 numbers
Output: Largest of 10 numbers
Solution:
Get numbers one at a time.
Method larger number: Returns the larger of 2 numbers.
For loop: Calls method larger number on each number
received and compares to current largest number.

Java Programming: From Problem Analysis to Program Desig 22

Solution: 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 < 10; count++)
{
num = console.nextDouble();
max = larger(max, num);
}
System.out.println("The largest number is "
+ max);
}

Java Programming: From Problem Analysis to Program Desig 23

Sample 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

Java Programming: From Problem Analysis to Program Desig 24

Void Methods
Similar in structure to value-returning
methods.
Call to method is always stand-alone
statement.
Can use return statement to exit method
early.

Java Programming: From Problem Analysis to Program Desig 25

Void 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();

Java Programming: From Problem Analysis to Program Desig 26

Void 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, ...

Java Programming: From Problem Analysis to Program Desig 27

Void 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, ...

Java Programming: From Problem Analysis to Program Desig 28

Primitive 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.
Java Programming: From Problem Analysis to Program Desig 29

Reference 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.

Java Programming: From Problem Analysis to Program Desig 30

Uses 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.

Java Programming: From Problem Analysis to Program Desig 31

Reference Variables as Parameters:


type String

Java Programming: From Problem Analysis to Program Desig 32

Scope 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.

Java Programming: From Problem Analysis to Program Desig 33

Scope 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

...
}
}

Java Programming: From Problem Analysis to Program Desig 34

Scope 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.

Java Programming: From Problem Analysis to Program Desig 35

Scope 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)
{
//...
}

Java Programming: From Problem Analysis to Program Desig 36

Scope 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
//...
}
}

Java Programming: From Problem Analysis to Program Desig 37

Scope Rules: Demonstrated

Java Programming: From Problem Analysis to Program Desig 38

Method 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.
Java Programming: From Problem Analysis to Program Desig 39

Method Overloading
public
public
public
public

void methodOne(int x)
void methodTwo(int x, double y)
void methodThree(double y, int x)
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.

Java Programming: From Problem Analysis to Program Desig 40

Method 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.
Java Programming: From Problem Analysis to Program Desig 41

Method 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.)

Java Programming: From Problem Analysis to Program Desig 42

Method Overloading
The following method headings correctly overload
the method methodXYZ:
public
public
public
public

void
void
void
void

methodXYZ()
methodXYZ(int x, double y)
methodXYZ(double one, int y)
methodXYZ(int x, double y,
char ch)

Java Programming: From Problem Analysis to Program Desig 43

Method 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.)

Java Programming: From Problem Analysis to Program Desig 44

Programming 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.
Java Programming: From Problem Analysis to Program Desig 45

Programming Example: Data Comparison


Sample Output
Course No
CSC

Group No
1
2

Course Average
83.71
80.82

ENG

1
2

82.00
78.20

HIS

1
2

77.69
84.15

MTH

1
2

83.57
84.29

PHY

1
2

83.22
82.60

Avg for group 1: 82.04


Avg for group 2: 82.01

Java Programming: From Problem Analysis to Program Desig 46

Programming Example: Data Comparison

Java Programming: From Problem Analysis to Program Desig 47

Chapter Summary
Pre-defined methods
User-defined methods:

Value-returning methods
Void methods
Formal parameters
Actual parameters

Flow of execution
Java Programming: From Problem Analysis to Program Desig 48

Chapter 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
Java Programming: From Problem Analysis to Program Desig 49

Вам также может понравиться