Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Methods

Similar presentations


Presentation on theme: "Introduction to Methods"— Presentation transcript:

1 Introduction to Methods

2 Introduction Modules Small pieces of a problem
e.g., divide and conquer Facilitate design, implementation, operation and maintenance of large programs

3 Program Modules in Java
Methods (procedural programming) Classes (object oriented programming) Java API provides several modules Programmers can also create modules e.g., programmer-defined methods Methods Invoked by a method call Returns a result to calling method (caller) Similar to a boss (caller) asking a worker (called method) to complete a task. The boss method delegates certain jobs to specific methods. Modified by Evan Korth

4 Examples of methods A method that determines the maximum of two numbers. A method that sorts a list of names A method that opens a file from the file system. A method that reads from the open file. A method that opens a new socket to the internet. A method that reads from that socket. A method that parses an integer value from a String. A method that gets a String from the user.

5 Important concept #1 Divide and Conquer: Break large programs into a series of smaller modules Helps manage complexity Makes it easier to build large programs Makes it easier to debug programs

6 Important concept #2 Abstraction: Most of the time, you need to know what a method does, but not how it actually does it. Also helps manage complexity You use other people’s code without knowing how it does it’s job.

7 Using Static methods in the Java API

8 Math-Class Methods Class java.lang.Math
Provides common mathematical calculations Calculate the square root of 900.0: Math.sqrt( ) Method sqrt belongs to class Math Dot (.) allows access to method sqrt The argument is located inside parentheses

9 Often we want our programs to generate random numbers.
games of chance testing without user interaction java.lang.Math provides a method which can be used to generate random numbers

10 Random-Number Generation
Java random-number generators Math.random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. What if we want to generate random integers?

11 Random-Number Generation
( int ) ( Math.random() * 6 ) Produces integers from 0 - 5

12 Produce integers in range 1-6
// Fig. 6.8: RollDie.java // Roll a six-sided die 6000 times. import javax.swing.*; 4 public class RollDie { 6 public static void main( String args[] ) { int frequency1 = 0, frequency2 = 0, frequency3 = 0, frequency4 = 0, frequency5 = 0, frequency6 = 0, face; 11 // summarize results for ( int roll = 1; roll <= 6000; roll++ ) { face = 1 + ( int ) ( Math.random() * 6 ); 15 // determine roll value and increment appropriate counter switch ( face ) { 18 case 1: frequency1; break; 22 case 2: frequency2; break; 26 case 3: frequency3; break; 30 RollDie.java Line 14 Produce integers in range 1-6 Lines Increment appropriate frequency counter, depending on randomly generated number Produce integers in range 1-6 Increment appropriate frequency counter, depending on randomly generated number

13 You do not need to know JTextArea for this class!
case 4: frequency4; break; 34 case 5: frequency5; break; 38 case 6: frequency6; break; 42 } // end switch 44 } // end for 46 JTextArea outputArea = new JTextArea(); 48 outputArea.setText( "Face\tFrequency" + "\n1\t" + frequency1 + "\n2\t" + frequency2 + "\n3\t" + frequency3 + "\n4\t" + frequency4 + "\n5\t" + frequency5 + "\n6\t" + frequency6 ); 53 JOptionPane.showMessageDialog( null, outputArea, "Rolling a Die 6000 Times", JOptionPane.INFORMATION_MESSAGE ); 56 System.exit( 0 ); // terminate application 58 } // end main 60 61 } // end class RollDie RollDie.java This is different from the example I showed in the compiler. I left it this way to show you that showMessageDialog() can take other objects besides String for the message. Remember the API. You do not need to know JTextArea for this class!

14 User Defined Methods Declarations
Allow programmers to modularize programs Makes program development more manageable Software reusability Avoid repeating code Local variables Declared in method declaration Parameters Communicates information between methods via method calls Programmers can write customized methods

15 Method square returns int that result stores
1 // Fig. 6.3: SquareIntegers.java 2 // Creating and using a programmer-defined method. 3 public class SquareIntegers { 4 public static void main (String args[]) 5 { 6 int result; // store result of call to method square 7 // loop 10 times 8 for ( int counter = 1; counter <= 10; counter++ ) { 9 result = square( counter ); // method call 10 // print the result of one call to the method 11 System.out.println ("The square of " + counter + " is " + result ); 13 } // end for 14 } // end method main() 15 // square method declaration 16 public static int square( int y ) 17 { 18 return y * y; // return square of y 19 } // end method square 20 } // end class SquareIntegers Line 9: method call to square line 16: header for method square. States that we have a method that accepts one integer as a parameter and returns one integer line 18: returns the value y * y Method square returns int that result stores y is the parameter of method square Method square returns the square of y  2003 Prentice Hall, Inc. All rights reserved. Modified by Evan Korth

