Java Procedural Programming

Java Procedural Programming

Department of Computer and Information Science, School of Science, IUPUI Procedural Programming using Java Dale Roberts, Lecturer Computer Science, IUPUI E-mail: [email protected] Dale Roberts Introduction Divide and conquer technique Construct a large program from smaller pieces (or modules) Can be accomplished using methods static methods can be called without the need for an object of the class Random number generation Constants Dale Roberts Methods are Modules Methods Called functions or procedures in some other languages Modularize programs by separating its tasks into selfcontained units Enable a divide-and-conquer approach Are reusable in later programs Prevent repeating code

Dale Roberts Methods That Come With Java Java Application Programming Interface (API) Also known as the Java Class Library Contains predefined methods and classes Related classes are organized into packages Includes methods for mathematics, string/character manipulations, input/output, databases, networking, file processing, error checking and more Dale Roberts Accessing Javas Documentation Familiarize yourself with the rich collection of classes and methods provided by the Java API (java.sun.com/javase/6/docs/api/). Section 6.8 presents an overview of several common packages. In Appendix G explains how to navigate the Java API documentation. Dale Roberts Invoking Methods static method (or class method) Applies to the class as a whole instead of a specific object of the class Call a static method by using the method call: ClassName.methodName( arguments ) All methods of the Math class are static example: Math.sqrt( 900.0 )

Dale Roberts Stepwise Decomposition Dale Roberts java.lang Package Class Math is part of the java.lang package, which is implicitly imported by the compiler, so it is not necessary to import class Math to use its methods. Dale Roberts Defining Constants Constants Keyword final Cannot be changed after initialization static fields (or class variables) Are fields where one copy of the variable is shared among all objects of the class Math.PI and Math.E are final static fields of the Math class Dale Roberts Main Method Method main main is declared static so it can be invoked without

creating an object of the class containing main Any class can contain a main method The JVM invokes the main method belonging to the class specified by the first command-line argument to the java command Dale Roberts Math Methods Method Description Example abs( x ) absolute value of x ceil( x ) rounds x to the smallest integer not less than x abs( 23.7 ) is 23.7 abs( 0.0 ) is 0.0 abs( -23.7 ) is 23.7 ceil( 9.2 ) is 10.0 ceil( -9.8 ) is -9.0 cos( x )

trigonometric cosine of x (x in radians) cos( 0.0 ) is 1.0 exp( x ) exponential method ex exp( 1.0 ) is 2.71828 exp( 2.0 ) is 7.38906 floor( x ) rounds x to the largest integer not greater Floor( 9.2 ) is 9.0 than x floor( -9.8 ) is -10.0 log( x ) natural logarithm of x (base e) log( Math.E ) is 1.0 log( Math.E * Math.E ) is 2.0 max( x, y ) larger value of x and y max( 2.3, 12.7 ) is 12.7 max( -2.3, -12.7 ) is -2.3 min( x, y ) smaller value of x and y min( 2.3, 12.7 ) is 2.3

min( -2.3, -12.7 ) is -12.7 pow( x, y ) x raised to the power y (i.e., xy) pow( 2.0, 7.0 ) is 128.0 pow( 9.0, 0.5 ) is 3.0 sin( x ) trigonometric sine of x (x in radians) sin( 0.0 ) is 0.0 sqrt( x ) square root of x sqrt( 900.0 ) is 30.0 tan( x ) trigonometric tangent of x (x in radians) tan( 0.0 ) is 0.0 Dale Roberts Declaring Methods with Multiple Parameters Multiple parameters can be declared by specifying a comma-separated list. Arguments passed in a method call must be consistent with the number, types and order of the parameters

Sometimes called formal parameters 12 Dale Roberts 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Outline // Fig. 6.3: MaximumFinder.java // Programmer-declared method maximum. import java.util.Scanner; 13 public class MaximumFinder { // obtain three floating-point values and locate the maximum value public void determineMaximum() { // create Scanner for input from command window Scanner input = new Scanner( System.in ); MaximumFinder.java (1 of 2) // obtain user input System.out.print( "Enter three floating-point values separated by spaces: " ); double number1 = input.nextDouble(); // read first double double number2 = input.nextDouble(); // read second double double number3 = input.nextDouble(); // read third double // determine the maximum value double result = maximum( number1, number2, number3 ); Call method maximum // display maximum value

System.out.println( "Maximum is: " + result ); } // end method determineMaximum 26 Display maximum value Dale Roberts 27 // returns the maximum of its three double parameters 28 public double maximum( double x, double y, double z ) 29 { 30 Outline Declare the maximum method 14 double maximumValue = x; // assume x is the largest to start 31

