Professional Documents
Culture Documents
Evolution of OOP
Basis For
POP OOP
comparison
Basic Procedure/Structure oriented . Object oriented.
Approach Top-down. Bottom-up.
Main focus is on "how to get the task Main focus is on 'data security'.
Basis done" i.e. on the procedure or structure Hence, only objects are permitted
of a program . to access the entities of a class.
Large program is divided into units Entire program is divided into
Division
called functions. objects.
Entity accessing Access specifier are "public",
No access specifier observed.
mode "private", "protected".
Overloading or Neither it overload functions nor It overloads functions,
Polymorphism operators. constructors, and operators.
Inheritance achieved in three
Inheritance Their is no provision of inheritance. modes public private and
protected.
Data is hidden in three modes
Data hiding & There is no proper way of hiding the
public, private, and protected.
security data, so data is insecure
hence data security increases.
Global data is shared among the Data is shared among the objects
Data sharing
functions in the program. through the member functions.
Friend functions or No concept of friend function. Classes or function can become a
Basis For
POP OOP
comparison
friend of another class with the
keyword "friend".
friend classes
Note: "friend" keyword is used
only in c++
Virtual classes or Concept of virtual function appear
No concept of virtual classes .
virtual function during inheritance.
Example C, VB, FORTRAN, Pascal C++, JAVA, VB.NET, C#.NET.
Declarative: Programming by specifying the result you want, not how to get it.
Structured: Programming with clean, goto-free, nested control structures.
Procedural: Imperative programming with procedure calls.
Functional (Applicative): Programming with function calls that avoid any global state.
Function-Level (Combinator): Programming with no variables at all.
Object-Oriented: Programming by defining objects that send messages to each other. Objects
have their own internal (encapsulated) state and public interfaces. Object orientation can be:
o Class-based: Objects get state and behavior based on membership in a class.
o Prototype-based: Objects get behavior from a prototype object.
Event-Driven: Programming with emitters and listeners of asynchronous actions.
Flow-Driven: Programming processes communicating with each other over predefined channels.
Logic (Rule-based): Programming by specifying a set of facts and rules. An engine infers the
answers to questions.
Constraint: Programming by specifying a set of constraints. An engine finds the values that meet
the constraints.
Aspect-Oriented: Programming cross-cutting concerns applied transparently.
Reflective: Programming by manipulating the program elements themselves.
Array: Programming with powerful array operators that usually make loops unnecessary.
Object-Oriented Analysis
Object–Oriented Analysis (OOA) is the procedure of identifying software engineering
requirements and developing software specifications in terms of a software system’s object
model, which comprises of interacting objects.
The main difference between object-oriented analysis and other forms of analysis is that in
object-oriented approach, requirements are organized around objects, which integrate both data
and functions. They are modelled after real-world objects that the system interacts with. In
traditional analysis methodologies, the two aspects - functions and data - are considered
separately.
Grady Booch has defined OOA as, “Object-oriented analysis is a method of analysis that
examines requirements from the perspective of the classes and objects found in the vocabulary of
the problem domain”.
Identifying objects
Organizing the objects by creating object model diagram
Defining the internals of the objects, or object attributes
Defining the behavior of the objects, i.e., object actions
Describing how the objects interact
The common models used in OOA are use cases and object models.
Object-Oriented Design
Object–Oriented Design (OOD) involves implementation of the conceptual model produced
during object-oriented analysis. In OOD, concepts in the analysis model, which are
technology−independent, are mapped onto implementing classes, constraints are identified and
interfaces are designed, resulting in a model for the solution domain, i.e., a detailed description
of how the system is to be built on concrete technologies.
Grady Booch has defined object-oriented design as “a method of design encompassing the
process of object-oriented decomposition and a notation for depicting both logical and physical
as well as static and dynamic models of the system under design”.
Object-Oriented Programming
Object-oriented programming (OOP) is a programming paradigm based upon objects (having
both data and methods) that aims to incorporate the advantages of modularity and reusability.
Objects, which are usually instances of classes, are used to interact with one another to design
applications and computer programs.
Some examples of object-oriented programming languages are C++, Java, Smalltalk, Delphi, C#,
Perl, Python, Ruby, and PHP.
1. Java is Simple:
The Java programming language is easy to learn. Java code is easy to read and write.
2. Java is Familiar:
Java is similar to C/C++ but it removes the drawbacks and complexities of C/C++ like pointers and
multiple inheritances. So if you have background in C/C++, you will find Java familiar and easy to learn.
5. Java is Robust:
With automatic garbage collection and simple memory management model (no pointers like C/C++),
plus language features like generics, try-with-resources,… Java guides programmer toward reliable
programming habits for creating highly reliable applications.
6. Java is Secure:
The Java platform is designed with security features built into the language and runtime system such as
static type-checking at compile time and runtime checking (security manager), which let you creating
applications that can’t be invaded from outside. You never hear about viruses attacking Java
applications.
8. Java is Multithreaded:
The Java platform is designed with multithreading capabilities built into the language. That means you
can build applications with many concurrent threads of activity, resulting in highly interactive and
responsive applications.
Besides the above features, programmers can benefit from a strong and vibrant Java ecosystem:
Java is powered by Oracle - one of the leaders in the industry. Java also gets enormous support
from big technology companies like IBM, Google, Redhat,… so it has been always evolving over
the years.
There are a lot of open source libraries which you can choose for building your applications.
There are many superior tools and IDEs that makes your Java development easier.
There are many frameworks that help you build highly reliable applications quickly.
The community around Java technology is very big and mature, so that you can get support
easily. Thank you.