Chapter 1 Object
Oriented Programming Approach
The term Object Oriented programming
is frequently heard in the programming arena. Object oriented approach was
started to overcome the limitations of the earlier programming approaches. It
is popularly known by its acronym OOP. It is used to develop reliable and
reusable software.
The programming technology is continuously developing since the start of the
computer and related technologies. New tools and techniques are included in
programming in each phase of their development. Such enhancements increased
complexity in programming and design of large software. Similarly, the users'
requirements change and increase after the software is brought into operation.
The software may need maintenance and enhancements after the regular feedback
from the users. There could be problems to represent real life entities of
problem while analyzing and designing system. While improving the software work
may need to begin from the scratch that may increase software cost too. To
incorporate users' demands and enhancements in software with such complex
systems was difficult. To overcome such problems software developers were
forced to develop new programming method. OOP was introduced to solve such
programming problems.
1.1
Software Evolution
The software evolution occurred in
several phases. Since the beginning of the first computer, programming for the
computer started to develop software. The earlier electronic computer ENIAC was
programmed in machine language by using switches to enter 1 and 0.
1.2
Basic of Object Oriented Programming
Objects are the entities that can be
uniquely identified from others. They have their unique identity and found
everywhere. In real world system everything exists in the form of objects. For
example desk, bench, blackboard, student, teacher, car, tree are objects. Every
object has two things, firstly its properties we call attributes and second its
behavior we call function. For example a car is an object. It has attributes
like color, number of seats, chassis number, engine number etc and behavior
like move, stop, accelerate, turn etc. The Object Oriented Programming is
developed to model such real world system. Its sole objective is to overcome
the limitation of Procedure Oriented approach. Before discussing various
features of Object Oriented Programming, it is wise to discuss characteristics
of Procedure Programming and its limitations.
1.2.1 Procedure Oriented Programming
In procedure oriented programming a
large program is broken down into smaller manageable parts called procedures or
functions. In procedure oriented programming priority is given on function
rather than data.
In
procedure oriented programming language, a program basically consists of
sequence of instructions each of which tells the computer to do something such
as reading inputs from the user, doing necessary calculation, displaying
output. When a program becomes larger, it is then broken into smaller units
called procedure or functions. A number of functions are supposed to be written
to accomplish such tasks. The primary focus of procedural oriented programming
is on functions rather than data. These functions do not let code duplication.
This technique is only suitable for medium sized software applications.
The procedure oriented programming
can be diagrammatically represented as follows:
In procedure oriented programming two types of data local and global are used.
Data within the function are called local data and the data which are not
within any function are called global data. Global data are accessible to the
only function where it is declared. So each function may access its local data
as well as global data. The local data of one function is not accessible to
other functions. If any data is to be accessed by two or more functions it
should be made global. However, global data are vulnerable to another programmer
to be changed unknowingly. Functions are action oriented and do not correspond
to the element of the problem. The separate arrangement of data and functions
does a poor job of modeling things in the real world. That’s why procedure
oriented programming approach does not model real world system perfectly.
High Level Programming Languages like COBOL, FORTRAN, Pascal, C are common
procedure oriented programming languages.
1.2.1.1 Characteristics
The characteristics of procedure
oriented programming are listed as follows:
- A large program is broken down into small manageable
procedures or functions.
- Procedure oriented programming focuses on procedure or
function rather than data.
- For sharing a common data among different functions the
data is made global.
- Since global data are transferred from function to
function; during the course of transformation the global data may be
altered by the function.
- The program design of procedure oriented programming
follows top down methodology.
1.2.1.2 Limitation
Even though procedure oriented
programming approach is still used in software industry it has following
limitations.
- Focus on functions rather than data.
- In large program, it is difficult to identify belonging
of global data.
- The use of global data is error prone and it could be
an obstacle in code maintenance and enhancements.
- The modification of global data requires the
modification of those functions using it.
- Maintaining and enhancing program code is still
difficult because of global data.
- It does not model real world problem very well. Since
functions are action oriented and do not really correspond to the elements
of problem.
1.2.2 Object oriented programming
The errors faced in the procedure
oriented programming approach are the motivating factor in the invention of
objected oriented approach. In OOP, data are treated as a critical element in
the program and restricts freely transformation of data around the system.
Instead, data are associated with functions that operate on it and protect it
from accidental modification outside functions. OOP approach permits
decomposition of a problem into entities called objects and then build data and
function around them. Data of an object are accessible only by the function
belonging with the object. But function of one object may access the function
of another object.
Object-Oriented programming is
a programming methodology that associates data structures with a set of
operators which act upon it. In OOP, an instance of such an entity is known as
object. In other words, OOP is a method of implementation in which programs are
organized as co-operative collections of objects, each of which represents an instance
of some class and whose classes are all members of a hierarchy of classes
united through the property called inheritance.
1.2.2.1 Characteristics
OOP is most sophisticated
programming methodology among other methodologies by far. Some noticeable
characteristics of OOP are as follows:
- Emphasis is on data rather than procedures.
- Programs are divided into objects.
- Function and data are tied together in a single unit.
- Data can be hidden to prevent from accidental
alteration from other function or objects.
- Data access is done through the visible functions so
that communication between objects is possible.
- Data structures are modeled as objects.
- Follows Bottom up approach of program design
methodology.
1.2.3 Procedure oriented versus Object oriented programming
The differences between procedural
and Object oriented programming are tabulated below:
|
Procedure Oriented Programming
|
Object Oriented Programming
|
|
Emphasis is given on procedures.
|
Emphasis is given on data.
|
|
Programs are divided into
functions.
|
Programs are divided into objects.
|
|
Follow top-down approach of
program design.
|
Follow bottom-up approach of
program design.
|
|
Generally data cannot be hidden.
|
Data can be hidden, so that
non-member function cannot access them.
|
|
It does not model the real world
problem perfectly.
|
It models the real world problem
very well.
|
|
Data move from function to
function.
|
Data and function are tied
together. Only related function can access them
|
|
Maintaining and enhancing code is
still difficult.
|
Maintaining and enhancing code is
easy.
|
|
Code reusability is still
difficult.
|
Code reusability is easy in
compare to procedure oriented approach.
|
|
Examples: FORTRAN,COBOL, Pascal, C
|
Example: C++, JAVA, Smalltalk
|
1.3
Features of Object Oriented
programming
Different features of object
oriented programming are explained here.
1.3.1 Object
Objects are the entities in an
object oriented system through which we perceive the world around us. We
naturally see our environment as being composed of things which have
recognizable identities & behavior. The entities are then represented as
objects in the program. They may represent a person, a place, a bank account,
or any item that the program must
handle. For example Automobiles are
objects as they have size, weight, color etc as attributes (that is data) and
starting, pressing the brake, turning the wheel, pressing accelerator pedal etc
as operation (that is functions).
.
Following are some of the examples
of objects in different scenario.
a) Physical Objects
·
Bus in Traffic System
·
Atom in chemical composition
·
Diode in electronic system
·
Humidity in metrological system
·
Leader in political syste
b) Graphical User Interface
·
Menu
·
Button
·
Toolbar
·
Combo box
·
Text box
·
Windows
c) Data Structure
·
Vector
·
Stack
·
Queue
·
Tree
·
Graph
d) Discipline of Human
·
Actor
·
Singer
·
Musician
·
Student
·
Teacher
e) Geometrical Shapes
·
Point
·
Line
·
Triangle
·
Circle
·
Ellipse
f) User defined data
·
Distance
·
Currency
·
Time
·
Date
·
Complex Number
In computer programming, all these objects of the real world can be modeled by
combining data and function together to make object of the program which is not
possible in procedure oriented programming.
1.3.2 Class
Object consists of data and function
tied together in a single unit. Functions are used to manipulate on the data.
The entire construct of objects can be represented by a user defined data type
in programming. The class is the user defined data type used to declare the
objects. Actually objects are the variable of the user defined data type
implemented as class. Once a class is defined, we can create any number of
objects of its type. Each object that is created from the user defined type
implemented as class is associated with the data type of that class. For
example, manager, peon, secretary clerk are the objects of the class employee.
Similarly, car, bus, jeep, truck are the objects of the class vehicle. Classes
are user defined data type (like a struct in C programming language) and behave much like built in
data type (like int,
char, float) of programming language. It specifies what data and
functions will be included in objects of that class. Defining class doesn�t create an object; however defining
process specifies the data and function to be in the objects of its type.
One of the objects of student can
have following values
Name = “Bishal”
Registration_number = 200876255
Marks = {66, 77, 51, 48, 82}
The function Sort_name () will sort
and display list of students on the basis of name in alphabetical order.
Similarly, function Tot_marks () will sum the marks obtained by the student.
The function Percentage_marks() will calculate the percentage and
the Decide_division () function will decide division based on percentage
obtained by the student.
Each class describes a possibly infinite set of individual objects, each object
is said to be an instance of its class and each instance of the class has its
own value for each attribute but shares the attribute name and operations with
other instances of the class. The following points give the idea of class:
- A class is a template that specifies data and their
operations.
- A class is an abstraction of the real world entities
with similar properties.
- Ideally, the class is an implementation of abstract
data type.
1.3.3 Abstraction
Abstraction is representing
essential features of an object without including the background details or
explanation. It focuses the outside view of an object, separating its essential
behavior from its implementation.
We can manage complexity through abstraction. Let’s take an example of vehicle.
It is constructed from thousands of parts. The abstraction allows the driver of
the vehicle to drive without having detail knowledge of the complexity of the
parts. The driver can drive the whole vehicle treating like a single object.
Similarly Operating System like Windows, UNIX provides abstraction to the user.
The user can view his files and folders without knowing internal detail of Hard
disk like the sector number, track number, cylinder number or head number.
Operating System hides the truth about the disk hardware and presents a simple
file-oriented interface.
The class
is a construct in object oriented programming for creating user-defined data
for abstraction. When data and it operation are presented together, the
construct is call ADT (Abstract Data Type). In OOP classes are used in creating
ADT. For example, a student class can be made and can be available to be used
in programs. The programmer can implement the class in creating objects and its
manipulation without knowing its implementation. The program can use the
function Sort_name() to sort the names in alphabetical order without knowing
whether the implementation uses bubble sort, merge sort, quick sort algorithms.
1.3.4 Encapsulation
The mechanism of wrapping up of data
and function into a single unit is called encapsulation. Because of
encapsulation data and its manipulating function can be kept together. We can
assume encapsulation as a protective wrapper that prevents the data being
accessed by other code defined outside the wrapper. By making use of
encapsulation we can easily achieve abstraction.
The
purpose of a class is to encapsulate complexity. Each data or function in a
class can be marked as private or public. The public interface of a class
represents everything that external users of the class may know about the data
and function. The private function and data can only be accessed by code that
is a member of a class. The code other than member of a class cannot access a
private function or data. This insulation of data from direct access by the
program is called data hiding. After hiding data by making them private, it
then safe from accidental alteration.
The public
interface should be carefully designed no to expose too much of the inner
working of a class.
1.3.5 Inheritance
Inheritance is the process by which
objects of one class acquire the characteristics of object of another class. We
can use additional features to an existing class without modifying it. This is
possible by deriving a new class (derived class) from the existing one (base
class).This process of deriving a new class from the existing base class is
called inheritance.
It provides the concept of hierarchical classification. It allows the extension
and reuse of existing code without having to rewrite the existing code. We
naturally view the whole world is made up of objects. Many objects are related
to each other in a hierarchical way, such as vehicle, four wheeler, and car. If
we describe vehicle in an abstract way, the attributes may be such as color,
number of seats etc. All vehicles have common behavioral aspect like; they
move, accelerate, turn and stop. The more specific class of vehicle is
four wheeler that acquires all features of class vehicle and has more specific
attributes like engine number, chases number etc. The class vehicle is
called base class (or super class) and class four wheeler is called derives
class (or subclass).
1.3.6 Reusability
Like library functions in procedural
programming a class in Object Oriented Programming can be distributed for
further use. In OOP, the concept of inheritance provides the idea of
reusability. Once a class is completed and tested, it can be distributed for
the development other programs too. The programmer can add new features or make
some changes or can derive new classes from the existing class. This idea saves
time and effort of a programmer. The testing of software will become easier as
the already tested class should not be tested again. Suppose we have got a
tested class Employee and we have to design a new class for Manager. The class
Manager has all common features to class Employee. We can add some more
features to class Manager using all features of class Employee.
If a software company creates generic classes for one project then the company
can use the same class and its extensions in the new project with less time,
effort and investment.
1.3.7 Polymorphism
Polymorphism means ‘having many
forms’. The polymorphism allows different objects to respond to the same
operation in different ways, the response being specific to the type of object.
The different ways of using same function or operator depending on what they
are operating on is called polymorphism.
Example of polymorphism in OOP is operator overloading, function overloading.
Still another type of polymorphism exist which is achieved at run time also
called dynamic binding.
For example operator symbol ‘+’
is used for arithmetic operation between two numbers, however by overloading
(means given additional job) it can be used over Complex Object like currency
that has Rs and Paisa as its attributes, complex number that has real part and
imaginary part as attributes. By overloading same operator ‘+’ can be used for
different purpose like concatenation of strings.
When same function name is used in defining different function to operate on
different data (type or number of data) then this feature of polymorphism is
function overloading.
1.3.8 Dynamic binding
The linking of a function call to
the code to be executed in response to the call is called binding. There are
two types of binding one is static binding( also called early binding) and
another is dynamic binding( also called late binding). Function overloading and
operator overloading construct in OOP are the examples of early binding. The
early binding occurs at the compile time. This type of polymorphism occurring
at compile time is called compile time polymorphism.
Dynamic binding means that the code associated with a given function call is
not known until the time of the call at run time. It is achieved at run time so
called as run time polymorphism. Dynamic binding is possible only when we use
inheritance and access the objects through pointers. If classes Circle, Box,
and Triangle are derived from same function draw(). During the function call
draw() through the pointer variable an appropriate function belonging to that
class is involved.
1.3.9 Message passing
Procedural programming languages
have function driven communication. That is a function is invoked for a piece
of data. Object oriented language have message driven communication. A
message is sent to an object. Communications among the objects are analogous to
exchanging messages among people.
An
Object-Oriented program consists of set of objects that communicate with each
other. Object communicates with each other by sending and receiving message
(information). A message for an object is a request for execution of a
procedure and therefore will invoke a function or procedure in receiving object
that generate the desired result. Message passing involves specifying the name
of the object name of the function (message) and the information (arguments to
function) to be sent. In word, the message for an object is a request for
the execution of a function belonging to an object which generates the desired
result for the given argument.
student.fee (name) ;
object message
information
Communication between the objects
takes place as long as their existence. Objects are created and destroyed
automatically whenever needed. In above example student is regarded as an
object sending the message fee to find the fee to be paid by the student with
the given name.
1.4
Popular Object oriented languages
An object-oriented programming language
is one that follows object-oriented programming techniques such as
encapsulation, inheritance, polymorphism. Simula (1967) is generally accepted
as the first language to have the primary features of an object-oriented
language. It was created for making simulation programs, in which objects were
the most important information to be represented. In around 1972 to 1980, a
pure object-oriented programming language Smalltalk was developed. It was
called pure object oriented language because everything in them was treated as
objects.
It was designed specifically to facilitate and enforce Object Oriented methods.
Some languages like Java, Python
were designed mainly for Object Oriented programming along with some procedural
elements.
Apart from this, some languages like
C++, Perl are historically procedural languages, but have been extended with
some Object Oriented features.
Besides these, there are some languages that support abstract data type but not
all features of object-oriented programming. They are called object-based
languages. Examples of such language are Modula-2, Pliant, Ada.
1.4.1 Smalltalk
Smalltalk is an
object-oriented, dynamically typed, reflective programming language The development of Smalltalk language started in 1969 and
it was publicly available in 1980. This language was developed by Alen Kay, Dan
Ingalls, Adele, Goldberg at Xerox Palo Alto Research center (PARC). This
language is 100% Object Oriented. The development of this language is
influenced by language like Lisp, Simula, Logo, and Sketchpad. ANSI Smalltalk
was ratified in 1998 and represents the standard version of Smalltalk.
In smalltalk, objects are called instance variables. All objects are dynamic.
It offers fully automatic garbage collection and deallocation is performed by a
built in garbage collector. All variables are untyped and can hold objects of
any class. New objects are created using the same message passing mechanism
used for operations on objects. All attributes are private to the class where
as all operations are public. The
syntax is very unusual and this leads to learning difficulties for programmers
who are used to conventional language syntax.
Inheritance can be achieved by supplying the name of the super class. All
attributes of super class are available to all its descendants. All methods can
be overridden. Also multiple inheritance is not supported by standard
implementation of Smalltalk. Rapid development of program is possible under its
highly interactive environment.
Example Program of Smalltalk:
Transcript show: 'Hello, world!'
In the above code, the message
'show:' is sent to the object 'Transcript' with the String literal 'Hello,
world!' as its argument. Invocation of the 'show:' method causes the characters
of its argument (the String literal 'Hello, world!') to be displayed in the
transcript ('terminal') window.
1.4.2 Eiffel
Eiffel was designed by a
Bertrand Meyer in the late 1980's from France. It was developed by Bertrand and
Eiffel Software. Eiffel is an ISO-standardized object-oriented programming
language designed for extensibility, reusability, and reliability and
programmer productivity. Eiffel is used in academic institutions as a language
for teaching computer-programming principles. Eiffel is used in the finance,
aerospace, health-care, video-gaming, and other industries as a development
platform. Since 1985, many suppliers have developed Eiffel programming
environments. The Eiffel language is influenced by Ada, Simula, Z etc.
In Eiffel, there is automatic memory management, typically implemented by garbage collection.
The multiple inheritance is supported and there are mechanisms to make
inheritance safe. Provides generic programming, constrained and unconstrained.
In Eiffel every data type is based on class. It has keyword-based syntax as in
the ALGOL/Pascal tradition but separator-free (semicolon is optional), operator
syntax is available for routines. This language is case insensitivity and the syntax is very elegant and simple has fewer reserved
keywords.
The compiler normally generates C source which is than compiled using C
compiler which can lead long compile time. All Eiffel object are created on the
heap storage. It is not a popular language for mainstream application
development.
Example Program of Eiffel:
class
HELLO_WORLD
create
make
feature
make
do
print ("Hello, world!")
end
end
1.4.3 Java
Java was designed by SUN (Stanford
University Net) Microsystems, released in 1996 and is a pure object oriented
language. The SUN says "Java is a new, simple, object oriented,
distributed, portable, architecture natural, robust, secure, multi-threaded,
interpreted, and high performance programming language".
It took 18
months to develop the first working version. Java was initially called
"Oak". It was renamed Java in 1995. The objective of Java was
"Write Once, Run Anywhere" (WORA). It was fairly secure and its
security was configurable, allowing network and file access to be restricted.
Major web browsers soon incorporated the ability to run secure Java applets
within web pages. Java became popular quickly. With the advent of Java 2, new
versions had multiple configurations built for different types of platforms.
For example, J2EE was for enterprise applications and the greatly stripped down
version J2ME was for mobile applications. J2SE was the designation for the
Standard Edition. In 2006, for marketing purposes, new J2 versions were renamed
Java EE, Java ME, and Java SE, respectively.
In 1997, Sun Microsystems approached
the ISO/IEC JTC1 standards body and later the Ecma International to formalize
Java, but it soon withdrew from the process. Java remains a de facto standard
that is controlled through the Java Community Process. At one time, Sun made
most of its Java implementations available without charge although they were
proprietary software. Sun's revenue from Java was generated by the selling of
licenses for specialized products such as the Java Enterprise System. Sun
distinguishes between its Software Development Kit (SDK) and Runtime
Environment (JRE) which is a subset of the SDK, the primary distinction being
that in the JRE, the compiler, utility programs, and many necessary header
files are not present.
On 13 November 2006, Sun released
much of Java as free software under the terms of the GNU General Public License
(GPL). On 8 May 2007 Sun finished the process, making all of Java core code
open source, aside from a small portion of code to which Sun did not hold the
copyright.
The language derives much of its syntax from C and C++
but has a simpler object model and fewer low-level facilities. Java
applications are typically compiled to bytecode which can run on any Java
virtual machine (JVM) regardless of computer architecture.
One characteristic, platform
independence, means that programs written in the Java language must run similarly on any
supported hardware/operating-system platform. One should be able to write a
program once, compile it once, and run it anywhere.This is achieved by most
Java compilers by compiling the Java language code
halfway (to Java bytecode) which means simplified machine
instructions specific to the Java platform. The code is then run on a virtual machine (VM), a program written in native code on the host
hardware that interprets and executes generic Java bytecode.
Further, standardized libraries are provided to allow access to features of the
host machines (such as graphics, threading and networking) in unified ways. Note that, although there is an
explicit compiling stage, at some point, the Java bytecode is interpreted or
converted to native machine code by the JIT
( Just In Time) compiler.
Example Program of Java:
// Hello.java
public class
Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
1.4.4 C#
C# is an object-oriented programming
language developed by Microsoft as part of the .NET fromework and
later approved as a standard by ECMA and ISO. Anders Hejlsberg leads
development of the C# language, which has a procedural, object-oriented syntax based on C++ and includes
aspects of several other programming languages most notably Delphi and Java with an emphasis
on simplification. It was develop by Microsoft in 2000 and was standarderised
by ECMA (European Computer Manufactor Association) in 2003.
Example Program of C#:
class
ExampleClass
{
static void Main()
{
System.Console.WriteLine("Hello, world!");
}
}
1.4.5 D
The D programming language, also known simply as D, is an
object-oriented, imperative, multiparadigm system programming language by Walter Bright of Digital
Mars. It originated
as a re-engineering of C++, but even though it is predominantly
influenced by that language, it is not a variant of C++. D has redesigned some
C++ features and has been influenced by concepts used in other programming
languages, such as Java, C# and Eiffel. A stable version, 1.0, was released on January 2, 2007. An experimental version, 2.0, was released on June 17, 2007.
D is being designed with lessons learned from practical
C++ usage rather than from a theoretical perspective. Even though it uses many
C/C++ concepts it also discards some, and as such is not strictly backward
compatible with C/C++ source code. It adds to the functionality of C++ by also
implementing design by contract, unit testing, true modules, automatic memory management (garbage collection), first class arrays, associative arrays, dynamic arrays, array slicing, nested
functions, inner classes, closures, anonymous functions, compile time function execution, lazy
evaluation and has a
reengineered template syntax. D retains C++'s ability to do low-level coding, and adds to it with support for an integrated inline assembler. C++ multiple
inheritance is replaced by
Java style single inheritance with interfaces and mixins. D's
declaration, statement and expression syntax closely
matches that of C++.
Example Program of D:
import
std.stdio: writefln;
void
main(string[] args) {
writefln(" Hello, World!");
}
1.4.6 C++
The programming language C++ was
developed by Bjarne Stroustrup at Bell Lab in New Jersey in early 1980 s as
extension of C. He named ‘C
with Classes’. In 1983 it was renamed to C++. The operator ++ meaning
that increment in C. ++ is increment operator in C/C++.Enhancements started
with the addition of classes, followed by, among other features, virtual
functions, operator overloading, multiple inheritance, templates, and exception
handling. The C++ programming language standard was ratified in 1998 as ISO/IEC
14882:1998, the current version of which is the 2003 version, ISO/IEC
14882:2003. A new version of the standard known informally as C++0x is being
developed
C++ is a
general-purpose programming language. C++ is regarded as a mid-level language,
as it comprises a combination of both high-level and low-level language features.
It is a statically typed, free-form, multi-paradigm, usually compiled language
supporting procedural programming, data abstraction, object-oriented
programming, and generic programming. The C++ language corrects most of the
deficiencies of C by offering improved compile time type checking and support
for modular and object oriented programming. C++ supports multiple inheritance
and does not have garbage collector dynamically created object must be
destroyed explicitly.
Example Program of C++:
#include
<iostream>
using namespace
std;
int main()
{
cout<<’Hello, World!’);
return 0;
}
1.5
Advantages of OOP
Object oriented programming
contributes greater programmer productivity, better quality of software and
lesser maintenance cost. The main advantages are:
·
Redundant code is eliminated by
various techniques like inheritance templates.
·
Through data hiding, programmer can
build secure programs that cannot be invaded by code in other pats of the
program.
·
Existing classes can serve as
library class for further enhancements. Classes are also available as library
class in the standard library of the language.
·
Because of division of program into
objects makes software development easy.
·
Software complexity is less severe
than conventional programming techniques.
·
Because of dynamic binding, addition
of new classes of objects at run time is possible without modifying the
existing code.
·
The limitation realized in base
class can be fulfilled in derived class without writing even a single piece of
code in the base class.
·
Upgrading and maintenance of
software is easily manageable.
·
System can be easily upgraded from
small to large systems.
·
Message passing technique makes the
interface simpler with external systems.
·
Models real world system perfectly.
·
Code reusability is much easier than
conventional programming languages.
1.6
Disadvantages of OOP
Compiler and runtime overhead.
Object oriented program required greater processing overhead demands more resources.
- An object's natural environment is in RAM as a dynamic entity but
traditional data storage in files or databases
- Re-orientation of software developer to object-oriented
thinking.
- Requires the mastery in software engineering and
programming methodology.
- Benefits only in long run while managing large software
projects.
- The message passing between many objects in a complex
application can be difficult to trace & debug.