0% found this document useful (0 votes)
11 views

lecture_6_Method.ppt

The document discusses methods in programming, detailing their definition, benefits, and how to implement them in Java. It covers topics such as method signatures, parameter passing, and method overloading, along with examples of summing integers and finding maximum values. Additionally, it explains the concept of modularization and the scope of local variables within methods.

Uploaded by

yadullahgoni
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

lecture_6_Method.ppt

The document discusses methods in programming, detailing their definition, benefits, and how to implement them in Java. It covers topics such as method signatures, parameter passing, and method overloading, along with examples of summing integers and finding maximum values. Additionally, it explains the concept of modularization and the scope of local variables within methods.

Uploaded by

yadullahgoni
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

Methods

1
Opening Problem

Find the sum of integers from 1 to 10, from 20 to 30,


and from 35 to 45, respectively.

2
A Solution
int sum = 0;
for (int i = 1; i <= 10; i++)
sum = sum + i;
System.out.println("Sum from 1 to 10 is " + sum);

sum = 0;
for (int i = 20; i <= 30; i++)
sum = sum + i;
System.out.println("Sum from 20 to 30 is " + sum);

sum = 0;
for (int i = 35; i <= 45; i++)
sum = sum + i;
System.out.println("Sum from 35 to 45 is " + sum);
3
Repeated Code
int sum = 0;
for (int i = 1; i <= 10; i++)
sum = sum + i;
System.out.println("Sum from 1 to 10 is " + sum);

sum = 0;
for (int i = 20; i <= 30; i++)
sum = sum + i;
System.out.println("Sum from 20 to 30 is " + sum);

sum = 0;
for (int i = 35; i <= 45; i++)
sum = sum + i;
System.out.println("Sum from 35 to 45 is " + sum);

4
Solution Using Method sum
public class sumMethod {
public static void main(String[] args)
{
int result = sum(1, 10);
System.out.println("Sum from 1 to 10 is:\t" + result);

result = sum(20, 30);


System.out.println("Sum from 20 to 30 is:\t" + result);

result = sum(35, 45);


System.out.println("Sum from 35 to 45 is:\t" + result);
}

public static int sum (int num1, int num2)


{
int sum = 0;
for (int i = num1; i <= num2; i++)
sum = sum + i;
return sum;
}
5
}
What is a Method?
Think of a method as a black box that contains the
detailed implementation for a specific task. The method
may take use inputs (parameters) and may retune an
out with a specific type.

6
Benefits of Methods
• Write a method once and reuse it anywhere
• Promotes Information hiding (hide the
implementation from the user)
• Facilitate modularity (break the code into
manageable modules)
• Reduce code complexity (better maintenance)

7
Defining Methods
A method has a header and a body.
=> The header is the method declaration.
=> The body is a a collection of statements grouped together to
perform an operation.

8
Method Signature
Method signature is the combination of the method name
and the parameter list.

9
Formal Parameters
The variables defined in the method header are known as
formal parameters.

10
Actual Parameters
When a method is invoked, you pass a value to the
parameter. This value is referred to as actual parameter or
argument.

11
Return Value Type
A method may return a value. The returnValueType is the
data type of the value the method returns. If the method
does not return a value, the returnValueType is the
keyword void.

12
Calling Methods
Testing method max
This program demonstrates calling method max to
return the largest of two int values.

13
animation

Calling Methods, cont.

pass the value of i


pass the value of j

public static void main(String[] args) { public static int max(int num1, int num2 ) {
int i = 5; int result;
int j = 2;
int k = max(i, j); if (num1 > num2)
result = num1;
System.out.println( else
"The maximum between " + i + result = num2;
" and " + j + " is " + k);
} return result;
}

14
animation

Trace Method Invocation


i is now 5

15
animation

Trace Method Invocation


j is now 2

16
animation

Trace Method Invocation


invoke max(i, j)

17
animation

Trace Method Invocation


invoke max(i, j)
Pass the value of i to num1
Pass the value of j to num2

18
animation

Trace Method Invocation


declare variable result

19
animation

Trace Method Invocation


(num1 > num2) is true since num1
is 5 and num2 is 2

20
animation

Trace Method Invocation


result is now 5

21
animation

Trace Method Invocation


return result, which is 5

22
animation

Trace Method Invocation


return max(i, j) and assign the
return value to k

23
animation

Trace Method Invocation


Execute the print statement

24
Program TestMax
//class TestMax
public class TestMax
{
public static void main(String[] args) // main method
{
int i = 5;
int j = 2;
int k = max(i, j);
System.out.println("The maximum of " + i + " and " + j + " is " + k);
}

public static int max(int num1, int num2) // method max


{
int result;
if (num1 > num2)
result = num1;
else
result = num2;

return result;
}
}
25
CAUTION
A return statement is required for a value-returning method. The
method shown below in (a) is logically correct, but it has a
compilation error because the Java compiler thinks it is possible
that this method does not return any value.

To fix this problem, delete if (n < 0) in (a), so that the compiler will
see a return statement to be reached regardless of how the if
statement is evaluated.
26
Reuse Methods from Other Classes

One of the benefits of methods is for reuse. The max method


(being public method) can be invoked from any other class
besides TestMax.
If you create a new class Test, you can invoke method max
using ClassName.methodName (e.g., TestMax.max).
You need to compile both classes to be able call method max
from class Test.

