Classes

Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

Object-Oriented Programming

with Java
Classes

Quan Thanh Tho, Ph.D.


CSE – HCMUT
[email protected]
Outlines

l OO Programming Concepts
l Creating Objects and Object Reference Variables
¡Differences between primitive data type and object type
¡Automatic garbage collection
l Constructors
l Modifiers (public, private and static)
l Instance and Class Variables and Methods
l Scope of Variables
l Use the this Keyword
l Case Studies (Mortgage class and Count class)
OO Programming Concepts

An object A Circle object

Data Field
data field 1
radius = 5

... State
Method
data field n findArea

method 1

... Behavior

method n
Class and Objects

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
Class Declaration
class Circle
{
double radius = 1.0;

double findArea()
{
return radius*radius*3.14159;
}
}
Declaring Object Reference Variables

ClassName objectName;

Example:
Circle myCircle;
Creating Objects
objectName = new ClassName();

Example:
myCircle = new Circle();

The object reference is assigned to the


object reference variable.
Declaring/Creating Objects
in a Single Step

ClassName objectName = new


ClassName();

Example:
Circle myCircle = new Circle();
Differences between variables of
primitive Data types and object types

Primitive type int i = 1 i 1

Object type Circle c c reference

c: Circle
Created using
new Circle() radius = 1
Copying Variables of Primitive Data
Types and Object Types

Primitive type assignment Object type assignment


i=j c1 = c2

Before: After: Before: After:

i 1 i 2 c1 c1

j 2 j 2 c2 c2

c1: Circle c2: Circle

radius = 5 radius = 9
Garbage Collection
As shown in the previous
figure, after the assignment
statement c1 = c2, c1 points
to the same object referenced
by c2. The object previously
referenced by c1 is no longer
useful. This object is known
as garbage. Garbage is
automatically collected by
JVM.
Garbage Collection, cont
TIP: If you know that an
object is no longer needed,
you can explicitly assign null
to a reference variable for
the object. The Java VM will
automatically collect the
space if the object is not
referenced by any variable.
Accessing Objects
lReferencing the object’s data:
objectName.data
myCircle.radius

lInvoking the object’s method:


objectName.method
myCircle.findArea()
Example 6.1 Using Objects

lObjective: Demonstrate creating


objects, accessing data, and using
methods.

TestCircle Run
Constructors
Circle(double r)
{
radius = r; Constructors are a
}
special kind of
Circle() methods that are
{ invoked to construct
radius = 1.0; objects.
}

myCircle = new Circle(5.0);


Constructors, cont.
A constructor with no parameters is
referred to as a default 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.
Example 6.2 Using Constructors

lObjective: Demonstrate the role of


constructors and use them to create
objects.

TestCircleWithConstructors Run
Visibility Modifiers and
Accessor Methods
By default, the class, variable, or data can be
accessed by any class in the same package.
l public
The class, data, or method is visible to any class in
any package.

l private
The data or methods can be accessed only by the
declaring class.
The get and set methods are used to read and modify
private properties.
Example 6.3
Using the private Modifier and
Accessor Methods

In this example, private data are used for the radius and the
accessor methods getRadius and setRadius are provided
for the clients to retrieve and modify the radius.

TestCircleWithAccessors Run
Passing Objects to Methods

lPassing by value (the value is the


reference to the object)
Example 6.3 Passing Objects as
Arguments

TestPassingObject Run
Instance
Variables, and Methods

Instance variables belong to a specific instance.

Instance methods are invoked by an instance of the class.


Class Variables, Constants,
and Methods

Class variables are shared by all the instances of the


class.

Class methods are not tied to a specific object.


Class constants are final variables shared by all the
instances of the class.
Class Variables, Constants,
and Methods, cont.

To declare class variables, constants, and methods,


use the static modifier.
Class Variables, Constants,
and Methods, cont.

UML Notation: Memory


+: public variables or methods
-: private variables or methods
underline: static variables or metods

circle1:Circle 1 radius

instantiate -radius = 1
radius is an instance CircleWithStaticVariable -numOfObjects = 2
variable, and
numOfObjects is a -radius
class variable -numOfObjects
2 numOfObjects
+getRadius(): double instantiate
+setRadius(radius: double): void circle2:Circle
+getNumOfObjects(): int
+findArea(): double
-radius = 5 5 radius
-numOfObjects = 2
Example 6.5
Using Instance and Class Variables
and Method

Objective: Demonstrate the roles of


instance and class variables and
their uses. This example adds a
class variable numOfObjects to track
the number of Circle objects created.

Test CircleWithStaticVariable Run


Scope of Variables

l The scope of instance and class variables is


the entire class. They can be declared
anywhere inside a class.
l The scope of a local variable starts from its
declaration and continues to the end of the
block that contains the variable. A local
variable must be declared before it can be
used.
The Keyword this

lUse this to refer to the current object.


lUse this to invoke other constructors of
the object.
Array of Objects
Circle[] circleArray = new
Circle[10];

An array of objects is actually an


array of reference variables. So
invoking circleArray[1].findArea()
involves two levels of referencing
as shown in the next figure.
circleArray references to the
entire array. circleArray[1]
references to a Circle object.
Array of Objects, cont.

circleArray reference circleArray[0] Circle object 0


circleArray[1]

… Circle object 1

circleArray[9] Circle object 9


Array of Objects, cont.
Example 6.6: Summarizing the areas
of the circles
Demonstrate the roles of instance and
class variables and their uses. This
example adds a class variable
numOfObjects to track the number of
Circle objects created.

TotalArea Run
Class Abstraction
Class abstraction means to separate
class implementation from the use of the
class. The creator of the class provides a
description of the class and let the user
know how the class can be used. The user
of the class does not need to know how the
class is implemented. The detail of
implementation is encapsulated and hidden
from the user.
Example 6.7 The Mortgage Class

Mortgage

-annualInterestRate: double
-numOfYears: int
-loanAmount: double
Mortgage
+Mortgage()
+Mortgage(annualInterestRate: double,
numOfYears: int, loanAmount: double)
+getAnnualInterestRate(): double TestMortgageClass
+getNumOfYears(): int
+getLoanAmount(): double
+setAnnualInterestRate(annualInteresteRate: double): void
+setNumOfYears(numOfYears: int): void Run
+setLoanAmount(loanAmount: double): void
+monthlyPayment(): double
+totalPayment(): double
Example 6.8 The Count Class

Count

-count: int
-numOfCounts: int

+Count() Count
+getCount(): int
+setCount(count: int): void
+getNumOfCounts(): int
+clear(): void
TestCount
+increment(): void
+decrement(): void Run
Java API and Core Java classes

l java.lang
Contains core Java classes, such as numeric
classes, strings, and objects. This package is
implicitly imported to every Java program.
l java.awt
Contains classes for graphics.
l java.applet
Contains classes for supporting applets.
Java API and Core Java classes, cont.

l java.io
Contains classes for input and output
streams and files.
l java.util
Contains many utilities, such as date.
l java.net
Contains classes for supporting
network communications.
Java API and Core Java classes, cont.

l java.awt.image
Contains classes for managing bitmap images.

l java.awt.peer
Platform-specific GUI implementation.
l Others:
java.sql
java.rmi

You might also like