Zahid Aslam
Overview
Visibility Control
Parameter Passing
Object Delegation
Object Cleanup
Zahid Aslam
Classes
Circle
centreX
centreY
radius
area()
circumference()
Zahid Aslam
Defining a Class
Add fields
// Circle.java
class Circle {
double centreX, centreY; //centre coordinate
double radius;
//radius
}
Zahid Aslam
Adding Methods
A class with only data fields are not useful. Objects created by
such a class cannot respond to any messages.
Methods are declared inside the body of the class but
immediately after the declaration of data fields.
The general form of a method declaration is:
Zahid Aslam
Create a file Circle.java and enter the code for the class
shown in the previous example (Note: the file name
should match the class name).
Zahid Aslam
Data Abstraction
Declaring the Circle class, has created a new data type Circle
Data Abstraction
aCircle
bCircle
null
null
Points to nothing
(Null Reference)
Points to nothing
(Null Reference)
Zahid Aslam
Zahid Aslam
Zahid Aslam
Before Assignment
Before Assignment
aCircle
bCircle
aCircle
bCircle
Zahid Aslam
The object Q
used in future.
Zahid Aslam
ObjectName.VariableName
ObjectName.MethodName(parameter-list)
Executing Methods in
Object/Circle
Circle();
double area;
area = aCircle.area();
Zahid Aslam
Program Output :
Radius=5.0 Area=78.5
Radius=5.0 Circumference =31.400000000000002
Zahid Aslam
Accessors Getters/Setters
// Circle.java
class Circle {
double centreX, centreY, radius;
//Methods to set and get fields
double getX() { return centreX;}
double getY() { return centreY;}
double getR() { return radius;}
void setX(double x_in) { centreX = x_in;}
void setY(double y_in) { centreY = y_in;}
void setR(double r_in) { radius = r_in;}
// Other methods go here
}
Zahid Aslam
Object Initialization
What is a Constructor?
Defining a Constructor
public class ClassName {
// Data Fields
// Constructor
ClassName() {
// Method Body Statements
}
//Methods to manipulate data fields
}
Zahid Aslam
Adding a Multiple-Parameters
Constructor to our Circle Class
class Circle {
double centreX, centreY, radius;
// Constructor
Circle(double x, double y, double r)
{
centreX = x;
centreY = y;
radius = r;
}
//Methods to set and get fields
// Other methods go here
}
Zahid Aslam
Zahid Aslam
Multiple Constructors
Zahid Aslam
Multiple Constructors
class Circle {
double centreX, centreY, radius;
// Constructor
Circle(double x, double y, double r){
centreX = x; centreY = y; radius = r;
}
Circle(double r){
centreX = 0.0; centreY = 0.0; radius =
r;
}
Circle(double x, double y){
centreX = x; centreY = y; radius =
10.0;
}
//Methods to set and get fields
// Other methods go here
Zahid Aslam
}
circleA = new Circle(10, 12, 20) circleB = new Circle(10)circleC = new Circle(5,10)
Centre = (10,12)
Radius = 20
Centre = (0,0)
Radius=10
Centre = (5,10)
Radius = 10
Zahid Aslam
Method Overloading
That means, a class can also have multiple methods with the
same name : method overloading. This is a form of
polymorphism.
Zahid Aslam
Polymorphism
Zahid Aslam
class Circle {
double centreX, centreY, radius;
// Constructor
Circle (double centreX, double centreY, I
double radius) {
this.centreX = centreX;
this.centreY = centreY;
this.radius = radius;
}
// Other methods
}
Zahid Aslam
Zahid Aslam
Visibility
Circle
Circle
area
messag
e
Center (x,y)
Radius r
circumference
message
Zahid Aslam
Zahid Aslam
Visibility
public class Circle {
private double centreX, centreY, radius;
// Constructor
public Circle (double x, double y, double r)
{
this.x = x;
this.y = y;
this.r = r;
Circle
}
public double circumference(){
return 2*3.14*r;
}
public double area() {
return 3.14 * r * r;
}
}
-centreX
-centreY
-radius
+area()
+circumferenc
Zahid Aslam
Accessors Getters/Setters
public class Circle {
private double x,y,r;
//Methods to return circumference and
public double getX() { return x;}
public double getY() { return y;}
public double getR() { return r;}
public void setX(double x) { this.x =
public void serY(double y) { this.y =
public void setR(double r) { this.r =
area
x;}
y;}
r;}
Zahid Aslam
Static Members
Note: Java creates only one copy for a static variable which
can be used even if the class is never instantiated.
Zahid Aslam
= +
Circle.numCircles );
Circle circleB = new Circle( 5, 3, 10);
// numCircles = 2
System.out.println(Number of Circles = +
Circle.numCircles );
}
Zahid Aslam
Program output:
Number of Circles
Number of Circles
= 1
= 2
numCircl
es
Zahid Aslam
Zahid Aslam
Static Methods
A class can have methods that are defined as static (e.g., main
method).
Zahid Aslam
Zahid Aslam
Zahid Aslam
Back to HelloWorld
[System invokes static main
method]
// HelloWorld.java:
Hello World program
class HelloWorld
{
public static void main(String args[])
{
System.out.println(Hello World);
}
}
Zahid Aslam
Back to Constants
[final can also be made as static]
// SquaredNumbers.java
class SquaredNumbers{
static final int MAX_NUMBER = 25;
public static void main(String args[]){
final int MAX_NUMBER = 25;
int lo = 1;
int squared = 0;
while (squared <= MAX_NUMBER){
squared = lo * lo;
System.out.println(squared);
lo = lo + 1;
}
}
}
Zahid Aslam
Final
Zahid Aslam
Parameter passing
Zahid Aslam
........ cont
Zahid Aslam
Zahid Aslam
Program Output :
c1 Radius = 20.0
c2 Radius = 10.0
circleA Radius = 15.0
circleB Radius = 100.0
c1 Radius = 15.0
c2 Radius = 10.0
Zahid Aslam
c2
c2
STEP3
circlA.setRadius(15)
c1
c2
Zahid Aslam
(0.0,100)
c2
Zahid Aslam
Delegation/Association
Zahid Aslam
Delegation - Example
class Point {
private double xCoord;
private double yCoord;
// Constructor
.
public double getXCoord(){
return xCoord;
}
public double getYCoord(){
return yCoord;
}
Point
xCoord
yCoord
getXCoord()
getYCoord()
Zahid Aslam
Delegation - Example
public class Circle {
private Point centre;
public double getX(){
return centre.getXCoord();
}
public double getY(){
return centre.getYCoord();
}
}
Circle
Point
centre
xCoord
yCoord
getCentreX()
getCentreY()
getXCoord()
getYCoord()
Zahid Aslam
Objects Cleanup/Destructor
Zahid Aslam