SlideShare a Scribd company logo
1 of 48
Download to read offline
Object – Oriented Programming
Week 9 – Public Vs Private Vs Protected, Encapsulation
Ferdin Joe John Joseph, PhD
Faculty of Information Technology
Thai-Nichi Institute of Technology
Writing classes
Intermediate Java Programming
2
Writing Classes
• We've been using predefined classes.
Now we will learn to write our own classes
to define objects
3
Outline
Anatomy of a Class
Anatomy of a Method
Encapsulation
4
Writing Classes
• The programs we’ve written in previous examples have used
classes defined in the Java standard class library
• Now we will begin to design programs that rely on classes that we
write ourselves
• The class that contains the main method is just the starting point
of a program
• True object-oriented programming is based on defining classes
that represent objects with well-defined characteristics and
functionality
5
Classes and Objects
• Recall from our overview of objects in Chapter 1 that an object has
state and behavior
• Consider a six-sided die (singular of dice)
– It’s state can be defined as which face is showing
– It’s primary behavior is that it can be rolled
• We can represent a die in software by designing a class called Die
that models this state and behavior
– The class serves as the blueprint for a die object
• We can then instantiate as many die objects as we need for any
particular program
6
Classes
• A class can contain data declarations and
method declarations
int size, weight;
char category;
Data declarations
Method declarations
7
Classes
• The values of the data define the state of an object created from the
class
• The functionality of the methods define the behaviors of the object
• For our Die class, we might declare an integer that represents the
current value showing on the face
• One of the methods would “roll” the die by setting that value to a
random number between one and six
8
Classes
• We’ll want to design the Die class with
other data and methods to make it a
versatile and reusable resource
• Any given program will not necessarily use
all aspects of a given class
9
Data Scope
• The scope of data is the area in a program in which that data can be
referenced (used)
• Data declared at the class level can be referenced by all methods in
that class
• Data declared within a method can be used only in that method
• Data declared within a method is called local data
10
Instance Data
• The faceValue variable in the Die class is called instance data
because each instance (object) that is created has its own
version of it
• A class declares the type of the data, but it does not reserve any
memory space for it
• Every time a Die object is created, a new faceValue variable is
created as well
• The objects of a class share the method definitions, but each
object has its own data space
• That's the only way two objects can have different states
11
Instance Data
• We can depict the two Die objects from
the RollingDice program as follows:
die1 5faceValue
die2 2faceValue
Each object maintains its own faceValue
variable, and thus its own state
12
Method Header
• A method declaration begins with a
method header
char calc (int num1, int num2, String message)
method
name
return
type
parameter list
The parameter list specifies the type
and name of each parameter
The name of a parameter in the method
declaration is called a formal parameter
13
Method Body
• The method header is followed by the
method body
char calc (int num1, int num2, String message)
{
int sum = num1 + num2;
char result = message.charAt (sum);
return result;
}
The return expression
must be consistent with
the return type
sum and result
are local data
They are created
each time the
method is called, and
are destroyed when
it finishes executing
14
The return Statement
• The return type of a method indicates the
type of value that the method sends back
to the calling location
• A method that does not return a value has
a void return type
• A return statement specifies the value that
will be returned
return expression; 15
Parameters
• When a method is called, the actual
parameters in the invocation are copied
into the formal parameters in the method
header
char calc (int num1, int num2, String message)
{
int sum = num1 + num2;
char result = message.charAt (sum);
return result;
}
ch = obj.calc (25, count, "Hello");
16
Local Data
• As we’ve seen, local variables can be declared inside a method
• The formal parameters of a method create automatic local variables
when the method is invoked
• When the method finishes, all local variables are destroyed
(including the formal parameters)
• Keep in mind that instance variables, declared at the class level,
exists as long as the object exists
17
Constructors
• a constructor is a special method that is used to set up an object
when it is initially created
• A constructor has the same name as the class
• The Die constructor is used to set the initial face value of each new
die object to one
18
Constructors
• Note that a constructor has no return type
specified in the method header, not even
void
• A common error is to put a return type on
a constructor, which makes it a “regular”
method that happens to have the same
name as the class
• The programmer does not have to define a
constructor for a class
19
Outline
Anatomy of a Class
Anatomy of a Method
Encapsulation
20
Method Declarations
• Let’s now examine method declarations in more detail
• A method declaration specifies the code that will be executed when
the method is invoked (called)
• When a method is invoked, the flow of control jumps to the method
and executes its code
• When complete, the flow returns to the place where the method was
called and continues
• The invocation may or may not return a value, depending on how
the method is defined
21
myMethod();
myMethodcompute
Method Control Flow
• If the called method is in the same class,
only the method name is needed
22
doIt helpMe
helpMe();obj.doIt();
main
Method Control Flow
• The called method is often part of
another class or object
23
Outline
Anatomy of a Class
Anatomy of a Method
Encapsulation
24
Encapsulation
• We can take one of two views of an object:
– internal - the details of the variables and
methods of the class that defines it
– external - the services that an object
provides and how the object interacts with the
rest of the system
• From the external view, an object is an
encapsulated entity, providing a set of
specific services 25
Encapsulation
• One object (called the client) may use
another object for the services it provides
• The client of an object may request its
services (call its methods), but it should
not have to be aware of how those
services are accomplished
• Any changes to the object's state (its
variables) should be made by that object's
methods
26
Encapsulation
• An encapsulated object can be thought
of as a black box -- its inner workings are
hidden from the client
• The client invokes the interface methods
of the object, which manages the
instance data Methods
Data
Client
27
Visibility Modifiers
• In Java, we accomplish encapsulation through the appropriate use
of visibility modifiers
• A modifier is a Java reserved word that specifies particular
characteristics of a method or data
• We've used the final modifier to define constants
• Java has three visibility modifiers: public, protected, and
private
• The protected modifier involves inheritance, which we will discuss
later
28
Visibility Modifiers
• Members of a class that are declared with public visibility can be
referenced anywhere
• Members of a class that are declared with private visibility can be
referenced only within that class
• Members declared without a visibility modifier have default visibility
and can be referenced by any class in the same package
29
Visibility Modifiers
• Public variables violate encapsulation because they allow the client
to “reach in” and modify the values directly
• Therefore instance variables should not be declared with public
visibility
• It is acceptable to give a constant public visibility, which allows it to
be used outside of the class
• Public constants do not violate encapsulation because, although the
client can access it, its value cannot be changed
30
Visibility Modifiers
• Methods that provide the object's services are declared with public
visibility so that they can be invoked by clients
• Public methods are also called service methods
• A method created simply to assist a service method is called a
support method
• Since a support method is not intended to be called by a client, it
should not be declared with public visibility
31
Visibility Modifiers
public private
Variables
Methods
Provide services
to clients
Support other
methods in the
class
Enforce
encapsulation
Violate
encapsulation
32
Accessors and Mutators
• Because instance data is private, a class usually provides services
to access and modify data values
• An accessor method returns the current value of a variable
• A mutator method changes the value of a variable
• The names of accessor and mutator methods take the form getX
and setX, respectively, where X is the name of the value
• They are sometimes called “getters” and “setters”
33
Mutator Restrictions
• The use of mutators gives the class
designer the ability to restrict a client’s
options to modify an object’s state
• A mutator is often designed so that the
values of variables can be set only within
particular limits
• For example, the setFaceValue mutator
of the Die class should have restricted the
value to the valid range (1 to MAX) 34
Die.java
public class Die {
private final int MAX = 6; // maximum face value
private int faceValue; // current value showing on the die
/**
* Constructor: Sets the initial face value.
*/
public Die( ) {
faceValue = 1;
}
/**
* Rolls the die and returns the result.
*/
public int roll() {
faceValue = (int)(Math.random() * MAX) + 1;
return faceValue;
}
35
Die.java
/**
* Face value mutator.
*/
public void setFaceValue (int value) {
faceValue = value;
}
/**
* Face value accessor.
*/
public int getFaceValue() {
return faceValue;
}
/**
* Returns a string representation of this die.
*/
public String toString() {
String result = Integer.toString(faceValue);
return result;
}
} 36
RollingDice.java
public class RollingDice {
public static void main (String[] args) {
Die die1, die2;
int sum;
die1 = new Die();
die2 = new Die();
die1.roll();
die2.roll();
System.out.println ("Die One: " + die1 + ", Die Two: " + die2);
die1.roll();
die2.setFaceValue(4);
System.out.println ("Die One: " + die1 + ", Die Two: " + die2);
Create two objects of
class Die
Call method roll in
class Die
Call the mutator (set
method)
37
RollingDice.java
sum = die1.getFaceValue() + die2.getFaceValue();
System.out.println ("Sum: " + sum);
sum = die1.roll() + die2.roll();
System.out.println ("Die One: " + die1 + ", Die Two: " + die2);
System.out.println ("New sum: " + sum);
}
}
Call the accessor (get
method)
4-38
The Die Class
• The Die class contains two data values
– a constant MAX that represents the maximum face value
– an integer faceValue that represents the current face value
• The roll method uses the random method of the Math class to
determine a new face value
• There are also methods to explicitly set and retrieve the current face
value at any time
39
The toString Method
• All classes that represent objects should
define a toString method
• The toString method returns a
character string that represents the object
in some way
• It is called automatically when an object is
concatenated to a string or when it is
passed to the println method
40
Bank Account Example
• Let’s look at another example that demonstrates the implementation
details of classes and methods
• We’ll represent a bank account by a class named Account
• It’s state can include the account number, the current balance, and
the name of the owner
• An account’s behaviors (or services) include deposits and
withdrawals, and adding interest
41
Driver Programs
• A driver program drives the use of other,
more interesting parts of a program
• Driver programs are often used to test
other parts of the software
• The Transactions class contains a
main method that drives the use of the
Account class, exercising its services
42
Account.java
import java.text.NumberFormat;
public class Account {
private final double RATE = 0.035; // interest rate of 3.5%
private long acctNumber;
private double balance;
private String name;
public Account (String owner, long account, double initial) {
name = owner;
acctNumber = account;
balance = initial;
}
public double deposit (double amount) {
balance = balance + amount;
return balance;
}
43
Account.java
public double withdraw (double amount, double fee) {
balance = balance - amount - fee;
return balance;
}
public double addInterest () {
balance += (balance * RATE);
return balance;
}
public double getBalance () {
return balance;
}
public String toString () {
NumberFormat fmt = NumberFormat.getCurrencyInstance();
return (acctNumber + "t" + name + "t" + fmt.format(balance));
}
}
44
Transactions.java
public class Transactions {
public static void main (String[] args) {
Account acct1 = new Account ("Ted Murphy", 72354, 102.56);
Account acct2 = new Account ("Jane Smith", 69713, 40.00);
Account acct3 = new Account ("Edward Demsey", 93757, 759.32);
acct1.deposit (25.85);
double smithBalance = acct2.deposit (500.00);
System.out.println ("Smith balance after deposit: " + smithBalance);
System.out.println ("Smith balance after withdrawal: " + acct2.withdraw
(430.75, 1.50));
45
Transactions.java
acct1.addInterest();
acct2.addInterest();
acct3.addInterest();
System.out.println ();
System.out.println (acct1);
System.out.println (acct2);
System.out.println (acct3);
}
}
4-46
Bank Account Example
acct1 72354acctNumber
102.56balance
name “Ted Murphy”
acct2 69713acctNumber
40.00balance
name “Jane Smith”
47
Bank Account Example
• There are some improvements that can be
made to the Account class
• Formal getters and setters could have
been defined for all data
• The design of some methods could also
be more robust, such as verifying that the
amount parameter to the withdraw
method is positive
48

