0% found this document useful (0 votes)
17 views

OOPS

Easy to understand note about OOPS concept in Java programming.

Uploaded by

Sneha Nenu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

OOPS

Easy to understand note about OOPS concept in Java programming.

Uploaded by

Sneha Nenu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 51

Introduction to Object

Oriented Design

1
Overview

 Understand Classes and Objects.

 Understand some of the key


concepts/features in the Object
Oriented paradigm.

 Benefits of Object Oriented Design


paradigm.
2
OOP: model, map, reuse,
extend
 Model the real
world problem to
user’s perceive;
 Use similar
metaphor in
computational env.
 Construct reusable
components;
 Create new
components from
existing ones.
3
Examples of Objects

CAR BOY GIRL CLOCK

VDU BOOK TREE TRIANGLE

Figure 1.9: Examples of objects

4
Classes: Objects with the same
attributes and behavior
Person Objects

Abstract Person Class


Into Attributes: Name, Age, Sex
Operations: Speak(), Listen(), Walk()

Vehicle Objects

Abstract Vehicle Class


Into Attributes: Name, Model, Color
Operations: Start(), Stop(), Accelerate()

Polygon Objects

Polygon Class
Abstract Attributes: Vertices, Border,
Into Color, FillColor
Operations: Draw(), Erase(), Move()

Figure 1.12: Objects and classes 5


Object Oriented Paradigm:
Features
Encapsulation

Data Abstraction

Single Inheritance

Polymorphism
OOP
Paradigm
Persistence

Delegation

Genericity

Multiple Inheritance
6
Java’s OO Features
Encapsulation

Data Abstraction

Single Inheritance

Polymorphism
OOP Java
Paradigm
Persistence

Delegation

Genericity

Multiple Inheritance
7
Encapsulation
Encapsulation
 It associates the
Data Abstraction code and the data
it manipulates into
Single Inheritance
a single unit; and
Polymorphism keeps them safe
OOP
Paradigm from external
Persistence
interference and
Delegation
misuse.

Genericity Data

Functions
Multiple Inheritance
8
9
Data Abstraction
Encapsulation
 The technique of creating
new data types that are
Data Abstraction
well suited to an
application.
Single Inheritance
 It allows the creation of
user defined data types,
Polymorphism
OOP having the properties of
Paradigm built data types and a set
Persistence
of permitted operators.
 In Java, partial support.
Delegation
 In C++, fully supported
(e.g., operator
Genericity
overloading).
Multiple Inheritance
10
Abstract Data Type (ADT)

 A structure that contains both


data and the actions to be
performed on that data.

 Class is an implementation of an
Abstract Data Type.

11
Class- Example

class Account {
private String accountName;
private double accountBalance;

public withdraw();
public deposit();
public determineBalance();
} // Class Account

12
Class

 Class is a set of attributes and


operations that are performed on
the attributes.

Student Circle
Account

accountName name centre


accountBalance age radius
studentId
withdraw() area()
deposit() getName()
circumference()
determineBalance() getId()

13
Objects

 An Object Oriented system is a


collection of interacting Objects.

 Object is an instance of a class.

14
Classes/Objects

:John John and Jill are


Student objects of class
Student
:Jill

:circleA circleA and


Circle circleB are
:circleB objects of class
Circle
15
Class

 A class represents a template for several


objects that have common properties.

 A class defines all the properties common


to the object - attributes and methods.

 A class is sometimes called the object’s


type.

16
Object
 Objects have state and classes don’t.
John is an object (instance) of class Student.
name = “John”, age = 20, studentId = 1236

Jill is an object (instance) of class Student.


name = “Jill”, age = 22, studentId = 2345

circleA is an object (instance) of class Circle.


centre = (20,10), radius = 25

circleB is an object (instance) of class Circle.


centre = (0,0), radius = 10

17
Encapsulation
 All information (attributes and methods)
in an object oriented system are stored
within the object/class.
 Information can be manipulated through
