Top Banner
Module 2 Object-Oriented Programming
46
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Md02 - Getting Started part-2

Module 2

Object-Oriented Programming

Page 2: Md02 - Getting Started part-2

Objectives

• Define modeling concepts: abstraction, encapsulation. • Define class, member, attribute, method, constructor and package • Invoke a method on a particular object. • In a Java program, identify the following: The package statement. The import statements. Classes, methods, and attributes. Constructors. • Use the Java API online documentation

Page 3: Md02 - Getting Started part-2

Abstraction

An essential element of object oriented language is abstraction.Humans manage the complexity through abstraction.

For example

People do not think of car as a set of tens of thousand of individual parts. They think of it as a well defined object with its own unique behavior.

They can ignore the details of how the engine, transmission and braking systems work.

Powerful way to manage the abstraction is through the use of hierarchical classifications.

Page 4: Md02 - Getting Started part-2

From the outside, the car is a single object.

Once inside you see that the car consist of several subsystems: steering, brakes, sound system, seat belts ,cellular system and so on.

In turn each of these subsystem is made up of more specialized units.

For example sound system consist of a radio, a CD player and a tape player.

The point is you manage the complexity of car through the use of hierarchical abstraction.

Page 5: Md02 - Getting Started part-2

Hierarchical abstraction of complex systems can also be applied to computer programs.

The data from program can be transformed by abstraction into its component objects.

Each object describe its own unique behavior.We can treat these objects as concrete entities that respond to message telling them to do something.

Page 6: Md02 - Getting Started part-2

Real-world Objects

Real-world objects are your dog, your desk, your television set, your bicycle.

These real-world objects share two characteristics:

They all have state and behavior.

For example, dogs have state (name, color, breed, hungry) and behavior (barking, fetching, and wagging tail).

Page 7: Md02 - Getting Started part-2

Software objects Software objects are modeled after real-world

objects in that they too have state and behavior.

A software object maintains its state in one or more variables. A variable is an item of data named by an identifier.

A software object implements its behavior with methods.

Page 8: Md02 - Getting Started part-2

Classes as Blueprints for Objects

• In manufacturing, a blueprint is a description of a device from which many physical devices are constructed.

• In software, a class is a description of an object: A class describes the data that each object includes A class describes the behaviors that each object exhibits

• In Java, classes support three key features of OOP encapsulation

inheritance polymorphism

Page 9: Md02 - Getting Started part-2

Objects versus Classes

In the real world, it's obvious that classes are not themselves the objects they describe:

A blueprint of a bicycle is not a bicycle.

Page 10: Md02 - Getting Started part-2

The Life Cycle of an Object

Life cycle of an object involves

1.Creating Objects.

2.Using Objects.

3.Cleaning up unused objects.

Page 11: Md02 - Getting Started part-2

Creating Objects

This statement creates a new Rectangle object from the Rectangle class. Rectangle rect = new Rectangle();

This single statement performs three actions:

Declaration: Rectangle rect is a variable declaration that declares to the compiler that the name rect will be used to refer to a Rectangle object.

Instantiation: new is a Java operator that creates the new object

Initialization: Rectangle() is a call to Rectangle's constructor, which initializes the object.

Page 12: Md02 - Getting Started part-2

Using Objects

Once you've created an object, you probably want to use it for something.

You may need information from it, want to change its state, or have it perform some action.

Objects give you two ways to do these things:

1.Manipulate or inspect its variables.

area = rect.height * rect.width;

2.Call its methods. rect.move(15, 37);

Page 13: Md02 - Getting Started part-2

Cleaning Up Unused Objects

Java allows you to create as many objects as you want and you never have to worry about destroying them. The Java runtime environment deletes objects when it determines that they are no longer being used. This process is called garbage collection.

An object is eligible for garbage collection when there are no more references to that object.

The Java platform has a garbage collector that periodically frees the memory used by objects that are no longer needed.

The garbage collector runs in a low-priority thread

Page 14: Md02 - Getting Started part-2

Finalization

Before an object gets garbage-collected, the garbage collector gives the object an opportunity to clean up after itself through a call to the object's finalize method. This process is known as finalization.