More Related Content

What's hot

What's hot (20)

Polymorphism in java
Polymorphism in javaPolymorphism in java
Polymorphism in java
 
Power point presentation on access specifier in OOPs
Power point presentation on access specifier in OOPsPower point presentation on access specifier in OOPs
Power point presentation on access specifier in OOPs
 
Polymorphism presentation in java
Polymorphism presentation in javaPolymorphism presentation in java
Polymorphism presentation in java
 
Real-time object detection coz YOLO!
Real-time object detection coz YOLO!Real-time object detection coz YOLO!
Real-time object detection coz YOLO!
 
Access modifiers
Access modifiersAccess modifiers
Access modifiers
 
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
 
Pure virtual function and abstract class
Pure virtual function and abstract classPure virtual function and abstract class
Pure virtual function and abstract class
 
Object oriented programming With C#
Object oriented programming With C#Object oriented programming With C#
Object oriented programming With C#
 
Basic of Multithreading in JAva
Basic of Multithreading in JAvaBasic of Multithreading in JAva
Basic of Multithreading in JAva
 
Java Inheritance
Java InheritanceJava Inheritance
Java Inheritance
 
Java keywords
Java keywordsJava keywords
Java keywords
 
Java threading
Java threadingJava threading
Java threading
 
Javapolymorphism
JavapolymorphismJavapolymorphism
Javapolymorphism
 