operations performed on the object/class
– interface to the class. Implementation is
hidden from the user.
 Object support Information Hiding – Some
attributes and methods can be hidden
from the user.

18
Encapsulation - Example
class Account {
private String accountName; message

private double accountBalance;


Withdraw
Deposit
public withdraw();
messa Account
public deposit(); ge balance
public determineBalance();
} // Class Account
Determine Balance

message

19
Data Abstraction

 The technique of creating new data


types that are well suited to an
application.

 It allows the creation of user defined


data types, having the properties of
built in data types and more.

20
Abstraction - Example

class Account {
private String accountName;
Creates a data
private double accountBalance;
type Account
public withdraw();
public deposit(); Account acctX;
public determineBalance();
} // Class Account

21
Inheritance
 New data types (classes) can be
defined as extensions to previously
defined types.
 Parent Class (Super Class) – Child
Class (Sub Class) Parent
 Subclass inherits Inherited
capability
properties from the
parent class.
Child

22
Inheritance - Example
 Example

Define Person to be a class

A Person has attributes, such as age, height, gender

Assign values to attributes when describing object


Define student to be a subclass of Person

A student has all attributes of Person, plus attributes
of his/her own ( student no, course_enrolled)

A student has all attributes of Person, plus attributes
of his/her own (student no, course_enrolled)

A student inherits all attributes of Person

Define lecturer to be a subclass of Person

Lecturer has all attributes of Person, plus attributes
of his/her own ( staff_id, subjectID1, subjectID2)

23
24
Inheritance - Example
 Circle Class can be a subclass
(inherited from ) of a parent class -
Shape
Shape

Circle Rectangle

25
Inheritance - Example
 Inheritance can also have multiple
levels. Shape

Circle Rectangle

GraphicCircle

26
Uses of Inheritance - Reuse

 If multiple classes have common


attributes/methods, these methods can
be moved to a common class - parent
class.

 This allows reuse since the


implementation is not repeated.

Example : Rectangle and Circle method have


a common method move(), which requires
changing the centre coordinate.

27
Uses of Inheritance - Reuse
Circle Rectangle
centre
centre height
radius width
area() area()
circumference() circumference()
move(newCentre) move(newCentre)

move(newCentre){
centre = newCentre; move(newCentre){
} centre = newCentre;
}

28
Uses of Inheritance - Reuse
Shape

centre move(newCentre){
centre = newCentre
area() }
circumference()
move(newCentre)

Circle Rectangle

height
radius width
area() area()
circumference() circumference()

29
Uses of Inheritance - Specialization

 Specialized behavior can be added


to the child class.
 In this case the behaviour will be
implemented in the child class.
 E.g. The implementation of area()
method in the Circle class is different
from the Rectangle class.
 area() method in the child classes
override the method in parent
classes().
30
Uses of Inheritance - Specialization
Circle Rectangle
centre
centre height
radius width
area() area()
circumference() circumference()
move(newCentre) move(newCentre)

area(){
return pi*r^2; area(){
} return height*width;
}

31
Uses of Inheritance - Specialization
Shape

area(); - Not implemented


centre And left for the child classes
area() To implement
circumference()
move(newCentre)

area(){
Circle Rectangle
return pi*r^2;
}
height
radius width
area() area(){
area()
circumference() return height*width;
circumference()
}

32
Uses of Inheritance – Common
Interface
 All the operations that are supported for
Rectangle and Circle are the same.
 Some methods have common
implementation and others don’t.

move() operation is common to classes and
can be implemented in parent.

circumference(), area() operations are
significantly different and have to be
implemented in the respective classes.
 The Shape class provides a common
interface where all 3 operations move(),
circumference() and area().

33
Uses of Inheritance - Extension

 Extend functionality of a class.


 Child class adds new operations to
the parent class but does not
change the inherited behavior.

 E.g. Rectangle class might have a


special operation that may not be
meaningful to the Circle class -
rotate90degrees()