During finalization, an object may wish to free system resources such as files and sockets or to drop references to other objects so that they in turn become eligible for garbage collection.

Page 15: Md02 - Getting Started part-2

Key Features of OOPs

1.Inheritance

2.Encapsulation

3.Polymorphism

Page 16: Md02 - Getting Started part-2

Inheritance

Inheritance is a mechanism that enables one class to inherit all of the behaviour and attributes of another class.

For example, mountain bikes, road bikes, are all kinds of bicycles.Mountain bikes, road bikes are all subclasses of the bicycle class. Similarly, the bicycle class is the superclass of mountain bikes, road bikes.

Each subclass inherits state from the superclass. Mountain bikes, road bikes share some states: cadence, speed, and the like. Also, each subclass inherits methods from the superclass.

Example inheritance.java

Page 17: Md02 - Getting Started part-2

Encapsulation

• Encapsulation means shielding

• The localization of knowledge within a module.

• Hides the implementation details of a class.

• Makes the code more maintainable

Page 18: Md02 - Getting Started part-2

Encapsulation in Java

In Java the basis of encapsulation is the class.

Since the purpose of a class is to encapsulate complexity, there are mechanisms for hiding the complexity of the implementation inside the class.

Each method or variable in a class may be markedprivate or public.

Page 19: Md02 - Getting Started part-2

Polymorphism

Polymorphism is something like one name, many forms.

Polymorphism manifests itself in Java in the form of multiple methods having the same name.

In some cases, multiple methods have the same name, but different formal argument lists(overloaded methods)Example overload.java

In other cases, multiple methods have the same name, same return type, and same formal argument list (overridden methods). Example override.java

Page 20: Md02 - Getting Started part-2

Interface

Interface is a device or a system that unrelated entities use to interact.

Remote control is an interface between you and a television.

The English language is an interface between two people.

Use an interface to define a behavior that can be implemented by any class. So interface is a collection of methods that indicate a class has some behaviour in addition to what it inherits from its superclass.

Page 21: Md02 - Getting Started part-2

Interface

• Interface forms a contract between the class and outside world. If the class claims to implement an interface, all methods defined by that interface must appear in its source code.

• Using interface, you can specify what a class must do, but not how it does it.

• Interfaces are syntactically similar to classes, but they lack instance variables, and their methods are declared without any body

• Any number of classes can implement an interface. also, one class can implement any number of interfaces.

Page 22: Md02 - Getting Started part-2

Interface

• Variables declared inside of interface declarations are implicitly public, final and static

• They must also be initialized with a constant value

• All methods are implicitly public and abstract.

• Interface methods cannot be marked final, strictfp or native. • An interface can extend one or more other interfaces. • An interface cannot implement another interface or class.

Example Callback.java, Client.java

Page 23: Md02 - Getting Started part-2

Example interface Callback {void callback(int param);}

Implementing InterfacesTo implement an interface, include the implements clause in a class definition,

class Client implements Callback {public void callback(int p) {System.out.println("callback called with " + p);}

}

Page 24: Md02 - Getting Started part-2

The following interface method declarations won't compile:

final void bounce(); // final and abstract can never be used // together, and abstract is implied

static void bounce(); // interfaces define instance methods

private void bounce(); // interface methods are always public

protected void bounce(); // (same as above)

Page 25: Md02 - Getting Started part-2

Declaring Java Classes

• Basic syntax of a Java class:<class_declaration> ::=<modifier> class <name>{<attribute_declaration>*<constructor_declaration>*<method_declaration>*}

Page 26: Md02 - Getting Started part-2

Example:

public class Vehicle {private double maxLoad;public void setMaxLoad(double value) {maxLoad = value;}}

Page 27: Md02 - Getting Started part-2

Declaring Attributes

• Basic syntax of an attribute:<attribute_declaration> ::=<modifier><type><name>[=<default_value>];<type> ::= byte | short | int | long | charfloat | double | boolean | <class>

 

Page 28: Md02 - Getting Started part-2

Examples:

public class Foo {public int x;private float y = 10000.0F;private String name = "Fred Flintstone";}