Files and streams In Java
Files and streams In JavaFiles and streams In Java
Files and streams In Java
 
Kotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is comingKotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is coming
 
Introduction to method overloading & method overriding in java hdm
Introduction to method overloading & method overriding  in java  hdmIntroduction to method overloading & method overriding  in java  hdm
Introduction to method overloading & method overriding in java hdm
 
Encapsulation C++
Encapsulation C++Encapsulation C++
Encapsulation C++
 
Method overloading
Method overloadingMethod overloading
Method overloading
 
Polymorphism in C++
Polymorphism in C++Polymorphism in C++
Polymorphism in C++
 
Packages,static,this keyword in java
Packages,static,this keyword in javaPackages,static,this keyword in java
Packages,static,this keyword in java
 

Similar to Constructors and Method Overloading

Ap Power Point Chpt4
Ap Power Point Chpt4Ap Power Point Chpt4
Ap Power Point Chpt4
dplunkett
 
Object-oriented Analysis, Design & Programming
Object-oriented Analysis, Design & ProgrammingObject-oriented Analysis, Design & Programming
Object-oriented Analysis, Design & Programming
Allan Mangune
 
Java lec class, objects and constructors
Java lec class, objects and constructorsJava lec class, objects and constructors
Java lec class, objects and constructors
Jan Niño Acierto
 