16 User defined Method Declarations
General format of method declaration: modifiers return-value-type method-name( parameter1, …, parameterN ) { declarations and statements } Method can also return values: return expression;

17 As with variables naming methods is important
Naming your methods As with variables naming methods is important You should give your methods names which clearly describe what the function is doing helps debugging helps others read your code Same rules as naming variables E.g. public static double calculateTax( int sale ) When you write about a method in an explanation use the parenthesis to indicate you are referencing a method (as opposed to a regular variable): E.g. //call squareInteger() to calculate the square

18 Good programming with methods
A method should do one and only one useful action If you see names for your method that suggest multiple actions then it’s time to break it up into separate functions; for example, calculateTaxAndPrintReturnAndSaveFile(); -ugh If you do something more than once in a program, you should write a method for that action.

19 More Good Programming If you have written a method to do something in one project, and you need to do the same action in another project, you should reuse the method. In Java this is usually accomplished by using classes which we will cover later this semester.

20 You can only return one value from a method. Returning void
Return Value Types You can only return one value from a method. Returning void void: means nothing A method that returns void therefore returns nothing. Hence, there is no need for the optional return statement. But using one can force early exit from the method. Example: public static void printIntro (int n);

21 Unlike return values, you can pass as many parameters as you like.
Parameter Data Types Unlike return values, you can pass as many parameters as you like. To pass more than one parameter, you need to separate the parameters with commas. public static int max (int x, int y) { /*body*/ }

22 Warning Unlike declaring variables, you must specifically state the type for multiple variables For example takeTwoInts( int x, y ) is incorrect Instead you must write takeTwoInts(int x, int y)

23 No parameters You can also have a method that accepts no parameters. In such case, you would just have an empty parameter list. E.g. public static int rollDie () public static void printIntro ()

24 Argument Promotion Coercion of arguments Promotion rules
Forcing arguments to appropriate type to pass to method e.g., System.out.println( Math.sqrt( 4 ) ); Evaluates Math.sqrt( 4 ) Then evaluates System.out.println() Promotion rules Specify how to convert types without data loss

25

26  2000 Prentice Hall, Inc. All rights reserved.
Exercise 1 Implement the following methods Method convertToCelsius returns the Celsius equivalent of a Fahrenheit temperature (( 5.0 / 9.0 * ( fTemp - 32 ) ) Method convertToFahrenheit returns the Fehrenheit equivalent of a Celsius temperature ( 9.0 / 5.0 * cTemp + 32 ) Use these methods to write a program that prints charts showing the Fahrenheit equivalent of all Celsius temperatures from 0 to 100 degrees, and the Celsius equivalents of all Fahrenheit temperatures from 32 to 212 degrees. Print the output in a neat tabular format.  2000 Prentice Hall, Inc. All rights reserved.

27 Exercise 2 Write a method that will print a line of stars. The method should take one parameter which will determine the number of stars to print. Write a main() method which calls the star printing method 5 times using random numbers from

28 When is the return statement required?
review When is the return statement required? What do the following method headers tell us? public static int max (int a, int b) public static void nPrintln (String s, int n) public static void main (String args[]) public static int max (int a, n) public static String pickLine ()

29 review Given the following method headers: public static int max (int x, int y) public static double min (double x, double y) Which of the following method calls are legal? max (1,2); min (1,2); max (1.0, 2.0); min (1.0, 2.0);

30 Method Overloading Method overloading Several methods of the same name
Different parameter set for each method Number of parameters Parameter types The Java compiler determines which method to use based on the parameters. Can also be used in conjunction with argument coercion. The combination can lead to ambiguous invocation which is an error

31 Understanding Scope

32 Determines where the variable can be referenced in a program.
Scope Determines where the variable can be referenced in a program. By understanding scope, you can make your programs: more modular easier to debug

33 Scope of Declarations Scope
Portion of the program that can reference an entity by its name Basic scope rules Scope of a parameter declaration The entire method Scope of a local-variable declaration From where it is declared until the end of the block it is declared in Scope of a local-variable declaration that appears in the initialization section of a for statement’s header The entire code block of the for loop Modified by Evan Korth

34 pass by value In Java when a parameter is passed to a method and the variable is modified by that method, the value does not change upon return to the calling method (there are exceptions to this including passing arrays and passing object references) This is not true in all programming languages.

35 Good Programming Habits
Pick a method name that strongly, completely and clearly describes what the function does or returns E.g. verb-plus-object or description of returned value (getters, setters, predicates are object orientated naming conventions) Make sure your actual parameters (i.e. the actual data you pass to a method) matches the data type the method expects. Make sure you use all the parameters in your method; if not, lose the ones you don’t use. Document any assumptions about your parameters!


Download ppt "Introduction to Methods"

Similar presentations


Ads by Google