34
Uses of Inheritance - Extension
Shape

centre
area()
circumference()
move(newCentre)

Circle Rectangle

height
radius width
area()
area()
circumference()
circumference()
rotate90degrees()

35
Uses of Inheritance – Multiple
Inheritance
 Inherit properties from more than
one class.
 This is called Multiple Inheritance.

Graphics Shape

Circle

36
Uses of Multiple Inheritance
 This is required when a class has to
inherit behavior from multiple
classes.
 In the example Circle class can
inherit move() operation from the
Shape class and the paint() operation
from the Graphics class.
 Multiple inheritance is not supported
in JAVA but is supported in C++.
37
Uses of Inheritance – Multiple
Inheritance
GraphicCircle Shape

color centre
area()
paint() circumference()
move(newCentre)

Circle

radius

area()
circumference()

38
Polymorphism
 Polymorphic which means “many forms”
has Greek roots.

Poly – many

Morphos - forms.

 In OO paradigm polymorphism has many


forms.

 Allow a single object, method, operator


associated with different meaning
depending on the type of data passed to
it.
39
Polymorphism
 An object of type Circle or Rectangle can be
assigned to a Shape object. The behavior of
the object will depend on the object passed.

circleA = new Circle(); Create a new circle object

Shape shape = circleA;


shape.area(); area() method for circle class will be
executed

rectangleA = new Rectangle(); Create a new rectangle


object
shape= rectangle;
shape.area() area() method for rectangle will be
executed.

40
41
Polymorphism – Method Overloading

 Multiple methods can be defined


with the same name, different input
arguments.
Method 1 - initialize(int a)
Method 2 - initialize(int a, int b)

 Appropriate method will be called


based on the input arguments.
initialize(2) Method 1 will be called.
initialize(2,4) Method 2 will be called.
42
Polymorphism – Operator
Overloading
 Allows regular operators such as +,
-, *, / to have different meanings
based on the type.

 E.g. + operator for Circle can re-


defined
Circle c = c + 2;

 Not supported in JAVA. C++


supports it.
43
Persistence
 The phenomenon where the object
outlives the program execution.

 Databases support this feature.

 In Java, this can be supported if


users explicitly build object
persistency using IO streams.

44
Why OOP?

 Greater Reliability
 Break complex software projects into
small, self-contained, and modular objects
 Maintainability
 Modular objects make locating bugs
easier, with less impact on the overall
project
 Greater Productivity through Reuse!
 Faster Design and Modelling
45
Benefits of OOP..
 Inheritance: Elimination of Redundant
Code and extend the use of existing
classes.
 Build programs from existing working
modules, rather than having to start
from scratch.  save development
time and get higher productivity.
 Encapsulation: Helps in building
secure programs.

46
Benefits of OOP..
 Multiple objects to coexist without
any interference.
 Easy to map objects in problem
domain to those objects in the
program.
 It is easy to partition the work in a
project based on objects.
 The Data-Centered Design enables us
in capturing more details of model in
an implementable form.
47
Benefits of OOP..

 Object Oriented Systems can be


easily upgraded from small to large
systems.
 Message-Passing technique for
communication between objects
make the interface descriptions with
external systems much simpler.
 Software complexity can be easily
managed.
48
Summary
 Object Oriented Design, Analysis, and
Programming is a Powerful paradigm
 Enables Easy Mapping of Real world Objects to
Objects in the Program
 This is enabled by OO features:
 Encapsulation
 Data Abstraction
 Inheritance
 Polymorphism
 Persistence
 Standard OO Design (UML) and Programming
Languages (C++/Java) are readily accessible.

49
References

 Chapter 1: “Programming with Java”


by Balagurusamny, TMH, New Delhi,
India.
 Optional:
 Chapter 1: “Mastering C++” by V.
Rajuk and R. Buyya, Tata McGraw Hill,
New Delhi, India.

50
51

You might also like