32 // determine whether y is greater than maximumValue 33 if ( y > maximumValue ) 34 maximumValue = y; Compare y and maximumValue (2 of 2) 35 36 // determine whether z is greater than maximumValue 37 if ( z > maximumValue ) 38 maximumValue = z; Compare z and maximumValue 39 40

return maximumValue; 41 } // end method maximum MaximumFinder. java Return the maximum value 42 } // end class MaximumFinder Dale Roberts 1 // Fig. 6.4: MaximumFinderTest.java 2 // Application to test class MaximumFinder. 3 4 public class MaximumFinderTest 5 {

6 // application starting point 7 public static void main( String args[] ) 8 { Create a MaximumFinder object 9 MaximumFinder maximumFinder = new MaximumFinder(); 10 maximumFinder.determineMaximum(); 11 } // end main 15 MaximumFinderTest .java

Call the determineMaximum method 12 } // end class MaximumFinderTest Enter three floating-point values separated by spaces: 9.35 2.74 5.1 Maximum is: 9.35 Enter three floating-point values separated by spaces: 5.8 12.45 8.32 Maximum is: 12.45 Enter three floating-point values separated by spaces: 6.46 4.12 10.54 Maximum is: 10.54 Dale Roberts Outline Built-in Methods with Parameters Reusing method Math.max The expression Math.max( x, Math.max( y, z ) ) determines the maximum of y and z, and then determines the maximum of x and that value String concatenation Using the + operator with two Strings concatenates them into a new String Using the + operator with a String and a value of another data type concatenates the String with a String representation of the other value When the other value is an object, its toString method is called to generate its String representation

Dale Roberts Invoking Methods Three ways to call a method: Use a method name by itself to call another method of the same class Use a variable containing a reference to an object, followed by a dot (.) and the method name to call a method of the referenced object Use the class name and a dot (.) to call a static method of a class static methods cannot call non-static methods of the same class directly Dale Roberts How Method Calls Are Implemented Stacks Last-in, first-out (LIFO) data structures Items are pushed (inserted) onto the top Items are popped (removed) from the top Program execution stack Also known as the method call stack Return addresses of calling methods are pushed onto this stack when they call other methods and popped off when control returns to them Dale Roberts How Method Calls Are Implemented

A methods local variables are stored in a portion of this stack known as the methods activation record or stack frame When the last variable referencing a certain object is popped off this stack, that object is no longer accessible by the program Will eventually be deleted from memory during garbage collection Stack overflow occurs when the stack cannot allocate enough space for a methods activation record Dale Roberts Argument Promotion (weak typing) Type Valid promotions double float long int char short byte boolean None double float or double long, float or double int, long, float or double int, long, float or double (but not char)

short, int, long, float or double (but not char) None (boolean values are not considered to be numbers in Java) Dale Roberts Java Packages Including the declaration import java.util.Scanner; allows the programmer to use Scanner instead of java.util.Scanner Java API documentation java.sun.com/javase/6/docs/api/ Overview of packages in Java SE 6 java.sun.com/javase/6/docs/api/overview-summary.html Dale Roberts Package Description java.applet The Java Applet Package contains a class and several interfaces required to create Java appletsprograms that execute in Web browsers. (Applets are discussed in Chapter 20, Introduction to Java Applets; interfaces are discussed in Chapter 10, Object_-Oriented Programming: Polymorphism.) java.awt The Java Abstract Window Toolkit Package contains the classes and interfaces required

to create and manipulate GUIs in Java 1.0 and 1.1. In current versions of Java, the Swing GUI components of the javax.swing packages are often used instead. (Some elements of the java.awt package are discussed in Chapter 11, GUI Components: Part 1, Chapter 12, Graphics and Java2D, and Chapter 22, GUI Components: Part 2.) java.awt.event The Java Abstract Window Toolkit Event Package contains classes and interfaces that enable event handling for GUI components in both the java.awt and javax.swing packages. (You will learn more about this package in Chapter 11, GUI Components: Part 1 and Chapter 22, GUI Components: Part 2.) java.io The Java Input/Output Package contains classes and interfaces that enable programs to input and output data. (You will learn more about this package in Chapter 14, Files and Streams.) java.lang The Java Language Package contains classes and interfaces (discussed throughout this text) that are required by many Java programs. This package is imported by the compiler into all programs, so the programmer does not need to do so. Fig. 6.6 | Java API packages (a subset). (Part 1 of 2) 22 Dale Roberts Package