Similar to Constructors and Method Overloading (20)

class as the basis.pptx
class as the basis.pptxclass as the basis.pptx
class as the basis.pptx
 
Ap Power Point Chpt4
Ap Power Point Chpt4Ap Power Point Chpt4
Ap Power Point Chpt4
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Java As an OOP Language,Exception Handling & Applets
Java As an OOP Language,Exception Handling & AppletsJava As an OOP Language,Exception Handling & Applets
Java As an OOP Language,Exception Handling & Applets
 
Object-oriented Analysis, Design & Programming
Object-oriented Analysis, Design & ProgrammingObject-oriented Analysis, Design & Programming
Object-oriented Analysis, Design & Programming
 
C# classes objects
C#  classes objectsC#  classes objects
C# classes objects
 
Lec4
Lec4Lec4
Lec4
 
Lecture 5.pptx
Lecture 5.pptxLecture 5.pptx
Lecture 5.pptx
 
Java 102 intro to object-oriented programming in java
Java 102   intro to object-oriented programming in javaJava 102   intro to object-oriented programming in java
Java 102 intro to object-oriented programming in java
 
6 Object Oriented Programming
6 Object Oriented Programming6 Object Oriented Programming
6 Object Oriented Programming
 
Ifi7184 lesson5
Ifi7184 lesson5Ifi7184 lesson5
Ifi7184 lesson5
 
Java lec class, objects and constructors
Java lec class, objects and constructorsJava lec class, objects and constructors
Java lec class, objects and constructors
 
Object oriented analysis_and_design_v2.0
Object oriented analysis_and_design_v2.0Object oriented analysis_and_design_v2.0
Object oriented analysis_and_design_v2.0
 
Java
JavaJava
Java
 
Object Oriented Programming C#
Object Oriented Programming C#Object Oriented Programming C#
Object Oriented Programming C#
 
core_java.ppt
core_java.pptcore_java.ppt
core_java.ppt
 
Java unit 7
Java unit 7Java unit 7
Java unit 7
 
Chap01
Chap01Chap01
Chap01
 
02._Object-Oriented_Programming_Concepts.ppt
02._Object-Oriented_Programming_Concepts.ppt02._Object-Oriented_Programming_Concepts.ppt
02._Object-Oriented_Programming_Concepts.ppt
 
UNIT IV DESIGN PATTERNS.pptx
UNIT IV DESIGN PATTERNS.pptxUNIT IV DESIGN PATTERNS.pptx
UNIT IV DESIGN PATTERNS.pptx
 

More from Ferdin Joe John Joseph PhD

More from Ferdin Joe John Joseph PhD (20)

Invited Talk DGTiCon 2022
Invited Talk DGTiCon 2022Invited Talk DGTiCon 2022
Invited Talk DGTiCon 2022
 
Week 12: Cloud AI- DSA 441 Cloud Computing
Week 12: Cloud AI- DSA 441 Cloud ComputingWeek 12: Cloud AI- DSA 441 Cloud Computing
Week 12: Cloud AI- DSA 441 Cloud Computing
 
