Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
11 Methods
CE00858-1:
Fundamental Programming Techniques
May 17
11 Methods
1
Objectives
In this session, we will:
•
•
•
•
May 17
introduce methods and look at the main() method
implement methods and call them
pass values into methods
return values from methods
11 Methods
2
Methods
• named block of code that can be invoked one or
more times in an application
• performs a well defined task
• has no side effects
• is easily understood
• advantages:
•
•
•
•
May 17
can focus on what a block of code does, not how
can call method as many times as needed
reduces length of code
simplifies testing
11 Methods
3
Methods in Java
returnType methodName (parameters)
{
method body
statements;
}
method header
• method header:
• returnType:
• type of data that is returned by method
• void if method doesn’t return anything
• methodName
• parameters enclosed by brackets:
• information needed by method
• brackets must be included even if no parameters needed
• method body:
• enclosed by braces
• 1 or more statements to be executed
May 17
11 Methods
4
main() method
• all Java applications must have a main method
• automatically invoked when program run
• can include calls to other methods
public class MyClass
{
public static void main (String [] args)
{
//method body
//calls to other methods
}
}
May 17
11 Methods
5
Structure of a class
• class may have many methods
public class MyClass
{
public static void main (String [] args)
{
//method body for main
}
public static void myMethod1 ()
{
//method body for myMethod1
}
public static void myMethod2()
{
//method body for myMethod2
}
}
May 17
11 Methods
6
Method implementation
• if a program is to be implemented using methods,
need to:
•
•
•
•
May 17
select meaningful name for method
consider values needed by method to perform its task
consider values returned by method
analyse operations performed inside method body
11 Methods
7
Method example – greet()
• problem:
• a method is required to output a greeting to the user on two
separate lines
• method:
•
•
•
•
method name: greet
method parameters: none
method returns: nothing
analysis for method body: 2 output statements to greet user
public static void greet ()
{
}
May 17
System.out.println("Hello and welcome");
System.out.println("How are you?");
11 Methods
8
Calling methods example – GreetUser
• once a method has been written it can be called as many times
as required by specifying its name and any parameters required
public class GreetUser
{
public static void main (String [] args)
{
greet ();
greet ();
}
}
May 17
public static void greet ()
{
System.out.println("Hello and welcome");
System.out.println("How are you?");
}
11 Methods
9
greet() method with parameters
• problem:
• the greet() method is to be modified so that a name is
passed as a parameter to be output
• method:
•
•
•
•
method name: greet
method parameters: name – String to be output
method returns: nothing
analysis for method body: 2 output statements to greet user
public static void greet (String name)
{
}
May 17
parameter
System.out.println("Hello " + name + " and welcome");
System.out.println("How are you?");
11 Methods
10
Calling methods with parameters
• if the method has parameters, these must be given a value
when the method is called
import java.util.*;
public class GreetUser
{
public static void main (String [] args)
{
Scanner kybd = new Scanner(System.in);
String myName = kybd.next();
greet (myName);
String yourName = kybd.next();
value for parameter
greet (yourName);
}
}
May 17
public static void greet (String name)
{
System.out.println("Hello " + name + " and welcome");
System.out.println("How are you?");
}
11 Methods
11
Call by value
• when a value is passed into a method, a copy of it is
taken and used within the method
• after the method finishes, changes to the value are
not kept
May 17
11 Methods
12
public class Swap
Swap.java
{
public static void main (String [] args)
{
int x = 3;
int y = 4;
System.out.println("x is: " + x + ", y is: " + y);
swap(x, y);
System.out.println("x is: " + x + ", y is: " + y);
}
what is output?
public static void swap (int a, int b)
{
int temp = a;
a = b;
b = temp;
}
}
May 17
11 Methods
13
greet() method with return value
• problem:
• the greet() method is to be modified so that a name is read
inside the method, the greeting is output and the name is
returned to the calling program
• method:
•
•
•
•
May 17
method name: greet
method parameters: none
method returns: String name
analysis for method body:
• create Scanner
• prompt user for name
• input name
• 2 output statements to greet user
• return name
11 Methods
14
return type
public static String greet ()
{
Scanner kybd = new Scanner(System.in);
System.out.print("Enter name: ");
String name = kybd.next();
System.out.println("Hello " + name + " and welcome");
System.out.println("How are you?");
}
May 17
return name;
return statement
11 Methods
15
Calling methods with return values
• if the method returns a value the calling program
should do something with that value:
• output it
• store it
• use it in a comparison
May 17
11 Methods
16
import java.util.*;
public class GreetUser
{
public static void main (String [] args)
{
String aName = greet ();
if (aName.equals("Elizabeth"))
{
System.out.println("Are you the queen?");
}
}
GreetUser.java
public static String greet ()
{
Scanner kybd = new Scanner(System.in);
System.out.print("Enter name: ");
String name = kybd.next();
System.out.println("Hello " + name + " and welcome");
System.out.println("How are you?");
}
May 17
}
return name;
11 Methods
17
Analysis and methods
• when faced with a specification the designer does not
consider how the solution will be implemented
• the use of methods is an implementation decision
which should be taken after analysis
May 17
11 Methods
18
Method example – Underline
• problem:
• a program is required to output a row of 10 stars, followed
by a row of 15 @ symbols
• analysis:
• output a row of 10 *
• output a row of 15 @
• implementation
• as same actions will be done, but with different values, this is a
candidate for implementation using methods and parameters
• method name: underline()
• method parameters:
• ch – character to be output
• times – integer number of times character is to be output
• method doesn't return a value
May 17
11 Methods
19
underline() method analysis
• analysis for method body:
• what data is used?
• ch: character, passed as parameter
• times: integer, passed as parameter
• what operations are performed?
• iteration needed as ch is output several times
• what operations are done once before the loop?
• none
• how many times is loop repeated?
• times = 1 to times
• what operations are done inside the loop?
• output ch
• what operations are done after the loop?
• output new line
May 17
11 Methods
20
//passing parameters to methods
Underline.java
public class Underline
{
public static void main (String [] args)
{
underline('*', 10);
underline('@', 15);
}
}
May 17
public static void underline (char ch, int times)
{
for (int i = 0; i < times; i++)
{
System.out.print(ch);
}
System.out.println();
}
11 Methods
21
Method example – Largest4
• problem:
• output the largest of 4 numbers input by the user
• analysis
• what data is used?
• num1, num2, num3 and num4: integers input by user
• what operations are performed?
•
•
•
•
May 17
determine larger of num1 and num2
determine larger of num3 and num4
determine larger of two previous results
output largest number
11 Methods
22
larger() method analysis
• implementation
• as same actions will be done, but with different values, this
is a candidate for implementation using methods and return
values
• method name: larger()
• method parameters:
• a, b – integers to compare
• method returns:
• larger integer
May 17
11 Methods
23
larger() method analysis cont.
• method body analysis
• what data is used?
• a: integer passed as parameter
• b: integer passed as parameter
• what operations are performed?
• selection needed as a larger dealt with differently to b larger
• what operations are done before the selection?
• none
• what operations are done if a larger?
• store a
• what operations are done if b larger?
• store
• what operations are done after the selection?
• return larger
May 17
11 Methods
24
//program to show return values
import java.util.*;
Largest4.java
public class Largest4
{
public static void main (String [] args)
{
//input data
Scanner kybd = new Scanner(System.in);
System.out.print("Enter 4 numbers: ");
int num1 = kybd.nextInt();
int num2 = kybd.nextInt();
int num3 = kybd.nextInt();
int num4 = kybd.nextInt();
}
May 17
//determine larger of num1 and num2
//determine larger of num3 and num4
//determine larger of two previous results
//output largest
System.out.println("Largest is: " +
larger(larger(num1, num2), larger(num3, num4)));
11 Methods
25
}
May 17
public static int larger(int a, int b)
{
int largerNum;
if (a > b)
{
largerNum = a;
}
else
{
largerNum = b;
}
return largerNum;
}
11 Methods
26
Summary
In this session we have:
•
•
•
•
looked at implementing methods in Java
seen how methods are called from within the main() method
passed parameters into methods
returned results from methods
In the next session we will:
• look at making methods even more flexible
May 17
11 Methods
27