Description java.net The Java Networking Package contains classes and interfaces that enable programs to communicate via computer networks like the Internet. (You will learn more about this in Chapter 24, Networking.) java.text The Java Text Package contains classes and interfaces that enable programs to manipulate numbers, dates, characters and strings. The package provides internationalization capabilities that enable a program to be customized to a specific locale (e.g., a program may display strings in different languages, based on the users country). java.util The Java Utilities Package contains utility classes and interfaces that enable such actions as date and time manipulations, random-number processing (class Random), the storing and processing of large amounts of data and the breaking of strings into smaller pieces called tokens (class StringTokenizer). (You will learn more about the features of this package in Chapter 19, Collections.) javax.swing The Java Swing GUI Components Package contains classes and interfaces for Javas Swing GUI components that provide support for portable GUIs. (You will learn more about this package in Chapter 11, GUI Components: Part 1 and Chapter 22, GUI Components: Part 2.) javax.swing.event The Java Swing Event Package contains classes and interfaces that enable event handling (e.g., responding to button clicks) for GUI components in package javax.swing. (You will learn more about this package in Chapter 11, GUI Components: Part 1 and Chapter 22, GUI

Components: Part 2.) Fig. 6.6 | Java API packages (a subset). (Part 2 of 2) 23 Dale Roberts Java Packages Including the declaration import java.util.Scanner; allows the programmer to use Scanner instead of java.util.Scanner Java API documentation java.sun.com/javase/6/docs/api/ Overview of packages in Java SE 6 java.sun.com/javase/6/docs/api/overview-summary.html Dale Roberts Scope Rules Basic scope rules Scope of a parameter declaration is the body of the method in which appears Scope of a local-variable declaration is from the point of declaration to the end of that block Scope of a local-variable declaration in the initialization section of a for header is the rest of the for header and the body of the for statement Scope of a method or field of a class is the entire body of the class

Dale Roberts Shadowing Shadowing A field is shadowed (or hidden) if a local variable or parameter has the same name as the field This lasts until the local variable or parameter goes out of scope Dale Roberts 1 // Fig. 6.11: Scope.java 2 // Scope class demonstrates field and local variable scopes. Outline 27 3 4 public class Scope 5 {

6 // field that is accessible to all methods of this class 7 private int x = 1; Scope.java (1 of 2) 8 9 // method begin creates and initializes local variable x 10 // and calls methods useLocalVariable and useField 11 public void begin() 12 { 13 Shadows field x

int x = 5; // method's local variable x shadows field x 14 15 System.out.printf( "local x in method begin is %d\n", x ); 16 17 useLocalVariable(); // useLocalVariable has local x 18 useField(); // useField uses class Scope's field x 19 useLocalVariable(); // useLocalVariable reinitializes local x 20 21 useField(); // class Scope's field x retains its value Dale Roberts Display value of local variable x 22 23

Outline System.out.printf( "\nlocal x in method begin is %d\n", x ); 28 } // end method begin 24 25 // create and initialize local variable x during each call 26 public void useLocalVariable() 27 { 28 Shadows field x int x = 25; // initialized each time useLocalVariable is called 29 30 System.out.printf(

31 "\nlocal x on entering method useLocalVariable is %d\n", x ); 32 ++x; // modifies this method's local variable x 33 System.out.printf( 34 35 Scope.java (2 of 2) "local x before exiting method useLocalVariable is %d\n", x ); Display value of local variable x } // end method useLocalVariable 36 37 // modify class Scope's field x during each call 38

public void useField() 39 { 40 41 System.out.printf( "\nfield x on entering method useField is %d\n", x ); 42 x *= 10; // modifies class Scope's field x 43 System.out.printf( 44 45 "field x before exiting method useField is %d\n", x ); } // end method useField 46 } // end class Scope Dale Roberts Display value of

field x 1 // Fig. 6.12: ScopeTest.java 2 // Application to test class Scope. Outline 29 3 4 public class ScopeTest 5 { 6 // application starting point 7 public static void main( String args[] ) 8

{ 9 Scope testScope = new Scope(); 10 testScope.begin(); 11 } // end main 12 } // end class ScopeTest local x in method begin is 5 local x on entering method useLocalVariable is 25 local x before exiting method useLocalVariable is 26 field x on entering method useField is 1 field x before exiting method useField is 10 local x on entering method useLocalVariable is 25 local x before exiting method useLocalVariable is 26 field x on entering method useField is 10 field x before exiting method useField is 100 local x in method begin is 5 Dale Roberts ScopeTes t.java

6.12 Method Overloading Method overloading Multiple methods with the same name, but different types, number or order of parameters in their parameter lists Compiler decides which method is being called by matching the method calls argument list to one of the overloaded methods parameter lists A methods name and number, type and order of its parameters form its signature Differences in return type are irrelevant in method overloading Overloaded methods can have different return types Methods with different return types but the same signature cause a compilation error 30 Dale Roberts 1 2 3 4 5 6 7 8 9 10 11

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 // Fig. 6.13: MethodOverload.java // Overloaded method declarations. Outline 31 public class MethodOverload Correctly calls the { // test overloaded square methods public void testOverloadedMethods() { System.out.printf( "Square of integer 7 is %d\n", square( 7 ) );

System.out.printf( "Square of double 7.5 is %f\n", square( 7.5 ) ); } // end method testOverloadedMethods // square method with int argument Correctly calls the public int square( int intValue ) { System.out.printf( "\nCalled square with int argument: %d\n", intValue ); return intValue * intValue; } // end method square with int argument MethodOverl oad.java square of double method Declaring the square of int method // square method with double argument public double square( double doubleValue ) { System.out.printf( "\nCalled square with double argument: %f\n", doubleValue ); return doubleValue * doubleValue; } // end method square with double argument } // end class MethodOverload Dale Roberts square of int method

