270 likes | 674 Views
11 Methods. CE00858-1: Fundamental Programming Techniques. November 14. 1. Objectives. In this session, we will: introduce methods and look at the main() method implement methods and call them pass values into methods return values from methods. November 14. 2. Methods.
E N D
11 Methods CE00858-1: Fundamental Programming Techniques November 14 11 Methods 1
Objectives In this session, we will: • introduce methods and look at the main() method • implement methods and call them • pass values into methods • return values from methods November 14 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: • 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
Methods in Java 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 returnType methodName (parameters) { statements; } method body 11 Methods
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 } } 11 Methods
Structure of a class 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 } } • class may have many methods 11 Methods
Method implementation • if a program is to be implemented using methods, need to: • 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
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 () { System.out.println("Hello and welcome"); System.out.println("How are you?"); } 11 Methods
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 (); } public static void greet () { System.out.println("Hello and welcome"); System.out.println("How are you?"); } } 11 Methods
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 parameter public static void greet (String name) { System.out.println("Hello " + name + " and welcome"); System.out.println("How are you?"); } 11 Methods
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(); greet (yourName); } public static void greet (String name) { System.out.println("Hello " + name + " and welcome"); System.out.println("How are you?"); } } value for parameter value for parameter 11 Methods
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 11 Methods
Swap.java public class Swap { 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); } public static void swap (int a, int b) { int temp = a; a = b; b = temp; } } what is output? 11 Methods
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: • 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
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?"); return name; } return statement 11 Methods
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 11 Methods
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?"); } } 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?"); return name; } } GreetUser.java 11 Methods
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 11 Methods
Method example – Underline • 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 • problem: • a program is required to output a row of 10 stars, followed by a row of 15 @ symbols 11 Methods
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 11 Methods
//passing parameters to methods public class Underline { public static void main (String [] args) { underline('*', 10); underline('@', 15); } public static void underline (char ch, int times) { for (int i = 0; i < times; i++) { System.out.print(ch); } System.out.println(); } } Underline.java 11 Methods
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? • determine larger of num1 and num2 • determine larger of num3 and num4 • determine larger of two previous results • output largest number 11 Methods
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 11 Methods
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 11 Methods
//program to show return values import java.util.*; 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(); //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))); } Largest4.java November 14 11 Methods 25
public static int larger(int a, int b) { int largerNum; if (a > b) { largerNum = a; } else { largerNum = b; } return largerNum; } } November 14 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 November 14 11 Methods 27