You are on page 1of 42

Object-Oriented Programming

Concepts
Good Questions

 What are Objects?


 What are Classes?
 What are Messages?
 What is Inheritance?
What Are Objects?
 Software objects model read-world objects or abstract
concepts
• dog, bicycle, queue
 Real-world objects have states and behaviors
• Dogs' states: name, color, breed, hungry
• Dogs' behaviors: barking fetching
 How do Software objects implement real-world objects?
• Use variables to implement states
• Use methods to implement behaviors
 An object is a software bundle of variables and related
methods
Visual Representation of A
Software Object

Variable
Method
Software Bicycle

Instance Variables and Instance Method


Encapsulation
 The objects' variables make up the center of the object.
 Methods surround and hide the object's center from
other objects.
 Benefit of encapsulation
• Modularity
• Information hiding
 For implementation or efficiency reasons, an object
may wish to expose some of its variables or hide some
of its methods.
What Are Classes?

 A class is a blueprint or prototype defining the


variables and methods common to all objects of a
certain kind.
 An object is an instance of a certain class.
 After you have created a class, you must create an
instance of it before you can use.
 Class variables and class methods
 The benefit of Classes: Reusability
Visual Representation of A
Software Class
What Are Messages?

Software objects interact and communicate with each other


by sending messages to each other.
More on Messages
 Components of a Message
• The object to whom the message is addressed (Your Bicycle)
• The name of the method to perform(changeGears)
• Any parameters needed by the method (low gear)
 The Benefits of Messages
• Messages passing supports all possible interactions between
objects (aside from direct variable access)
• Objects don’t need to be in the same process or even on the
same machine to send and receive messages.
What is Inheritance?
 Inheritance allows classes to be defined in terms of
other classes
• superclass and subclass
 Each subclass inherits variables and methods from its
superclass.
 Subclasses can add variables and methods to the ones
they inherit from the superclass.
 Subclasses can also override inherited method and
provide specialized implementations for those methods.
 Inheritance or class hierarchy
Benefits of Inheritance

 Programmers can reuse the code in the superclass


many times.
 Programmers can implement superclasses called
abstract classes
• Abstract class defines “generic” behaviors
• Define and may partially implement the behavior but
much of the class is undefined and unimplemented.
Other programmers fill in the details with specialized
subclasses.
Message Example
Inheritance Example
Object-Oriented Development
in Java
Agenda

 Java Class and Object Declaration


 The Life Cycle of an Object
 Controlling Access to Members of a Class
Java Classes and Objects
Class: templates for specifying the
state and behavior of an object at
runtime
Object: instances of a class
The concepts of class/object provide a
mechanism for encapsulation
Basic Structures of a Class
 Class Declaration
 Variable
• Instance Variable
• Class Variable
 Constructor
 Method
• Instance Method
• Class Method
 Cleanup
 Rectangle2.java
Point and Rectangle

Rectangle2.java
The Class Declaration
Constructor
 A method in a class that initialize an instance of an
object before it's used.
• The same name as the class and have no return type
 Multiple Constructors: the name name but a different
number of arguments or different typed arguments
• Method Overloading
 Java Provides default constructors.
 The special variable, this, can be used inside a method
to refer to the object instance.
 Rectangle.java
Member Variables
Declaration
Instance and Local Variable
 Local variable is defined  public int getHalf() {
inside a block of code or a int half; // local
method. variable
 Example (FirstClass.java) half = firstVariable / 2;
• Instance Variable: return half;
firstVariable }
• Local Variable: half
Methods
Method Declaration
Return a Value from a
Method
 Use return operator in the method to return the
value.
 Methods can return a primitive type or a reference
type.
 The class of the returned object must be either a
subclass of or the exact class of the return type.
Method Overload
 Signature of a Method: return value, name, parameter
list
 Method Overloading: Use the same method name with
different arguments to group together related methods.
 Constructors can also be overloaded.
• this(parameters) : Call another constructor within a
constructor
 Example: FirstClass.java, SecondClass.java,
Rectangle.java
Passing Information into a
Method
 Argument types
• primitive and reference data type: Yes
• method: No
 Argument Names
• Can have the same name as one of the class's member
variable
 Use this to refer to the member variable

 Primitive arguments are passed by value.


 Reference arguments are passed by reference.
 FirstClass.java
The Life Cycle of an Object

Creating Objects
Using Objects
Cleaning Up Unused Objects
Creating Objects

 Rectangle r = new Rectangle(5,5,100,200);


• Declaration: Rectangle r (Type name)
• Instantiation: new
 Allocate memory for the object

 Initialize instance variables

 Call a constructor

• Initialization by Calling a Constructor


 Rectangle(5,5,100,200)
Using Objects
 Manipulate or inspect its variables
 objectReference.variable
 r.x = 50
 r.y = 80
 Call its methods
 objectReference.methodName(argumentList)
 r.move(20,30)
 Java provides an access control mechanism whereby
classes can restrict or allow access to its variables and
methods.
Clean Up

 When all references to an object are dropped, the


object is no longer required, and become eligible
for garbage collection.
• Call finalize() to release system resources such as open
files or open sockets before the object is collected.
• Release references to other objects
• protected void finalize() throws Throwable
 Rectangle2.java
Controlling Access to
Members of a Class
Specifier Class Subclass Package world

private O

protected O O O

public O O O O

package O O
Private

class Alpha { class Beta {


private int iamprivate; void accessMethod() {
private void Alpha a = new Alpha();
privateMethod() { a.iamprivate = 10;
System.out.println a.privateMethod();
("privateMethod");
}
} }
}

How About one Alpha object access the private member of another
Alpha object?
Protected

package Greek; package Greek;


class Alpha { class Gamma {
protected int iamprotected; void accessMethod() {
protected void Alpha a = new Alpha();
protectedMethod() { a.iamprotected = 10;
System.out.println
("protectedMethod"); a.protectedMethod();
} }
} }
Protected (II)
import Greek.*;
package Latin;
class Delta extends Alpha {
void accessMethod(Alpha a, Delta d) {
a.iamprotected = 10;
d.iamprotected = 10;
a.protectedMethod();
d.protectedMethod();
}
}
Public

package Greek; import Greek.*;


public class Alpha { package Roman;
public int iampublic; class Beta {
public void publicMethod() { void accessMethod() {
Alpha a = new Alpha();
System.out.println("publicM a.iampublic = 10;
ethod");
} a.publicMethod();
} }
}
Package

package Greek; package Greek;


class Alpha { class Beta {
int iampackage; void accessMethod() {
void packageMethod() { Alpha a = new Alpha();
a.iampackage = 10;
System.out.println("packag a.packageMethod();
eMethod"); }
} }
}
Inhereitance in Java

A mechanism you can use to create a


new class by extending the definition
of another class
Increase the reusability of codes
Single Inheritance
Simple Class Hierarchy

Object

Vehicle Building

Car Bike House Office

Van Truck

Superclass and Subclass


More About Inheritance
 Use the extends keyword to create a subclass.
 Method Override
• Use method overriding when you need a subclass to replace a
method of its superclass.
• Define a new method that replaces the superclass method that
has the same signature.
 Calling Superclass Methods
• super.<method>(parameters)
• super(parameters) (Calling superclass constructors)
 Example: GraphicsProgram.java

You might also like