Page 29: Md02 - Getting Started part-2

Declaring Methods

• Basic syntax of a method:<method_declaration> ::=<modifier><return_type><name>(<parameter>*){<statement>*}

Page 30: Md02 - Getting Started part-2

Examples:

public int getX() {return x;}public void setX(int new_x) {x = new_x;}

Page 31: Md02 - Getting Started part-2

Accessing Object Members

• The "dot" notation: <object>.<member>• This is used to access object members including attributes and methods

Examples:

thing1.setX(47);thing1.x = 47; // only permissible if x is public

Page 32: Md02 - Getting Started part-2

Examplepublic class Testing{ int i=10; public void a(){

System.out.print("Value of i is "); } public static void main(String args[]){

Testing t = new Testing();t.a();

System.out.println(t.i); }}

Page 33: Md02 - Getting Started part-2

Declaring Constructors

• Basic syntax of a constructor:

<modifier><class_name>(<parameter>*) {<statement>*}

• Constructors are a special sort of method that initialise objects.

Page 34: Md02 - Getting Started part-2

Examples:public class Thing {

private int x;

public Thing() {x = 47;}

public Thing(int new_x) {x = new_x;}

}

Page 35: Md02 - Getting Started part-2

Constructors

• They don't create objects, just initialise them

• They have the same name as the class.

• If you don't define any constructors, Java will generate a default no-argument constructor for you.

Page 36: Md02 - Getting Started part-2

Constructors

• super(xxx) or this(xxx) is always the first line of code in a constructor,if not, java will automatically insert a call to the default no-argument superclass constructor super() for you.

Example Derived.java

Page 37: Md02 - Getting Started part-2

The Default Constructor

• There is always at least one constructor in every class

• If the writer does not supply any constructors, the default constructor will be present automatically The default constructor takes no arguments The default constructor has no body

• Enables you to create object instances with new Xxx()without having to write a constructor

 

Page 38: Md02 - Getting Started part-2

Source File Layout

• Basic syntax of a Java source file:<source_file> ::=[<package_declaration>]<import_declaration>*<class_declaration>+

Page 39: Md02 - Getting Started part-2

Example

package shipping.reports.Web;import shipping.domain.*;import java.util.List;import java.io.*;public class VehicleCapacityReport {private List vehicles;public void generateReport(Writer output) {...}}

Page 40: Md02 - Getting Started part-2

Packages

Packages are nothing more than the way we organize files into different directories according to their functionality

Files in one directory (or package) would have different functionality from those of another directory.

For example, files in java.io package do something related to I/O but files in java.net package give us the way to deal with the Network.

Packaging also help us to avoid class name collision.

Page 41: Md02 - Getting Started part-2

Packages

• Packages help manage large software systems • Packages can contain classes and sub-packages • Basic syntax of the package statement:

<package_declaration> ::=package <top_pkg_name>[.<sub_pkg_name>].*;

Example: package shipping.reports.Web; • Specify the package declaration at the beginning of the source file

Page 42: Md02 - Getting Started part-2

Packages

• Only one package declaration per source file

• If no package is declared, then the class "belongs" to the default package

• Package names must be hierarchical and separated by dot

Page 43: Md02 - Getting Started part-2

The import Statement• Basic syntax of the import statement:<import_declaration> ::=import <pkg_name>[.<sub_pkg_name>]*.<class_name | *>;

Examples:import shipping.domain.*;import java.util.List;import java.io.*;

• Precedes all class declarations • Tells the compiler where to find classes to use

 

Page 44: Md02 - Getting Started part-2

Compiling and Running Java files in Packagepackage world; public class HelloWorld {

public static void main(String[] args) { System.out.println("Hello World"); }}

When compiling typeC:\ javac world/HelloWorld.java

To run itC:\ java world.HelloWorld

Page 45: Md02 - Getting Started part-2

Using the Java API Documentation

• A set of hypertext markup language (HTML) files provides information about the API

• One package contains hyperlinks to information on all of the classes

• A class document includes the class hierarchy, a description of the class, a list of member variables, a list of constructors, and so on

 

Page 46: Md02 - Getting Started part-2