Creating Your Class and Encapsulation
Creating Your Class and Encapsulation
Encapsulation
Introduction to Programming 1 1
Objectives
At the end of the lesson, the student should be able to:
Create their own classes
Declare attributes and methods for their classes
Use the this reference to access instance data
Create and call overloaded methods
Import and create packages
Use access modifiers to control access to class members
Introduction to Programming 1 2
Defining your own classes
Things to take note of for the syntax defined in this section:
Introduction to Programming 1 3
Defining your own classes
To define a class, we write:
Introduction to Programming 1 4
Example
public class StudentRecord {
//we'll add more code here later
}
− where,
public - means that our class is accessible to other classes outside the package
class - this is the keyword used to create a class in Java
StudentRecord - a unique identifier that describes our class
Introduction to Programming 1 5
Coding Guidelines
Think of an appropriate name for your class. Don't just call
your class XYZ or any random names you can think of.
Class names should start with a CAPITAL letter.
The filename of your class should have the SAME NAME as
your class name.
Introduction to Programming 1 6
Declaring Attributes
To declare a certain attribute for our class, we write,
Introduction to Programming 1 7
Instance Variables
public class StudentRecord {
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
//we'll add more code here later
}
− where,
private here means that the variables are only accessible within the class. Other
objects cannot access these variables directly. We will cover more about
accessibility later.
Introduction to Programming 1 8
Coding Guidelines
Declare all your instance variables on the top of the class
declaration.
Declare one variable for each line.
Instance variables, like any other variables should start with a
SMALL letter.
Use an appropriate data type for each variable you declare.
Declare instance variables as private so that only class
methods can access them directly.
Introduction to Programming 1 9
Class (static) variables
public class StudentRecord {
//instance variables we have declared
private static int studentCount;
//we'll add more code here later
}
Introduction to Programming 1 10
Declaring Methods
To declare methods we write,
<modifier> <returnType>
<name>(<parameter>*) {
<statement>*
}
− where,
<modifier> can carry a number of different modifiers
<returnType> can be any data type (including void)
<name> can be any valid identifier
<parameter> ::= <parameter_type> <parameter_name>[,]
Introduction to Programming 1 11
Encapsulation
The principle of hiding design or implementation
information that are not relevant to the current object.
To encapsulate the property, two methods are used:
Setter or Accessor with the pattern of,
Introduction to Programming 1 13
Example 1
public class StudentRecord {
private String name;
:
public String getName(){
return name;
}
}
− where,
public - means that the method can be called from objects outside the class
String - is the return type of the method. This means that the method should
return a value of type String
getName - the name of the method
() - this means that our method does not have any parameters
Introduction to Programming 1 14
Example 2
public class StudentRecord {
private String name;
:
public double getAverage(){
double result = 0;
result=(mathGrade+englishGrade+science
Grade)/3;
return result;
}
}
Introduction to Programming 1 15
Mutator Methods
Mutator Methods
− used to write or change values of our class variables
(instance/static).
− Usually written as:
set<NameOfInstanceVariable>
Introduction to Programming 1 16
Example
public class StudentRecord {
private String name;
:
public void setName( String temp ){
name = temp;
}
}
− where,
public - means that the method can be called from objects outside the class
void - means that the method does not return any value
setName - the name of the method
(String temp) - parameter that will be used inside our method
Introduction to Programming 1 17
Multiple return statements
You can have multiple return statements for a method as
long as they are not on the same block.
You can also use constants to return values instead of
variables.
Introduction to Programming 1 18
Example
public String getNumberInWords( int num ){
String defaultNum = "zero";
if( num == 1 ){
return "one"; //return a constant
}
else if( num == 2){
return "two"; //return a constant
}
//return a variable
return defaultNum;
}
Introduction to Programming 1 19
Static methods
public class StudentRecord {
private static int studentCount;
public static int getStudentCount(){
return studentCount;
}
}
− where,
public- means that the method can be called from objects outside the class
static-means that the method is static and should be called by typing,
[ClassName].[methodName]. For example, in this case, we call the method
StudentRecord.getStudentCount()
int- is the return type of the method. This means that the method should return a
value of type int
getStudentCount- the name of the method
()- this means that our method does not have any parameters
Introduction to Programming 1 20
Coding Guidelines
Method names should start with a SMALL letter.
Method names should be verbs
Always provide documentation before the declaration of the
method. You can use javadocs style for this. Please see
example.
Introduction to Programming 1 21
Source Code for class
StudentRecord
public class StudentRecord {
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
private static int studentCount;
Introduction to Programming 1 22
Source Code for class
StudentRecord
/**
* Returns the name of the student
*/
public String getName(){
return name;
}
/**
* Changes the name of the student
*/
public void setName( String temp ){
name = temp;
}
Introduction to Programming 1 23
Source Code for class
StudentRecord
/**
* Computes the average of the english, math and science
* grades
*/
public double getAverage(){
double result = 0;
result =
( mathGrade+englishGrade+scienceGrade )
/3;
return result;
}
/**
* returns the number of instances of StudentRecords
*/
Introduction to Programming 1 24
public static int getStudentCount(){
Sample Source Code that
uses StudentRecord
public class StudentRecordExample
{
public static void main( String[] args ){
Introduction to Programming 1 25
Program Output
Anna
Student Count = 0
Introduction to Programming 1 26
“this” reference
The this reference
− used to access the instance variables shadowed by the parameters.
To use the this reference, we type,
this.<nameOfTheInstanceVariable>
NOTE: You can only use the this reference for instance variables and
NOT static or class variables.
Introduction to Programming 1 27
Example
public void setAge( int age ){
this.age = age;
}
Introduction to Programming 1 28
Overloading Methods
Method overloading
− allows a method with the same name but different parameters, to
have different implementations and return values of different types
− can be used when the same operation has different
implementations.
Always remember that overloaded methods have the
following properties:
− the same name
− different parameters
− return types can be different or the same
Introduction to Programming 1 29
Example
public void print( String temp ){
System.out.println("Name:" + name);
System.out.println("Address:" + address);
System.out.println("Age:" + age);
}
Introduction to Programming 1 30
Example
public static void main( String[] args )
{
StudentRecord annaRecord = new StudentRecord();
annaRecord.setName("Anna");
annaRecord.setAddress("Philippines");
annaRecord.setAge(15);
annaRecord.setMathGrade(80);
annaRecord.setEnglishGrade(95.5);
annaRecord.setScienceGrade(100);
//overloaded methods
annaRecord.print( annaRecord.getName() );
annaRecord.print( annaRecord.getEnglishGrade(),
annaRecord.getMathGrade(),
annaRecord.getScienceGrade());
}
Introduction to Programming 1 31
Output
we will have the output for the first call to print,
Name:Anna
Address:Philippines
Age:15
we will have the output for the second call to print,
Name:Anna
Math Grade:80.0
English Grade:95.5
Science Grade:100.0
Introduction to Programming 1 32
Summary
Defining your own classes
Declaring Fields (instance, static/class)
Encapsulation
Declaring Methods (accessor, mutator, static)
Returning values and Multiple return statements
The this reference
Overloading Methods
Introduction to Programming 1 33