' $
Object-Oriented Programming
An Overview
& %
OOP-1
' $
Contents
• OOP and software productivity
• Features and characteristics of OOP
• Major concepts of OOP
• OOP languages
• OOP and traditional design
• Advantages and disadvantages
& %
OOP-2
' $
What is Object-Oriented Programming
• A well-regarded and widely accepted programming technology
• Potential for much improved productivity
• Uses interacting program objects
• Objects are independent entities
• Objects respond to messages
& %
OOP-3
' $
Software Productivity Factors
• Modularity (separation of duties)
• Extensibility (responsive to future requirements)
• Modifiability (easy to make small changes)
• Flexibility (not cast in concrete)
• Maintainability (big savings)
• Reusability (don’t reinvent the wheel)
& %
OOP-4
' $
Software Engineering Techniques
• Data abstraction (hidden data representation)
• Program encapsulation (operations married to data)
• Software libraries (fixed reusable)
• Reusable Objects (flexible, reusable)
• Polymorphism (type-related generic operations)
• Maintenance automation
& %
OOP-5
' $
OOP Central Concepts
• Data abstraction
• Encapsulation
• Classification
• Inheritance
• Polymorphism
& %
OOP-6
' $
OOP Characteristics
• Class definitions
• Inheritance and class hierarchy
• Operator and Function overloading
• Generic classes
• Class libraries
& %
OOP-7
' $
OOP Languages
• Simula
• Modula
• Smalltalk
• Ada
• Objective-C
• CLOS (Common Lisp Object Standard)
• Standard C++
• Java
• Scripting languages: Perl, Javascript, Python
& %
OOP-8
' $
Traditional vs. OOP
• Procedural Programming :
data structures + algorithms = Program
• OOP :
objects + messages = Program
& %
OOP-9
' $
Class Definition
• Blueprint for building Objects
• Members: methods and fields
• private and public
• API—application programming interface
• relation with other classes
& %
OOP-10
' $
An Object
Public
Method Internal
call working
interface
& %
OOP-11
' $
Inheritance Example
Auto Sedan
Engine 2−4 Doors
Steering 4 Wheels
Inherits
Breaks Radio
Doors Trunk
Wheels
Tires
& %
OOP-12
' $
Inheritance Example
Sedan Family Sedan
2−4 Doors 4 Doors
4 Wheels AC
Inherits Automatic
Radio
Big Trunk
Trunk Fuel Economy
& %
OOP-13
' $
Inheritance Example
Sedan Sports Sedan
2−4 Doors 2 Doors
4 Wheels AC
Inherits Manual
Radio
Tiny Trunk
Trunk Horse power
High Price
& %
OOP-14
' $
Inheritance Concepts
• Deriving new classes from old ones
• Single inheritance
• Partial inheritance
• Multiple inheritance
• Inheritance chain
& %
OOP-15
' $
Generic Classes
• Class definition for unspecified data
• Container class
• Flexible and reusable
& %
OOP-16
' $
Reusability Considerations
• Pipes / filter (ala UNIX): slow, restrictive
• Subroutine libraries: fast, inflexible
• Object libraries: flexible, and efficient
& %
OOP-17
' $
Design Approaches
• Ways to Break The Problem Down
• Procedural decomposition
• Data decomposition
• Object-oriented decomposition
& %
OOP-18
' $
Procedural Decomposition
• Also known as functional or traditional design
• Decompose the solution into major steps
• Decompose each major step further
• Decomposition procedural-oriented
& %
OOP-19
' $
Traditional Design Disadvantages
• Data and operations are separated
• No data abstraction or info hiding
• Not responsive to changes in problem space
• Inadequate for concurrent problems
& %
OOP-20
' $
Object-oriented Design Principle
• Identify interacting objects
• Characterize each object, establish attributes
• Identify the data and operations within each object
• Identify requests answered by each object
• Identity services required of other objects
• Establish relationships to other objects
• Group similar objects together
• Implement common super classes
• Implement different objects as classes
& %
OOP-21
' $
Advantages
• Responsive to changes
• Encapsulation
• Simplify Testing, debugging
• Easy to understand
• Avoid reinventing the wheel
• Easier to manage, to maintain
• Off-the-shelf software
& %
OOP-22
' $
Potential Disadvantages
• Over generalization
• Artificial class relations
• Unnecessary complications
& %
OOP-23