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