This document discusses object-oriented programming (OOP) and its advantages over procedural programming. It defines some key OOP concepts like objects, classes, encapsulation, and inheritance. It explains that in OOP, programs are designed as collections of these discrete objects that combine data and behaviors. This reduces complexity and promotes reusability, flexibility, and maintainability. OOP also gives data more importance and provides mechanisms to hide data that procedural languages lack.
2. After this lecture, you should be able to
Difference of OO technique by other techniques
Understand the meaning of object
Know the difference between an object and a
class
Know the concepts of object orientation
Understand how objects communicate
4. Detailed Course Outline is on the subject homepage
http://groups.google.com/group/sp09_bcs2
Check your email often for announcements related to
the course
5. Recommended Books:
OOP using C++ 6th Edition, Prentice Hall
Reference Books:
OOP in C++ by Robert Lafore
Thinking in C++, 2nd Edition, by Bruce Eckel
6.
7.
8.
9.
10.
11. But not in Class. What
you have to do is just
inform me about your
situation and I will not
mark your absent.
14. Applicablerules and submission deadlines will
be indicated with the assignments
No make-ups
15. 10-15 minutes duration
Will cover reading assignments and
material covered in the class
Unannounced
No make-ups
16. Supervised Lab Sessions and Tutorials will be
organized as and when required.
17. I will ask questions very often
So be attentive
18. Actually, programming is not so
easy, because a real good program is not
easily programmed. It needs the
programmers’ lots of wisdom, lots of
knowledge about programming and lots of
experience.
It is like writing, to be a good writer needs
lots of experience and lots of knowledge
about the world.
Learning and practice are necessary.
19. Usually,people start learning
programming by writing small
and simple programs
consisting only of one main Main Program
program. Here ``main
program'' stands for a Data
sequence of commands or
statements which modify data
which is global throughout the
whole program.
20. This programming technique can only be used in
a very small program.
For example, if the same statement sequence is
needed at different locations within the
program, the sequence must be copied. If an
error needed to be modified, every copy needs
to be modified.
This has lead to the idea to extract these
sequences(procedure), name them and offering
a technique to call and return from these
procedures.
21. With procedural programming, Main
Procedure
you are able to combine Program
sequences of calling
statements into one single
place.
A procedure call is used to
invoke the procedure. After
the sequence is processed,
flow of control proceeds right
after the position where the
call was made .
22. Programs can now be written more
structured and error free.
For example, if a procedure is
correct, every time it is used it produces
correct results.
Consequently, in cases of errors you can
narrow your search to those places which
are not proven to be correct.
23.
24. Now a program can be viewed as a sequence of
procedure calls.
The main program is responsible to pass data to
the individual calls, the data is processed by the
procedures and the resulting data is presented.
Thus, the flow of data can be illustrated as a
hierarchical graph, a tree.
25. Main Program
Data
Procedure1 Procedure2 Procedure3
26. Modular programming is subdividing your
program into separate subprograms such as
functions and subroutines.
With modular programming, procedures of a
common functionality are grouped together
into separate modules.
A program therefore no longer consists of
only one single part. It is now divided into
several smaller parts which interact through
procedure calls and which form the whole
program.
27. Main Program(Also a module)
Data
Module1 Module2
+ +
Data Data11
Data Data Data2
Procedure1 Procedure2 Procedure3
The main program coordinates calls to procedures in separate modules and
hands over appropriate data as parameters.
28. Each module can have its own data. This allows
each module to manage an internal state which
is modified by calls to procedures of this
module.
Each module has its own special functionalities
that supports the implementation of the whole
program.
29. Also structured programming
A subset of procedural programming that
enforces a logical structure on the program
being written to make it more efficient and
easier to understand and modify.
Certain languages such as Ada, Pascal, and
dBASE are designed with features that
encourage or enforce a logical program
30. Global Data Global Data Global Data
Function Function Function Function
31. When the program grows larger and more
complex even the structural programming
shows the strain.
You may have heard horror stories of project’s
complexity, schedule slipping etc.
In procedural programming data is given
second class status.
Inventory system-> new programmer->writes the function
It is same like you are sitting in your lobby and
left there your personal documents.
32. It is a kind of thinking methodology
Everything in the world is an object;
Any system is composed of objects (certainly a system is
also an object);
The evolution and development of a system is caused by
the interactions among the objects inside or outside the
system
33. Build programming using software objects.
Means that we organize software as a
collection of discrete (different) objects
that incorporate both data structure and
behavior.
In OOP, the software objects correspond
closely to real objects involve in the
application area.
34. A flower, a tree, an animal
A student, a professor
A desk, a chair, a classroom, a building
A university, a city, a country
The world, the universe
A subject such as CS, IS, Math, History, …
35. A law system
A cultural system
An educational system
An economic system
An Information system
A computer system
36. University is developed by the interactions
among:
students
professors
staffs
officers of Bio-science
officers of CIIT
… ...
37. ADTs allows the creation of instances with well-defined
properties and behavior.
In object-orientation, ADTs are referred to as classes.
Therefore, a class defines properties of objects which
are the instances in an object-oriented environment.
Object-oriented programming is ``programming with
ADTs'': combining functionality of different ADTs to solve
a problem.
Therefore instances (objects) of ADTs (classes) are
dynamically created, destroyed and used.
39. An object-based programming language is one
which easily supports object-orientation.
Smalltalk:1972-1980, Alan Kay
C++:1986, Bjarne Stroustrup
Java:1992 (Smalltalk + C++), James Gosling
C#:
Developed at Microsoft by Anders Hejlsberg et al, 2000
Event driven, object oriented, visual programming
language (C++ and Java)
40. ◆ Complexity & Haste:
Skilled programmer: 10-15 lines of code a day
Price ~ $18/line
Can you pay this? If not, what will you do?
Hire non professionals?
◆ OOP fights Complexity:
A more realistic model of the world
Collection of interacting objects instead of a
collection of functions
Reuse of ready made components
41. Reduce development cost:
one component instead of many
Promote reliability:
exercise component from many different aspects
noneed to remember to correct the same
error twice
42. INFO TECH RESEARCH FUNDING
The Clinton Administration has targeted 5
technology areas for support from the National
Institute of Standards & Technology, and two
focus directly on information technology: a
nationwide health care information infrastructure
and an effort to develop reusable software
components for large software systems.
[Wall Street Journal, 26 April ‘94, Page B6]
Reuse is tightly coupled with abstraction:
● Identify similarity between elements.
● Create a component that represents the similar parts.
● Rewrite elements to use the common part.
43. Adding new features responding to changing
operation environment can be a matter of
introducing a few new objects.
Easy to make minor changes in the data
representation/ the procedures used in an OO
program. Changes within an object do not affect
any other parts of the program.
44. Flexibility
Very flexible in accommodating different
situations because the interaction patterns
among the object can be changed without
modifying the object.
Maintainability
Objects can be maintained separately.
Reusability
Objects can be reused in the different
programs.
45. Data is more important then
functions, methods, procedures etc but in
procedural languages data is given the
second class status. OOP also provides the
mechanism to hide the data.
Example:
Importance of data in inventory system, banking
system etc.
You hire a new programmer and he accidently
changes the corrupts the data. Same like
someone changes your personal data.
46. Reduces complexity much like the detailed
workings of an automobile are hidden from
the average driver.
Principle of least privilege (need-to-know)
More Secure. Less likely that someone will
alter or misuse something.
Easier to change the implementation without
affecting other modules that use it.
48. Class
A generic definition for a set of similar
objects.
Provides the specifications for the
objects’ behaviors and attributes.
An abstraction of a real world entity.
49. The key concepts are:
Object
Directly relate to the real world entities.
Can be a person, thing or concept.
Like a “black box”, therefore all the
implementation is hidden.
Has a
State (attribute)
Behavior (operation)
Identity (unique name)
50. Object vs Class
object is created from a class.
object is considered as an instance of a class.
class is considered as a template from which
objects are instantiated
can create an object or many objects from a
class.
51. Object vs Class
Diagram 1: Class Car Diagram 2: MyCar as an Object
Car
Door
Seat
Type
Model
Drive
Stop
Lock
Unlock
52. Messages
Requests for the receiver objects to carry
out the indicated method or behavior and
return the result of that action to the
sender objects
53. Encapsulation
Process of hiding the implementation
details of an object.
Access to manipulate the object data is
through its interface (operations/
functions).
Protects an object’s internal state from
being corrupted by other programs.
54. Encapsulation (cont)
Program maintenance is easier and less
expensive because changes in the
object data or implementation is only
modified in one place
Allows objects to be viewed as black
boxes.
55. Inheritance
Code reuse mechanism to build new
objects out of old ones.
Defines a relationship among classes
where one class shares the structure
and/or behavior on one or more
classes.
Provides a more flexible and adaptable
system and enables polymorphism.
56. Polymorphism
Means having many forms.
Provides the ability to use a single
message to invoke many different kinds
of behavior.
Same name with different meaning.
57. Protected levels in a class:
Public: Can be accessed both within and external
to the object.
Private: Can only be used by the object itself.
The public section of a class is usually called
the interface. It is what the programmers
sees.
Normally, All data is private and only the
bare essential functions are made public.
58. What is Object Oriented Programming?
Object-oriented programming is a method
of implementation in which programs are
organized as cooperative collections of
objects, each of which represents an
instance of some class, and whose classes
are all members of one or more hierarchy
of classes united via inheritance
relationships
59. OOP by Robert Lafore
OOP by Deitel and Deitel
Haibin Zhu, Ph. D. Associate Professor of CS,
Nipissing University
Complete Reference