Week 11: Cloud Native- DSA 441 Cloud Computing
Week 11: Cloud Native- DSA 441 Cloud ComputingWeek 11: Cloud Native- DSA 441 Cloud Computing
Week 11: Cloud Native- DSA 441 Cloud Computing
 
Week 10: Cloud Security- DSA 441 Cloud Computing
Week 10: Cloud Security- DSA 441 Cloud ComputingWeek 10: Cloud Security- DSA 441 Cloud Computing
Week 10: Cloud Security- DSA 441 Cloud Computing
 
Week 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud Computing
Week 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud ComputingWeek 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud Computing
Week 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud Computing
 
Week 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud Computing
Week 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud ComputingWeek 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud Computing
Week 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud Computing
 
Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...
Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...
Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...
 
Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...
Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...
Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...
 
Week 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud Computing
Week 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud ComputingWeek 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud Computing
Week 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud Computing
 
Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...
Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...
Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...
 
Week 2: Virtualization and VM Ware - DSA 441 Cloud Computing
Week 2: Virtualization and VM Ware - DSA 441 Cloud ComputingWeek 2: Virtualization and VM Ware - DSA 441 Cloud Computing
Week 2: Virtualization and VM Ware - DSA 441 Cloud Computing
 
Week 1: Introduction to Cloud Computing - DSA 441 Cloud Computing
Week 1: Introduction to Cloud Computing - DSA 441 Cloud ComputingWeek 1: Introduction to Cloud Computing - DSA 441 Cloud Computing
Week 1: Introduction to Cloud Computing - DSA 441 Cloud Computing
 
Sept 6 2021 BTech Artificial Intelligence and Data Science curriculum
Sept 6 2021 BTech Artificial Intelligence and Data Science curriculumSept 6 2021 BTech Artificial Intelligence and Data Science curriculum
Sept 6 2021 BTech Artificial Intelligence and Data Science curriculum
 
Hadoop in Alibaba Cloud
Hadoop in Alibaba CloudHadoop in Alibaba Cloud
Hadoop in Alibaba Cloud
 
Cloud Computing Essentials in Alibaba Cloud
Cloud Computing Essentials in Alibaba CloudCloud Computing Essentials in Alibaba Cloud
Cloud Computing Essentials in Alibaba Cloud
 
Transforming deep into transformers – a computer vision approach
Transforming deep into transformers – a computer vision approachTransforming deep into transformers – a computer vision approach
Transforming deep into transformers – a computer vision approach
 
Week 11: Programming for Data Analysis
Week 11: Programming for Data AnalysisWeek 11: Programming for Data Analysis
Week 11: Programming for Data Analysis
 
Week 10: Programming for Data Analysis
Week 10: Programming for Data AnalysisWeek 10: Programming for Data Analysis
Week 10: Programming for Data Analysis
 
Week 9: Programming for Data Analysis
Week 9: Programming for Data AnalysisWeek 9: Programming for Data Analysis
Week 9: Programming for Data Analysis
 
Week 8: Programming for Data Analysis
Week 8: Programming for Data AnalysisWeek 8: Programming for Data Analysis
Week 8: Programming for Data Analysis
 

Recently uploaded

In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi ArabiaIn Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
ahmedjiabur940
 
如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证
如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证
如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证
zifhagzkk
 
一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格
一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格
一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格
q6pzkpark
 
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
acoha1
 
原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证
原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证
原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证
pwgnohujw
 
sourabh vyas1222222222222222222244444444
sourabh vyas1222222222222222222244444444sourabh vyas1222222222222222222244444444
sourabh vyas1222222222222222222244444444
saurabvyas476
 
Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...
Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...
Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...
mikehavy0
 

Recently uploaded (20)

Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...
Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...
Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...
 
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi ArabiaIn Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
 
Credit Card Fraud Detection: Safeguarding Transactions in the Digital Age
Credit Card Fraud Detection: Safeguarding Transactions in the Digital AgeCredit Card Fraud Detection: Safeguarding Transactions in the Digital Age
Credit Card Fraud Detection: Safeguarding Transactions in the Digital Age
 
社内勉強会資料_Object Recognition as Next Token Prediction
社内勉強会資料_Object Recognition as Next Token Prediction社内勉強会資料_Object Recognition as Next Token Prediction
社内勉強会資料_Object Recognition as Next Token Prediction
 
Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...
Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...
Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...
 
jll-asia-pacific-capital-tracker-1q24.pdf
jll-asia-pacific-capital-tracker-1q24.pdfjll-asia-pacific-capital-tracker-1q24.pdf
jll-asia-pacific-capital-tracker-1q24.pdf
 
