Object-Oriented Programming Lab 4: Class, Object, Encapsulation in Oop
Object-Oriented Programming Lab 4: Class, Object, Encapsulation in Oop
OBJECT-ORIENTED PROGRAMMING
LAB 4: CLASS, OBJECT, ENCAPSULATION IN OOP
I. Objective
After completing this tutorial, you can:
III. Object
In the real world, we can find many objects/entities around us, e.g. chair, bike, dog, animal. All these
objects have state(s) and behavior(s). If we consider a dog, then its state is name, breed, color, and the
behavior is baking, wagging the tail, running. That’s it, an object has two characteristics.
IV. Class
In the real world, you will often find many individual objects all the same kind. There may be thousands
of other bicycles in existence, all the same make and model. Each bicycle was built from the same set
of blueprints and therefore contains the same components. In object-oriented terms, we say that your
bicycle is an instance of the class of objects known as bicycles. A class is a blueprint/template from
which individual objects are created.
• Class’s name: By convention, the first letter of a class’s name is uppercased and subsequent
characters are lowercased. If a name consists of multiple words, the first letter of each word is
uppercased.
• Variables (State)
• Methods (Behaviors)
• Constructors
• Name: Student
void studying()
{
System.out.println("studying...");
}
void reading()
{
System.out.println("reading...");
}
}
A class can contain the following types of variables:
• Local variables: Variables defined inside methods, constructors or blocks are called local
variables.
• Instance variables: Instance variables are variables within a class but outside any method.
• Class variables: Class variables are variables declared within a class, outside any method, with
the static keyword.
A class can also have methods, e.g., studying(), reading(). Generally, method declarations have
six components, in order:
• The return type: the data type of the value returned by the method, or void if the method does
not return a value.
• The parameter list in parenthesis: a comma-delimited list of input parameters, preceded by their
data types, enclosed by parentheses. If there are no parameters, you must use empty parentheses.
• The method body, enclosed between braces: the method’s code, including the declaration of
local variables, goes here.
2. Constructor
Every class has a constructor. If we do not explicitly write a constructor for a class, the Java compiler
builds a default constructor for that class. Each time a new object is created, at least one constructor will
be invoked.
A constructor must have the same name as the class. A class can have more than one constructor, but in
most case, you need to define at least three types of constructor:
• Parameterized constructor
• Copy constructor
The following program demonstrates how-to defined constructors.
public Student()
{
this.name = "";
this.gender = "male";
this.age = 0;
}
void studying()
{
System.out.println("studying...");
}
void reading()
{
System.out.println("reading...");
}
}
In the above program, we use the this keyword to access instance variables. The this keyword is
useful in case of parameterized constructor, we can clearly distinguish the instance variables and input
parameters.
• Provide public getter and setter methods to modify and view the variable’s values.
The following program illustrates how-to achieve encapsulation in Java OOP program.
public Student()
{
this.name = "";
this.gender = "male";
this.age = 0;
}
void studying()
{
System.out.println("studying...");
}
void reading()
{
System.out.println("reading...");
}
System.out.println("Name:" + student.getName());
System.out.println("Gender:" + student.getGender());
System.out.println("Age:" + student.getAge());
student.studying();
student.reading();
}
}
V. Exercises
1. A class called Point is designed as shown in the following class diagram. It contains:
• Two private instance variables: x (of the type double) and y (of the type double), with default
0.0 and 0.0, respectively.
• Two overloaded constructors: a default constructor with no argument, and a constructor that
takes 2 double arguments for x coordinate and y coordinate.
• Two public methods: getX() and getY(), which return the x coordinate and the y coordinate of
this instance, respectively.