Declaring the square of double method 1 2 3 4 5 6 7 8 9 10 11 // Fig. 6.14: MethodOverloadTest.java // Application to test class MethodOverload. public class MethodOverloadTest { public static void main( String args[] ) { MethodOverload methodOverload = new MethodOverload(); methodOverload.testOverloadedMethods(); } // end main } // end class MethodOverloadTest Called square with int argument: 7 Square of integer 7 is 49 Called square with double argument: 7.500000 Square of double 7.5 is 56.250000 Dale Roberts

Outline 32 MethodOverloadT est.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // Fig. 6.15: MethodOverloadError.java // Overloaded methods with identical signatures // cause compilation errors, even if return types are different. public class MethodOverloadError

{ // declaration of method square with int argument public int square( int x ) { return x * x; } Dale Roberts 33 MethodOverload Error.java Same method signature // second declaration of method square with int argument // causes compilation error even though return types are different public double square( int y ) { return y * y; } } // end class MethodOverloadError MethodOverloadError.java:15: square(int) is already defined in MethodOverloadError public double square( int y ) ^ Compilation 1 error Outline

error Acknowledgements Deitel, Java How to Program Dale Roberts

Recently Viewed Presentations

  • Back Calculation of Rock Mass Modulus using Finite

    Back Calculation of Rock Mass Modulus using Finite

    Results from ASTM, Unal, and COMSOL show very good consistency between different methods. Sensitivity analysis shows that Rock mass modulus is not very sensitive to change in Poisson's ratio.
  • Demand and Supply Review (Chp. 4) - University of Delaware

    Demand and Supply Review (Chp. 4) - University of Delaware

    Demand and Supply Review (Chp. 4) What are price rigidities? What is a price floor vs price ceiling? Does a price ceiling create a shortage or a surplus in the market? ... You operate a burger house producing beef and...
  • Destination: College - Peel District School Board

    Destination: College - Peel District School Board

    The DSSS mident number (909673) Your student number. Your complete mailing address (including postal code) Payment format (credit card strongly recommended, cheque, money order) $140; $47 for each additional choice. Appropriate email; one you check. Don't tell us you have...
  • Travelling Abroad training programme… - Girlguiding

    Travelling Abroad training programme… - Girlguiding

    Objectives. The objectives of this session are to enable participants to: prepare an international trip risk assessment, consider the importance of reviewing it regularly and discuss what participants would do in a variety of situations involving an element of risk
  • SEISMICALLY RETROFITTING AND UPGRADING RC-MRFs BY USING EXPANDED

    SEISMICALLY RETROFITTING AND UPGRADING RC-MRFs BY USING EXPANDED

    Design and maximum sustainable PGA of studied RC-MRFs established by Pushover analysis (* - the frames need node retrofitted) Maximum sustainable PGA of some studied frames, obtained by Pushover analysis, are given in this figure. As we can see that...
  • Section 28-2 Homeostasis Write everything that is underlined

    Section 28-2 Homeostasis Write everything that is underlined

    Section 28-2 "Homeostasis" Write everything that is underlined KEY CONCEPT Homeostasis is the regulation and maintenance of the internal environment of the body I. Homeostasis Conditions within the body must remain within a narrow range - like your body temperature...
  • Jeopardy - Santa Monica College

    Jeopardy - Santa Monica College

    A negatively charged ion 4 types of tissues An organ of the nervous system Basic chemistry Cell structure Intro to physiology A term for a molecule that is hydrophobic and hydrophilic The type of chemical bond that is destroyed by...
  • Data Governance Toolkit: Not as boring as you think, and ...

    Data Governance Toolkit: Not as boring as you think, and ...

    Every 2 days we create 2.5 quintillion bytes of data—as much as we did from the beginning of time until 2003. (IBM) Over 90% of all the data in the world was created in the past 2 years. (MS, IBM)...