Case Study 4 Where the cry of rebellion happen?
Case Study 4 Where the cry of rebellion happen?Case Study 4 Where the cry of rebellion happen?
Case Study 4 Where the cry of rebellion happen?
 
如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证
如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证
如何办理(Dalhousie毕业证书)达尔豪斯大学毕业证成绩单留信学历认证
 
Pentesting_AI and security challenges of AI
Pentesting_AI and security challenges of AIPentesting_AI and security challenges of AI
Pentesting_AI and security challenges of AI
 
一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格
一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格
一比一原版(曼大毕业证书)曼尼托巴大学毕业证成绩单留信学历认证一手价格
 
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
 
原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证
原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证
原件一样(UWO毕业证书)西安大略大学毕业证成绩单留信学历认证
 
sourabh vyas1222222222222222222244444444
sourabh vyas1222222222222222222244444444sourabh vyas1222222222222222222244444444
sourabh vyas1222222222222222222244444444
 
Introduction to Statistics Presentation.pptx
Introduction to Statistics Presentation.pptxIntroduction to Statistics Presentation.pptx
Introduction to Statistics Presentation.pptx
 
Predictive Precipitation: Advanced Rain Forecasting Techniques
Predictive Precipitation: Advanced Rain Forecasting TechniquesPredictive Precipitation: Advanced Rain Forecasting Techniques
Predictive Precipitation: Advanced Rain Forecasting Techniques
 
Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...
Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...
Abortion Clinic in Kempton Park +27791653574 WhatsApp Abortion Clinic Service...
 
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24  Building Real-Time Pipelines With FLaNKDATA SUMMIT 24  Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
 
Capstone in Interprofessional Informatic // IMPACT OF COVID 19 ON EDUCATION
Capstone in Interprofessional Informatic  // IMPACT OF COVID 19 ON EDUCATIONCapstone in Interprofessional Informatic  // IMPACT OF COVID 19 ON EDUCATION
Capstone in Interprofessional Informatic // IMPACT OF COVID 19 ON EDUCATION
 
DAA Assignment Solution.pdf is the best1
DAA Assignment Solution.pdf is the best1DAA Assignment Solution.pdf is the best1
DAA Assignment Solution.pdf is the best1
 
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptxRESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
 

