Transcript ppt

10/25: Methods & templates
•
•
•
•
•
•
Return to concepts: methods
Math class methods
1st Program of the day
About DrawLine.java modifications
Method definitions
Math.random()
Methods
• recall: a method is an action; something to do.
• terminology:
Java API, Java class library
programmer-defined methods
instance (global) versus local variables
methods are invoked by calling a method.
methods return a result.
• Methods bear a conceptual resemblance to
functions in equations and to templates.
Methods: what they look like
• general format of methods:
Names of
methods
look similar
to names of
variables &
objects: they
don’t start
with capital
letter or
numbers.
methodname ( argument )
methodname ( arg, arg )
Methods can have
one or more
arguments.
Multiple arguments
are separated by
commas.
Classname.methodname ( argument )
Classname.methodname ( arg, arg )
Methods retrieved from libraries have the name of
the class that they are associated with in front
separated by a period.
Method headers: what they look like
general format of methods:
Parameters are templates
for the arguments that the
method will use as input.
Parameter types specify the
kind of arguments that the
method will accept as input.
privacy returntype methodname ( type parameter )
privacy returntype methodname (type prm, type prm)
optional: public or
private? Can this
method be used
outside this class or
not?
Return types specify the
kind of variables that the
method will return (or
output).
Sample Program
public class DrawLine extends JApplet {
public void paint ( Graphics g )
{
int y;
for ( int x = 0 ; x < 150 ; x++ ) {
y = drawDot ( x );
g.drawString ( "." , x , y );
}
}
int drawDot ( int a ) {
int b;
b = 2 * a + 10 ;
return b;
}
}
Math Class Methods
• Math class methods provide mathematical
functions for us to use. A few:
• abs ( x )
absolute value of x
• exp ( x )
exponential of x; ex
• max ( x , y ) returns larger value ( x or y )
• min ( x , y ) returns smaller value
• pow ( x , y ) xy, x to the yth power
• sqrt ( x )
square root of x
Sample Program
public class CallMe extends JApplet {
public void paint ( Graphics g )
{
g.drawString ( " My phone number is " , 25, 25 );
for ( int x = 0 ; x < 8 ; x++ ) {
if ( x == 3 ) {
g.drawString ( " - " , 50 + x * 7 , 40 );
continue;
}
g.drawString ( " " + randomNumber( 9 ), 50 + x*7 , 40 );
}
}
public int randomNumber ( int a )
{
int b = 0;
b = (int)( Math.random() * a + 1 );
return b;
}
}
1st Program of the day
• Modify DrawLine to allow user input for the
slope (coefficient of x) and the y-intercept.
y = 2x + 10
• Modify DrawLine to draw a curved line instead
of a straight line (think of parabolas and x2
functions).
Math.random, more methods
• About DrawLine.java modifications
– allow user input
– draw a curve
• Method definitions
• Math.random()
Allow User Input (1 of 2)
• Add in an init method for two input dialog boxes.
double coeff;
double yInt;
//note that I declared these
//two variables as global.
public void init ()
{
cText = JOptionPane.showInputDialog
(“Coefficient, please.”);
yText = JOptionPane.showInputDialog
(“Y-intercept, please.”);
coeff = Double.parseDouble ( cText );
yInt = Double.parseDouble ( yText );
}
Allow User Input (2 of 2)
• Use coeff & yInt in the drawDot method
int drawDot ( int a )
{
int b;
//must cast to int below
b = (int) (coeff * a + yInt) ;
return b;
}
Draw a Curve
• Change the formula in the drawDot method from:
int drawDot ( int a )
{
int b;
b = 2 * a + 10 ;
return b;
}
• to:
int drawDot ( int a )
{
int b;
b = 2 * ( a * a ) + 10 ;
return b;
}
Method Definitions
• in SquareInt.java (simple version below), we see
a method called square:
public void paint ( Graphics g )
{
g.drawString(square(x) + “ “,25,25);
}
public int square ( int y )
{
return y * y ;
}
Method Definitions
public void paint ( Graphics g )
{
g.drawString(square(x) + “ “,25,25);
}
the method square is called in this line. Because it is
in parentheses, x is the value to use as the input.
public int square ( int y )
{
return y * y ;
}
Method Definitions
public void paint ( Graphics g )
{
g.drawString(square(x) + “ “,25,25);
}
x fits the requirement that it must be an integer.
public int square ( int y )
{
return y * y ;
}
Method Definitions
public void paint ( Graphics g )
{
g.drawString(square(x) + “ “,25,25);
}
using x as the input, the method calculates a return value.
public int square ( int y )
{
return y * y ;
}
Method Definitions
public void paint ( Graphics g )
{
x * x
g.drawString(square(x) + “ “,25,25);
} the returned value is what replaces the square(x).
This value is of type int.
public int square ( int y )
{
return y * y ;
}
Example: Maximum.java (p. 212)
public void init ()
{
(stuff left out…)
double max = maximum ( num1, num2, num3 );
outputArea.setText ( “Max is “ + max );
}
public double maximum ( double x, double y, double z )
{
return Math.max ( x, Math.max ( y, z ) );
}
Important: Coercion of Arguments
• Java will automatically promote variables to
larger types when necessary; EX: int to
double.
• In Math.pow, the requested types of input are
double. However, Java will create a double
version of an int variable to use in that method
automatically.
• go to Java class index for Math.pow
• read p. 213-214 carefully
Math.random()
• generates a random double number in the range
0.0 <= x < 1.0
• To utilize this function, we use scaling & shifting.
• scaling: multiplying the function by a number to
get the range we want.
• shifting: adding a number to the function to get
the beginning point of the range that we want.
Math.random()
• EX: Math.random ()
• shift it by 1: Math.random() + 1 makes 1 to <2
• scale it by 6: Math.random()* 6 makes 0 to <5
• to simulate rolling a die, we want 6 possibilities
(or a range of 6), from 1 to 6. They have to be
integers.
(int) ( Math.random() * 6 + 1 );
2nd Program of the day
• pg. 220 RollDie.java
• Modify the program to allow the user to input
how many times to roll the die.