Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Programming: From Problem Analysis to Program Design, 3e Chapter 7 User-Defined Methods.

Similar presentations


Presentation on theme: "Java Programming: From Problem Analysis to Program Design, 3e Chapter 7 User-Defined Methods."— Presentation transcript:

1 Java Programming: From Problem Analysis to Program Design, 3e Chapter 7
User-Defined Methods

2 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 Design, 3e

3 Chapter Objectives (continued)
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 Java Programming: From Problem Analysis to Program Design, 3e

4 Predefined Classes Methods already written and provided by Java
Organized as a collection of classes (class libraries) To use: import package Method type: data type of value returned by method Java Programming: From Problem Analysis to Program Design, 3e

5 Predefined Classes (continued)
Java Programming: From Problem Analysis to Program Design, 3e

6 Predefined Classes (continued)
Java Programming: From Problem Analysis to Program Design, 3e

7 Predefined Classes (continued)
Java Programming: From Problem Analysis to Program Design, 3e

8 Predefined Classes (continued)
Java Programming: From Problem Analysis to Program Design, 3e

9 class Character (Package: java.lang)
Java Programming: From Problem Analysis to Program Design, 3e

10 class Character (Package: java.lang) (continued)
Java Programming: From Problem Analysis to Program Design, 3e

11 class Character (Package: java.lang) (continued)
Java Programming: From Problem Analysis to Program Design, 3e

12 Syntax: Value-Returning Method
Java Programming: From Problem Analysis to Program Design, 3e

13 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 Design, 3e

14 Syntax Syntax: Formal Parameter List Method Call
-The syntax of the formal parameter list is: Method Call -The syntax to call a value-returning method is: Java Programming: From Problem Analysis to Program Design, 3e

15 Syntax (continued) Syntax: Actual Parameter List
-The syntax of the actual parameter list is: Syntax: return Statement -The return statement has the following syntax: return expr; Java Programming: From Problem Analysis to Program Design, 3e

16 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 Design, 3e

17 Equivalent Method Definitions (continued)
public static double larger(double x, double y) { if (x >= y) return x; else return y; } Java Programming: From Problem Analysis to Program Design, 3e

18 Equivalent Method Definitions (continued)
public static double larger(double x, double y) { if (x >= y) return x; return y; } Java Programming: From Problem Analysis to Program Design, 3e

19 Programming Example: Palindrome Number
Palindrome: 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 Design, 3e

20 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 Design, 3e

21 Sample Runs: Palindrome Number
Java Programming: From Problem Analysis to Program Design, 3e

22 Sample Runs: Palindrome Number (continued)
Java Programming: From Problem Analysis to Program Design, 3e

23 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 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 Design, 3e

24 Programming 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 Java Programming: From Problem Analysis to Program Design, 3e

25 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++) max = larger(max, num); } System.out.println("The largest number is " + max); Java Programming: From Problem Analysis to Program Design, 3e

26 Sample Run: Largest Number
Enter 10 numbers: The largest number is 88.55 Java Programming: From Problem Analysis to Program Design, 3e

27 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 Design, 3e

28 Void Methods: Syntax Method Definition Method Call (Within the Class)
-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 Design, 3e

29 Void Methods with Parameters: Syntax
Java Programming: From Problem Analysis to Program Design, 3e

30 Void Methods with Parameters: Syntax (continued)
Java Programming: From Problem Analysis to Program Design, 3e

31 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 Design, 3e

32 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 parameter refer to same object Java Programming: From Problem Analysis to Program Design, 3e

33 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 address, would save memory space and time, relative to copying large amount of data Java Programming: From Problem Analysis to Program Design, 3e

34 Reference Variables as Parameters: type String
Java Programming: From Problem Analysis to Program Design, 3e

