JEDI Slides-Intro1-Chapter 10-Creating Your Own Classes
JEDI Slides-Intro1-Chapter 10-Creating Your Own Classes
JEDI Slides-Intro1-Chapter 10-Creating Your Own Classes
Classes
Introduction to Programming 1 1
Objectives
At the end of the lesson, the student should be able to:
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 public 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,
Introduction to Programming 1 11
Accessor Methods
● Accessor methods
– used to read values from our class variables (instance/static).
– usually written as:
get<NameOfInstanceVariable>
– It also returns a value.
Introduction to Programming 1 12
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 13
Example 2
public class StudentRecord {
private String name;
:
public double getAverage(){
double result = 0;
result=(mathGrade+englishGrade+scienceGrade)/
3;
return result;
}
}
Introduction to Programming 1 14
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 15
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 16
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 17
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 18
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 19
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 20
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 21
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 22
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
*/
public static int getStudentCount(){
return studentCount;
} Introduction to Programming 1 23
Sample Source Code that
uses StudentRecord
public class StudentRecordExample
{
public static void main( String[] args ){
Introduction to Programming 1 24
Program Output
Anna
Student Count = 0
Introduction to Programming 1 25
“this” reference
● The this reference
– used to access the instance variables shadowed by the parameters.
● NOTE: You can only use the this reference for instance variables and
NOT static or class variables.
Introduction to Programming 1 26
Example
public void setAge( int age ){
this.age = age;
}
Introduction to Programming 1 27
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.
Introduction to Programming 1 28
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 29
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 30
Output
● we will have the output for the first call to print,
Name:Anna
Address:Philippines
Age:15
Introduction to Programming 1 31
Constructors
● Constructors are important in instantiating an object. It is a
method where all the initializations are placed.
Introduction to Programming 1 32
Constructors
● To declare a constructor, we write,
<modifier> <className> (<parameter>*) {
<statement>*
}
Introduction to Programming 1 33
Default Constructor
● The default constructor
– is the constructor without any parameters.
– If the class does not specify any constructors, then an
implicit default constructor is created.
Introduction to Programming 1 34
Example
public StudentRecord()
{
//some code here
}
Introduction to Programming 1 35
Overloading Constructors
public StudentRecord(){
//some initialization code here
}
public StudentRecord(String temp){
this.name = temp;
}
public StudentRecord(String name, String address){
this.name = name;
this.address = address;
}
public StudentRecord(double mGrade, double eGrade,
double sGrade){
mathGrade = mGrade;
englishGrade = eGrade;
scienceGrade = sGrade;
}
Introduction to Programming 1 36
Using Constructors
● To use these constructors, we have the following code,
Introduction to Programming 1 37
“this()” constructor call
● Constructor calls can be chained, meaning, you can call
another constructor from inside another constructor.
● We use the this() call for this
● There are a few things to remember when using the this
constructor call:
– When using the this constructor call, IT MUST OCCUR AS THE
FIRST STATEMENT in a constructor
– It can ONLY BE USED IN A CONSTRUCTOR DEFINITION. The
this call can then be followed by any other relevant statements.
Introduction to Programming 1 38
Example
1: public StudentRecord(){
2: this("some string");
3:
4: }
5:
6: public StudentRecord(String temp){
7: this.name = temp;
8: }
9:
10: public static void main( String[] args )
11: {
12:
13: StudentRecord annaRecord = new StudentRecord();
14: }
Introduction to Programming 1 39
Packages
● Packages
– are Java’s means of grouping related classes and interfaces
together in a single unit (interfaces will be discussed later).
– This powerful feature provides for a convenient mechanism for
managing a large group of classes and interfaces while avoiding
potential naming conflicts.
Introduction to Programming 1 40
Importing Packages
● To be able to use classes outside of the package you are
currently working in, you need to import the package of
those classes.
● By default, all your Java programs import the java.lang.*
package, that is why you can use classes like String and
Integers inside the program eventhough you haven't
imported any packages.
● The syntax for importing packages is as follows:
import <nameOfPackage>;
Introduction to Programming 1 41
Example
import java.awt.Color;
import java.awt.*;
Introduction to Programming 1 42
Creating Packages
● To create our own package, we write:
package <packageName>;
Introduction to Programming 1 43
Example
package SchoolClasses;
Introduction to Programming 1 44
Setting the CLASSPATH
● Now, suppose we place the package schoolClasses under
the C:\ directory.
Introduction to Programming 1 45
Setting the CLASSPATH
● Suppose we compile and then run the StudentRecord class
we wrote in the last section,
C:\schoolClasses>javac StudentRecord.java
C:\schoolClasses>java StudentRecord
Exception in thread "main" java.lang.NoClassDefFoundError: StudentRecord
(wrong name: schoolClasses/StudentRecord)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Introduction to Programming 1 46
Setting the CLASSPATH
● To set the classpath in Windows, we type this at the
command prompt,
C:\schoolClasses> set classpath=C:\
– where C:\ is the directory in which we have placed the packages
Introduction to Programming 1 47
Setting the CLASSPATH
● For Unix base systems, suppose we have our classes in the
directory /usr/local/myClasses, we write,
export classpath=/usr/local/myClasses
Introduction to Programming 1 48
Setting the CLASSPATH
● Take note that you can set the classpath anywhere. You can
also set more than one classpath, we just have to separate
them by ;(for windows) and : (for Unix based systems). For
example,
set classpath=C:\myClasses;D:\;E:\MyPrograms\Java
Introduction to Programming 1 49
Access Modifiers
● There are four different types of member access modifiers in
Java:
– public
– private
– protected
– Default
● The first three access modifiers are explicitly written in the
code to indicate the access type, for the fourth one which is
default, no keyword is used.
Introduction to Programming 1 50
default accessibility
● Default access
– specifies that only classes in the same package can have access to
the class' variables and methods
– no actual keyword for the default modifier; it is applied in the
absence of an access modifier.
Introduction to Programming 1 51
Example
public class StudentRecord {
//default access to instance variable
int name;
Introduction to Programming 1 52
public accessibility
● public access
– specifies that class members are accessible to anyone, both inside
and outside the class.
– Any object that interacts with the class can have access to the public
members of the class.
– Keyword: public
Introduction to Programming 1 53
Example
public class StudentRecord {
//default access to instance variable
public int name;
Introduction to Programming 1 54
protected accessibility
● protected access
– specifies that the class members are accessible only to methods in
that class and the subclasses of the class.
– Keyword: protected
Introduction to Programming 1 55
Example
public class StudentRecord {
//default access to instance variable
protected int name;
Introduction to Programming 1 56
private accessibility
● private accessibility
– specifies that the class members are only accessible by the class
they are defined in.
– Keyword: private
Introduction to Programming 1 57
Example
public class StudentRecord {
//default access to instance variable
private int name;
Introduction to Programming 1 58
Coding Guidelines
● The instance variables of a class should normally be
declared private, and the class will just provide accessor
and mutator methods to these variables.
Introduction to Programming 1 59
Summary
● Defining your own classes
● Declaring Fields (instance, static/class)
● Declaring Methods (accessor, mutator, static)
● Returning values and Multiple return statements
● The this reference
● Overloading Methods
● Constructors (default, overloading, this() call)
● Packages
● Access Modifiers (default, public, private, protected)
Introduction to Programming 1 60