Week 7 Power Point Slides

advertisement
Blue Box Diagram
Definition: A method is a block of instructions in a class or object that is called by name
Instance Variables
(side effects)
We pass (give)
The method
information
(expressions)
as arguments
to use
Method
contains
a
block
of
instructions
Out can come
a value that is
returned
Processing is done in the blue box
Parameters and
x = triple(10);
Arguments
• Parameter:
name a function gives an
expression used to call a method
First Call
public int triple(int x) 30
{ return x*3; }
Second Call
x = triple(20); public int triple(int x) 60
• Argument:
{ return x*3; }
expression used to call a method
• Why the difference?
– We might want to use the
method more than once.
– We might want to call a
function using literals
int z = 20;
x = triple(z);
x = triple(triple(10));
Third Call
public int triple(int x)
{ return x*3; }
60
Fourth Call
public int triple(int x) 90
{ return x*3; }
General Class Syntax
<public, private, protected> class <className>
{
… Your instance variables here …
<public, private, protected> <mods><type><methodName>(<parameters>)
{
…. Instructions here …
}
∙
∙
∙
<public, private, protected> <mods><type><methodName>(<parameters>)
{
…. Instructions here …
}
}
Example that we did in labs
public class Grader
{ public final static int LABMAX = 90;
public static void main(String[] args)
{ … instructions …}
}
Note: protected is something that can be inherited by a child class
(This is a CS 257 topic – memorize the definition for now.
Methods
Definition: Block of instructions called (executed) by name
•
Static method
–
–
•
Non static method
–
–
–
•
It is using the class name
Call round() method in Math class :
System.out.println(Math.round(4.5) ;
It is called using an instantiated object
String str = “abc”;
Call the length() method in str, an instantiated object of type String
System.out.println(str.length();
Java has a huge class library .
–
–
We can use this library to access methods that do all sorts of useful
things.
See: http://java.sun.com/j2se/1.5.0/docs/api/
Dot notation: The syntax to access methods inside classes and objects
More on static and non-static
public class MyClass
{ public static void main(String[] args)
{
MyClass data = new MyClass(); // Make instance of MyClass().
String s1 = data.name();
// The name method executes.
String s2 = name();
// Error – name() is not static .
String s3 = name2();
// OK – name2() is a static method.
String s4 = MyClass.name2(); // OK – name2() is a static method.
System.out.println(s1);
}
public String name() { return “Dan ” + doIt(); }
public String doIt() { return “Harvey”; }
public static String name2()
{ return “Static Dan Harvey”; }
}
Note: when we call methods in the same class, dot notation is not needed.
A method returning a value
public class ReturnValue
{ private int y = 10;
public static void main(String[] args)
{
ReturnValue myObject = new ReturnValue();
int x = myObject.doReturn();
System.out.println(x);
}
private int doReturn()
{
int x = 33 + y;
return x;
What prints?
Where is x visible? Where is y visible?
}
Is x in doReturn the same variable as in main?
}
Which are the instance variables?
A method with parameters
public class LotsOfParams
{ protected static int x = 3;
public static void main(String[] args)
{
LotsOfParams params = new LotsOfParams();
int y = x + 4;
int x = params.doSomething
(1,2,x + y -3,4,params.doSomething(x, y, 3, 4, 5));
}
private int doSomething(int a, int b, int c, int d, int e)
{
System.out.println(“” + c + b + d + a + e );
return a + b + c + d + e;
}
What prints? Why private? Which are the arguments?
}
Which are the parameters (formal arguments)?
Which are instance variables? What are the methods?
Pass by value
• A copy of arguments gets passed to a method,
not the variable itself
• Example
1. Call: int x = 5; tryToChange(x);
2. Method:
private void tryToChange(int x)
{ x = 3; }
3. Result: x in the call does not change! The x in the
method only lives between the method’s braces.
Question: Why doesn’t x change?
Method to search an array
public class FindMe
{ String[] list = {“hello”, “this”, “is”, “a”, “good”, “day”};
public static void main(String[] args)
{
FindMe find = new FindMe();
System.out.println(find.isItThere(“is”));
System.out.println(find.isItThere(“cat”));
}
private int isItThere(String which)
{
for (int i=0; i<list.length; i++)
{ if (list[i].equals(which)) return i; }
return -1;
}
}
Question: Why do we need find in find.isItThere(“is”));
Method to remove and add
public class RemoveMe
{ String[] list = {“hello”, “this”, “is”, “a”, “good”, “day”};
int howMany = list.length;
public static void main(String[] args)
{
removeIt(3);
addIt(“greetings”); }
private static void removeIt(int which)
{
for (int i=which; i<howMany-1; i++)
{ list[i] = list[i+1]; }
howMany--; }
public static boolean addIt(String newOne)
{
if (howMany == list.length) return false;
list[howMany++] = newOne;
} }
Review
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
What is a method?
What is an instance variable?
What is the difference between an argument an a parameter?
What does it mean to limit scope?
What is an argument?
What is a side effect?
What does private and public mean?
What is the definition of protected?
How do you return a value from a method?
What does pass by value mean?
What is the difference between an object variable and primitive
variable?
Download