35 Reference Variables as Parameters: type String (continued)
Example 7-11 public class Example7_11 { public static void main(String[] args) int num1; //Line 1 IntClass num2 = new IntClass(); //Line 2 char ch; //Line 3 StringBuffer str; //Line 4 num1 = 10; //Line 5 num2.setNum(15); //Line 6 ch = 'A'; //Line 7 str = new StringBuffer("Sunny"); //Line 8 System.out.println("Line 9: Inside main: " + "num1 = " + num1 + ", num2 = " + num2.getNum() + ", ch = " + ch + ", and str = " + str); //Line 9 Java Programming: From Problem Analysis to Program Design, 3e

36 Reference Variables as Parameters: type String (continued)
funcOne(num1, num2, ch, str); //Line 10 System.out.println("Line 11: After funcOne: " + "num1 = " + num1 + ", num2 = " + num2.getNum() + ", ch = " + ch + ", and str = " + str); //Line 11 } Java Programming: From Problem Analysis to Program Design, 3e

37 Reference Variables as Parameters: type String (continued)
public static void funcOne(int a, IntClass b, char v, StringBuffer pStr) { int num; //Line 12 int len; //Line 13 num = b.getNum(); //Line 14 a++; //Line 15 b.addToNum(12); //Line 16 v = 'B'; //Line 17 len = pStr.length(); //Line 18 pStr.delete(0, len); //Line 19 pStr.append("Warm"); //Line 20 System.out.println("Line 21: Inside funcOne: \n" + " a = " + a + ", b = " + b.getNum() + ", v = " + v + ", pStr = " + pStr + ", len = " + len + ", and num = " + num); //Line 21 } Java Programming: From Problem Analysis to Program Design, 3e

38 Reference Variables as Parameters: type String (continued)
Java Programming: From Problem Analysis to Program Design, 3e

39 Reference Variables as Parameters: type String (continued)
num1 = 10; //Line num2.setNum(15); //Line ch = 'A'; //Line 7 str = new StringBuffer("Sunny"); //Line 8 Java Programming: From Problem Analysis to Program Design, 3e

40 Reference Variables as Parameters: type String (continued)
System.out.println("Line 9: Inside main: " + "num1 = " + num1 + ", num2 = " + num2.getNum() + ", ch = " + ch + ", and str = " str); //Line 9 Java Programming: From Problem Analysis to Program Design, 3e

41 Reference Variables as Parameters: type String (continued)
int num; //Line int len; //Line num = b.getNum(); //Line 14 Java Programming: From Problem Analysis to Program Design, 3e

42 Reference Variables as Parameters: type String (continued)
num = b.getNum(); //Line 14 Java Programming: From Problem Analysis to Program Design, 3e

43 Reference Variables as Parameters: type String (continued)
a++; //Line 15 Java Programming: From Problem Analysis to Program Design, 3e

44 Reference Variables as Parameters: type String (continued)
b.addToNum(12); //Line 16 Java Programming: From Problem Analysis to Program Design, 3e

45 Reference Variables as Parameters: type String (continued)
v = 'B'; //Line 17 Java Programming: From Problem Analysis to Program Design, 3e

46 Reference Variables as Parameters: type String (continued)
len = pStr.length(); //Line 18 Java Programming: From Problem Analysis to Program Design, 3e

47 Reference Variables as Parameters: type String (continued)
pStr.delete(0, len); //Line 19 Java Programming: From Problem Analysis to Program Design, 3e

48 Reference Variables as Parameters: type String (continued)
pStr.append("Warm"); //Line 20 Java Programming: From Problem Analysis to Program Design, 3e

49 Reference Variables as Parameters: type String (continued)
System.out.println("Line 21: Inside funcOne: \n" + " a = " + a + ", b = " + b.getNum() + ", v = " + v + ", pStr = " + pStr + ", len = " + len + ", and num = " + num); //Line 21 Java Programming: From Problem Analysis to Program Design, 3e

50 Reference Variables as Parameters: type String (continued)
Java Programming: From Problem Analysis to Program Design, 3e

51 Reference Variables as Parameters: type String (continued)
System.out.println("Line 11: After funcOne: " + "num1 = " + num1 + ", num2 = " + num2.getNum() + ", ch = " + ch + ", and str = " + str); //Line 11 Java Programming: From Problem Analysis to Program Design, 3e

52 Scope of an Identifier Within a Class
Local identifier: Identifier declared within a method or block, which is visible only within that method or block Java does not allow the nesting of methods; 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; a block is a set of statements enclosed within braces Java Programming: From Problem Analysis to Program Design, 3e

53 Scope of an Identifier Within a Class (continued)
A method’s definition can contain several blocks The body of a loop or an if statement also form a block Within a class, outside of every method definition, (and every block), an identifier can be declared anywhere Java Programming: From Problem Analysis to Program Design, 3e

54 Scope of an Identifier Within a Class (continued)
Within a method, an identifier 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 method definition on the next slide, the second declaration of the variable x is illegal Java Programming: From Problem Analysis to Program Design, 3e

55 Scope of an Identifier Within a Class (continued)
public static void illegalIdentifierDeclaration() { int x; //block double x; //illegal declaration, //x is already declared ... } Java Programming: From Problem Analysis to Program Design, 3e

56 Scope Rules Scope rules of an identifier declared within a class and accessed within a method (block) of the class An identifier, say X, 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 Java Programming: From Problem Analysis to Program Design, 3e

57 Scope Rules (continued)
Suppose X is an identifier declared within a class and outside of every method’s 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 Design, 3e

58 Scope Rules (continued)
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 Design, 3e

59 Scope Rules (continued)
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 Design, 3e

60 Scope Rules: Demonstrated
Java Programming: From Problem Analysis to Program Design, 3e

61 Scope Rules: Demonstrated (continued)
Java Programming: From Problem Analysis to Program Design, 3e

62 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, or If the number of formal parameters is the same, then 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 Design, 3e

63 Method 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 Java Programming: From Problem Analysis to Program Design, 3e

64 Method Overloading (continued)
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 Design, 3e

65 Method Overloading (continued)
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 Design, 3e

66 Method Overloading (continued)
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) Java Programming: From Problem Analysis to Program Design, 3e

67 Method Overloading (continued)
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 Design, 3e

68 Programming Example: Data Comparison
Input: data from 2 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 Design, 3e

69 Programming Example: Data Comparison (continued)
Sample Output Course No Group No Course Average CSC ENG HIS MTH PHY Avg for group 1: 82.04 Avg for group 2: 82.01 Java Programming: From Problem Analysis to Program Design, 3e

70 Programming Example: Data Comparison (continued)
Java Programming: From Problem Analysis to Program Design, 3e

71 Chapter Summary Predefined methods User-defined methods
Value-returning methods Void methods Formal parameters Actual parameters Flow of Execution Java Programming: From Problem Analysis to Program Design, 3e

72 Chapter Summary (continued)
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 Design, 3e


Download ppt "Java Programming: From Problem Analysis to Program Design, 3e Chapter 7 User-Defined Methods."

Similar presentations


Ads by Google