Constructors and Method Overloading

  • 1. Object – Oriented Programming Week 9 – Public Vs Private Vs Protected, Encapsulation Ferdin Joe John Joseph, PhD Faculty of Information Technology Thai-Nichi Institute of Technology
  • 3. Writing Classes • We've been using predefined classes. Now we will learn to write our own classes to define objects 3
  • 4. Outline Anatomy of a Class Anatomy of a Method Encapsulation 4
  • 5. Writing Classes • The programs we’ve written in previous examples have used classes defined in the Java standard class library • Now we will begin to design programs that rely on classes that we write ourselves • The class that contains the main method is just the starting point of a program • True object-oriented programming is based on defining classes that represent objects with well-defined characteristics and functionality 5
  • 6. Classes and Objects • Recall from our overview of objects in Chapter 1 that an object has state and behavior • Consider a six-sided die (singular of dice) – It’s state can be defined as which face is showing – It’s primary behavior is that it can be rolled • We can represent a die in software by designing a class called Die that models this state and behavior – The class serves as the blueprint for a die object • We can then instantiate as many die objects as we need for any particular program 6
  • 7. Classes • A class can contain data declarations and method declarations int size, weight; char category; Data declarations Method declarations 7
  • 8. Classes • The values of the data define the state of an object created from the class • The functionality of the methods define the behaviors of the object • For our Die class, we might declare an integer that represents the current value showing on the face • One of the methods would “roll” the die by setting that value to a random number between one and six 8
  • 9. Classes • We’ll want to design the Die class with other data and methods to make it a versatile and reusable resource • Any given program will not necessarily use all aspects of a given class 9
  • 10. Data Scope • The scope of data is the area in a program in which that data can be referenced (used) • Data declared at the class level can be referenced by all methods in that class • Data declared within a method can be used only in that method • Data declared within a method is called local data 10
  • 11. Instance Data • The faceValue variable in the Die class is called instance data because each instance (object) that is created has its own version of it • A class declares the type of the data, but it does not reserve any memory space for it • Every time a Die object is created, a new faceValue variable is created as well • The objects of a class share the method definitions, but each object has its own data space • That's the only way two objects can have different states 11
  • 12. Instance Data • We can depict the two Die objects from the RollingDice program as follows: die1 5faceValue die2 2faceValue Each object maintains its own faceValue variable, and thus its own state 12
  • 13. Method Header • A method declaration begins with a method header char calc (int num1, int num2, String message) method name return type parameter list The parameter list specifies the type and name of each parameter The name of a parameter in the method declaration is called a formal parameter 13
  • 14. Method Body • The method header is followed by the method body char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } The return expression must be consistent with the return type sum and result are local data They are created each time the method is called, and are destroyed when it finishes executing 14
  • 15. The return Statement • The return type of a method indicates the type of value that the method sends back to the calling location • A method that does not return a value has a void return type • A return statement specifies the value that will be returned return expression; 15
  • 16. Parameters • When a method is called, the actual parameters in the invocation are copied into the formal parameters in the method header char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } ch = obj.calc (25, count, "Hello"); 16
  • 17. Local Data • As we’ve seen, local variables can be declared inside a method • The formal parameters of a method create automatic local variables when the method is invoked • When the method finishes, all local variables are destroyed (including the formal parameters) • Keep in mind that instance variables, declared at the class level, exists as long as the object exists 17
  • 18. Constructors • a constructor is a special method that is used to set up an object when it is initially created • A constructor has the same name as the class • The Die constructor is used to set the initial face value of each new die object to one 18
  • 19. Constructors • Note that a constructor has no return type specified in the method header, not even void • A common error is to put a return type on a constructor, which makes it a “regular” method that happens to have the same name as the class • The programmer does not have to define a constructor for a class 19
  • 20. Outline Anatomy of a Class Anatomy of a Method Encapsulation 20
  • 21. Method Declarations • Let’s now examine method declarations in more detail • A method declaration specifies the code that will be executed when the method is invoked (called) • When a method is invoked, the flow of control jumps to the method and executes its code • When complete, the flow returns to the place where the method was called and continues • The invocation may or may not return a value, depending on how the method is defined 21
  • 22. myMethod(); myMethodcompute Method Control Flow • If the called method is in the same class, only the method name is needed 22
  • 23. doIt helpMe helpMe();obj.doIt(); main Method Control Flow • The called method is often part of another class or object 23
  • 24. Outline Anatomy of a Class Anatomy of a Method Encapsulation 24
  • 25. Encapsulation • We can take one of two views of an object: – internal - the details of the variables and methods of the class that defines it – external - the services that an object provides and how the object interacts with the rest of the system • From the external view, an object is an encapsulated entity, providing a set of specific services 25
  • 26. Encapsulation • One object (called the client) may use another object for the services it provides • The client of an object may request its services (call its methods), but it should not have to be aware of how those services are accomplished • Any changes to the object's state (its variables) should be made by that object's methods 26
  • 27. Encapsulation • An encapsulated object can be thought of as a black box -- its inner workings are hidden from the client • The client invokes the interface methods of the object, which manages the instance data Methods Data Client 27
  • 28. Visibility Modifiers • In Java, we accomplish encapsulation through the appropriate use of visibility modifiers • A modifier is a Java reserved word that specifies particular characteristics of a method or data • We've used the final modifier to define constants • Java has three visibility modifiers: public, protected, and private • The protected modifier involves inheritance, which we will discuss later 28
  • 29. Visibility Modifiers • Members of a class that are declared with public visibility can be referenced anywhere • Members of a class that are declared with private visibility can be referenced only within that class • Members declared without a visibility modifier have default visibility and can be referenced by any class in the same package 29
  • 30. Visibility Modifiers • Public variables violate encapsulation because they allow the client to “reach in” and modify the values directly • Therefore instance variables should not be declared with public visibility • It is acceptable to give a constant public visibility, which allows it to be used outside of the class • Public constants do not violate encapsulation because, although the client can access it, its value cannot be changed 30
  • 31. Visibility Modifiers • Methods that provide the object's services are declared with public visibility so that they can be invoked by clients • Public methods are also called service methods • A method created simply to assist a service method is called a support method • Since a support method is not intended to be called by a client, it should not be declared with public visibility 31
  • 32. Visibility Modifiers public private Variables Methods Provide services to clients Support other methods in the class Enforce encapsulation Violate encapsulation 32
  • 33. Accessors and Mutators • Because instance data is private, a class usually provides services to access and modify data values • An accessor method returns the current value of a variable • A mutator method changes the value of a variable • The names of accessor and mutator methods take the form getX and setX, respectively, where X is the name of the value • They are sometimes called “getters” and “setters” 33
  • 34. Mutator Restrictions • The use of mutators gives the class designer the ability to restrict a client’s options to modify an object’s state • A mutator is often designed so that the values of variables can be set only within particular limits • For example, the setFaceValue mutator of the Die class should have restricted the value to the valid range (1 to MAX) 34
  • 35. Die.java public class Die { private final int MAX = 6; // maximum face value private int faceValue; // current value showing on the die /** * Constructor: Sets the initial face value. */ public Die( ) { faceValue = 1; } /** * Rolls the die and returns the result. */ public int roll() { faceValue = (int)(Math.random() * MAX) + 1; return faceValue; } 35
  • 36. Die.java /** * Face value mutator. */ public void setFaceValue (int value) { faceValue = value; } /** * Face value accessor. */ public int getFaceValue() { return faceValue; } /** * Returns a string representation of this die. */ public String toString() { String result = Integer.toString(faceValue); return result; } } 36
  • 37. RollingDice.java public class RollingDice { public static void main (String[] args) { Die die1, die2; int sum; die1 = new Die(); die2 = new Die(); die1.roll(); die2.roll(); System.out.println ("Die One: " + die1 + ", Die Two: " + die2); die1.roll(); die2.setFaceValue(4); System.out.println ("Die One: " + die1 + ", Die Two: " + die2); Create two objects of class Die Call method roll in class Die Call the mutator (set method) 37
  • 38. RollingDice.java sum = die1.getFaceValue() + die2.getFaceValue(); System.out.println ("Sum: " + sum); sum = die1.roll() + die2.roll(); System.out.println ("Die One: " + die1 + ", Die Two: " + die2); System.out.println ("New sum: " + sum); } } Call the accessor (get method) 4-38
  • 39. The Die Class • The Die class contains two data values – a constant MAX that represents the maximum face value – an integer faceValue that represents the current face value • The roll method uses the random method of the Math class to determine a new face value • There are also methods to explicitly set and retrieve the current face value at any time 39
  • 40. The toString Method • All classes that represent objects should define a toString method • The toString method returns a character string that represents the object in some way • It is called automatically when an object is concatenated to a string or when it is passed to the println method 40
  • 41. Bank Account Example • Let’s look at another example that demonstrates the implementation details of classes and methods • We’ll represent a bank account by a class named Account • It’s state can include the account number, the current balance, and the name of the owner • An account’s behaviors (or services) include deposits and withdrawals, and adding interest 41
  • 42. Driver Programs • A driver program drives the use of other, more interesting parts of a program • Driver programs are often used to test other parts of the software • The Transactions class contains a main method that drives the use of the Account class, exercising its services 42
  • 43. Account.java import java.text.NumberFormat; public class Account { private final double RATE = 0.035; // interest rate of 3.5% private long acctNumber; private double balance; private String name; public Account (String owner, long account, double initial) { name = owner; acctNumber = account; balance = initial; } public double deposit (double amount) { balance = balance + amount; return balance; } 43
  • 44. Account.java public double withdraw (double amount, double fee) { balance = balance - amount - fee; return balance; } public double addInterest () { balance += (balance * RATE); return balance; } public double getBalance () { return balance; } public String toString () { NumberFormat fmt = NumberFormat.getCurrencyInstance(); return (acctNumber + "t" + name + "t" + fmt.format(balance)); } } 44
  • 45. Transactions.java public class Transactions { public static void main (String[] args) { Account acct1 = new Account ("Ted Murphy", 72354, 102.56); Account acct2 = new Account ("Jane Smith", 69713, 40.00); Account acct3 = new Account ("Edward Demsey", 93757, 759.32); acct1.deposit (25.85); double smithBalance = acct2.deposit (500.00); System.out.println ("Smith balance after deposit: " + smithBalance); System.out.println ("Smith balance after withdrawal: " + acct2.withdraw (430.75, 1.50)); 45
  • 47. Bank Account Example acct1 72354acctNumber 102.56balance name “Ted Murphy” acct2 69713acctNumber 40.00balance name “Jane Smith” 47
  • 48. Bank Account Example • There are some improvements that can be made to the Account class • Formal getters and setters could have been defined for all data • The design of some methods could also be more robust, such as verifying that the amount parameter to the withdraw method is positive 48