Remember? Math.pow(a,b); Math.sqrt(x);

27
Another Example
// illustration of methods in java
import java.util.*;
public class TestMethods {
public static void main (String[] arge)
{ int a = 10, b = 20;
int addResult = Add(a,b); //method call Add
System.out.println("Sum of a and b is " + addResult);

String myMessage = "Hello World!"; // call method PrintMessage


printMessage(myMessage);
}

// method definition
public static int Add(int x, int y)
{ return (x+y); }

// method definition
public static void printMessage(String message)
{
for (int i = 1; i <= 5; i++)
System.out.println(message);
}
}
28
Runtime Stack
A runtime stack is a structure used to keep track of
active (currently running) methods in the program,
and order of method calls.
Each active method has "activation record" on the
stack. The record is the memory space for all local
variables in the method.
The top activation record on the stack represents the
currently running (active) method in the program.
The bottom activation record represents the main
method often program.
Once a method is no longer active, it is removed from
the stack (always the top record is removed).
29
animation

Trace Call Stack


i is declared and initialized

30
animation

Trace Call Stack


j is declared and initialized

31
animation

Trace Call Stack


Declare k

32
animation

Trace Call Stack


Invoke max(i, j)

33
animation

Trace Call Stack


pass the values of i and j to num1
and num2

34
animation

Trace Call Stack

pass the values of i and j to num1


and num2

35
animation

Trace Call Stack

(num1 > num2) is true

36
animation

Trace Call Stack

Assign num1 to result

37
animation

Trace Call Stack

Return result and assign it to k

38
animation

Trace Call Stack


Execute print statement

39
Call Stacks

40
void Method
This type of method does not return a value. The method
performs some actions.

public static void Even_Odd(int n)


{
if ((n % 2) == 0)
System.out.println(n + “ is Even.”);
else
System.out.println(n + “ is Odd.”);
}

See Listing 6.2, page 209, for example method:


public static void printGrade(double score)
41
Passing Parameters
public static void nPrintln(String message, int n)
{
for (int i = 0; i < n; i++)
System.out.println(message);
}

Suppose you invoke the method using


nPrintln(“Welcome to Java”, 5);
What is the output?

Suppose you invoke the method using


nPrintln(“Computer Science”, 15);
What is the output?
42
Pass by Value
It means that the value of the actual parameter (when a
variable) is copied into the formal parameter.

Whatever changes made to the formal parameter are


local to the method and do not affect/change the value
of the actual parameter.

Classic example: The Swap method.

43
Pass by Value Example
public class TestPassByValue {
public static void main (String[] arge){
int num1 = 1;
int num2 = 2;
System.out.println("Before calling Swap: num1 = " + num1 +
" num2 = " + num1 + "\n");
swap(num1, num2);
System.out.println("After calling Swap: num1 = " + num1 +
" num2 = " + num2 + "\n");
}

public static void swap(int n1, int n2){ // method swap


System.out.println("Inside swap, before Swapping : n1 = " +
n1 + " n2 = " + n1 + "\n");
int temp = n1;
n1 = n2;
n2 = temp;
System.out.println("Inside swap, after Swapping: n1 = " +
n1 + " n2 = " + n2 + "\n");
}
}

44
Pass by Value Runtime Stack

45
Modularizing Code
Modularization is software design concept that calls for
writing code in modules.

Methods (as modules) can be used to reduce redundant


coding and enable code reuse.

Methods can also be used to modularize code and improve


the quality of the program.

Starting page 215, see listings 6.6 (GCD), 6.7 (Prime


numbers), and 6.8 (converting decimal to hexadecimal).
Each has at least one methods in addition to method
main().
46
Overloading Methods
Overloading is making a method to work with different types of
parameters.

Example: Overloading the max Method


public static int max(int num1, int num2)
{
if (num1 > num2)
return num1;
else
return num2;
}

public static double max(double num1, double num2)


{
if (num1 > num2)
return num1;
else
return num2;
}
47
Ambiguous Invocation

Sometimes there may be two or more possible


matches for an invocation of a method, but the
compiler cannot determine the most specific match.
This is referred to as ambiguous invocation. Ambiguous
invocation is a compilation error.

48
Ambiguous Invocation
public class AmbiguousOverloading {
public static void main(String[] args) {
System.out.println(max(1,2)); //Error
}

public static double max (int num1, double num2) {


if (num1 > num2)
return num1;
else
return num2;
}

public static double max (double num1, int num2) {


if (num1 > num2)
return num1;
else
return num2;
}
}
49
Scope of Local Variables
Local variable: a variable defined inside a method.
Scope: the part of the program where the variable can be
referenced (accessible).
The scope of a local variable (also known as life-time) starts from its
declaration point and continues to the end of the block that
contains the variable. A local variable must be declared before it can
be used.
Java Rule:
You can declare a local variable with the same name multiple time
in different non-nesting blocks in a method, but you cannot declare
a local variable twice in nested blocks.

50
Scope of Local Variables, cont.

51
Scope of Local Variables, cont.

52
Scope of Local Variables, cont.
// Homework: code with errors, can you find them?
public static void incorrectMethod()
{
int x = 1;
int y = 1;
for (int i = 1; i < 10; i++)
{
int x = 0;
int t = 0;
x = x + i;
}
i = i + 10;
y = y + 10;
t = t + 10;
}

53

You might also like