Objects and Classes
1
OO Programming Concepts
Object-oriented programming (OOP) involves
programming using objects. An object represents
an entity in the real world that can be distinctly
identified. For example, a student, a desk, a circle,
a button, and even a loan can all be viewed as
objects. An object has a unique identity, state, and
behaviors. The state of an object consists of a set
of data fields (also known as properties) with their
current values. The behavior of an object is defined
by a set of methods.
2
Objects
data field 1 radius = 5 Data field, State
Properties
... State
(Properties)
data field m findArea() Method,
Behavior
method 1
... Behavior
method n
(A) A generic object (B) An example of circle object
An object has both a state and behavior. The state
defines the object, and the behavior defines what the
object does. 3
Classes
Classes are constructs that define objects of the
same type. A Java class uses variables to define
data fields and methods to define behaviors.
Additionally, a class provides a special type of
methods, known as constructors, which are
invoked to construct objects from the class.
4
Classes
class Circle {
/** The radius of this circle */
double radius = 1.0; Data field
/** Construct a circle object */
Circle() {
}
Constructors
/** Construct a circle object */
Circle(double newRadius) {
radius = newRadius;
}
/** Return the area of this circle */
double findArea() { Method
return radius * radius * 3.14159;
}
}
5
Constructors
Constructors are a special
Circle() { kind of methods that are
} invoked to construct objects.
Circle(double newRadius) {
radius = newRadius;
}
6
Constructors, cont.
A constructor with no parameters is referred to as
a no-arg constructor.
· Constructors must have the same name as the
class itself.
· Constructors do not have a return type—not
even void.
· Constructors are invoked using the new
operator when an object is created. Constructors
play the role of initializing objects.
7
Creating Objects Using
Constructors
new ClassName();
Example:
new Circle();
new Circle(5.0);
8
Default Constructor
A class may be declared without constructors. In
this case, a no-arg constructor with an empty body
is implicitly declared in the class. This constructor,
called a default constructor, is provided
automatically only if no constructors are explicitly
declared in the class.
9
Constructing Objects, cont.
Circle UML Graphical notation for classes
radius: double UML Graphical notation for fields
UML Graphical notation for methods
findArea(): double
new Circle() new Circle()
circle1: Circle circlen: Circle UML Graphical notation
for objects
radius = 2 ... radius = 5
10
Declaring Object Reference
Variables
To reference an object, assign the object
to a reference variable.
To declare a reference variable, use the
syntax:
ClassName objectRefVar;
Example:
Circle myCircle;
11
Declaring/Creating Objects
in a Single Step
ClassName objectRefVar = new ClassName();
Assign object reference Create an object
Example:
Circle myCircle = new Circle();
12
Accessing Objects
Referencing the object’s data:
objectRefVar.data
e.g., myCircle.radius
Invoking the object’s method:
objectRefVar.methodName(arguments)
e.g., myCircle.findArea()
13
The null Value
If a variable of a reference type
does not reference any object, the
variable holds a special literal value,
null.
14
Default Value for a Data Field
The default value of a data field is
null for a reference type, 0 for a
numeric type, false for a boolean
type, and '\u0000' for a char type.
However, Java assigns no default
value to a local variable inside a
method.
15
Example
public class Student {
String name; // name has default value null
int age; // age has default value 0
boolean isScienceMajor; // isScienceMajor has default value false
char gender; // c has default value '\u0000'
public static void main(String[] args) {
Student student = new Student();
System.out.println("name? " + student.name);
System.out.println("age? " + student.age);
System.out.println("isScienceMajor? " + student.isScienceMajor);
System.out.println("gender? " + student.gender);
}
}
16
Example
public class Test {
public static void main(String[] args) {
int x; // x has no default value
String y; // y has no default value
System.out.println("x is " + x);
System.out.println("y is " + y);
}
}
Compilation error: variables not
initialized
17
Differences between Variables of
Primitive Data Types and Object Types
Created using new Circle()
Primitive type int i = 1 i 1
Object type Circle c c reference c: Circle
radius = 1
18