Lecture 18: MoreAboutMethods1
Download
Report
Transcript Lecture 18: MoreAboutMethods1
1
Introduction to Methods
Method Calls
Parameters
Return Type
Method Overloading
Accessor & Mutator Methods
Student Class: Revisited
2
Method Calls
The set of methods defined for an object determines the behavior of that object.
For Example, for an object of Student class; methods: getID, setGPA, and getName will make the
behavior of this object known to us.
After creating an object from a class, a series of methods are called to accomplish some
tasks.
The following code creates a Student object, then it increments the GPA of this student by
0.1:
Student s = new Student(243, “Husam” , 3.1);
double gpa = s.getGPA();
s.setGPA(gpa + 0.1) ;
3
Methods: Syntax & Naming
Syntax
modifier returnType methodName(paraType p1,..){
statements...;
return expression;
}
Example
public double calculateAverage(int n1, int n2){
double average = (n1+ n2) / 2.0;
return average;
}
}
4
Parameters
//main method
Student adel = new Student(987623," Adel", 1.9);
double increment = 0.1;
adel.setGPA(adel.qetGPA()+ increment);
Actual parameter: Constant, variable or expression in method call.
Example: 2.0 and adel (implicit actual parameter).
//method in Student Class
public void setGPA(double gpa){
this.gpa = gpa;
}
Formal parameter: Variable in the method definition
Example: grade and this (implicit formal parameter).
5
Self-check Exercise
What is the difference between actual parameters and formal parameters?
What are the problems in the following two program segments of method headers and
method calls?
// method call
double a = 1.5;
int b = 4;
objectReference.methodA(a,
// method header
public void methodA(int n,
// method call
double a = 1.5;
int b = 4, c = 2;
objectReference.methodB(a,
// method header
public void methodB(double
b);
double x) {.....}
b, c);
x,int n) {.....}
Can we pass an Object reference as an actual parameter?
6
Return Type
The return type indicates the type of value the method returns – a primitive type or object
reference.
If no value or reference is returned by a method, the return type is specified as void.
public double getGPA(){
return gpa;
}
public void setGPA(double newGPA){
gpa = newGPA;
}
A Java method cannot return more than one value.
7
Method Overloading
Methods can be overloaded.
Overloaded methods:
Two or more methods of the same class with the same name but different signatures.
The return type of a method is not counted as part of its signature .
Formal parameters of overloaded constructors and methods must NOT have the same
type, order, and count.
Example: Valid overloading:
public
public
public
double
double
double
compute(int num, int num2){.
.
compute(int num, double num2){.
compute(int num) {.
.
.}
.}
.
.}
Example: Invalid overloading:
public double compute(int num) { . . . }
public int compute(int num) { . . . }
8
Accessor Methods
Encapsulation: Data + Methods to operate on the data.
Only methods of the same class can directly access its private instance variables.
A public method that returns the private value of an instance variable of an object is called an accessor
method.
public class Student{
private int id;
private String name;
private double;
public String getName(){
return name;
}
public int getID(){
return id;
}
public double getGPA(){
return gpa;
}
}
9
Mutator Methods
A method that changes the value of some instance variable is called a mutator method.
public class Student{
private int id;
private String name;
private double gpa;
// . . .
public void setGPA(double newGPA){
gpa = newGPA;
}
// . . .
}
Classes that do not have any mutator methods are called immutable classes. (Example:
String class).
10
Student class
public String getName(){
return name;
}
public class Student{
private int id;
private String name;
private double gpa;
public Student(int id String
name, double gpa){
this.id = id;
this.name = name;
this.gpa = gpa;
}
public Student(int id, String
name){
this(id, name, 0.0);
}
public int getID(){
return id;
}
public double getGPA(){
return gpa;
}
public void setGPA(double
newGPA){
gpa = newGPA;
}
}
11
Exercises
Write a test program for the Student class. Create two students. Test all accessor and
mutator methods.
Add another constructor to the Student class such that it will take only the name as
argument. The ID will be set to 000 and GPA to 0.0
Add a method called
evaluate(gpa). This method
will return strings "honor".
"good standing" or "under
probation" according to the
value of gpa.
12