Object Oriented Programming
Principles
Portland Data Science Group
Created by Andrew Ferlitsch
Community Outreach Officer
July, 2017
Why do OOP?
• Pre-OOP Days – Write Code Fast as One Can.
• Code was not designed – code smells bad.
• Poor reuse of code – lots of copy and paste.
• Code became unreadable – spaghetti code.
• Difficult to trace – hard to fix bugs.
• Fix one bug - breaks something downstream.
• Object Oriented Programming (Design)
• Design First, then Code.
• Promotes reuse of code.
• Code becomes modular with clearly defined interfaces.
• Easy to maintain and modify.
• Add new objects (classes) with small differences to existing objects.
OOP Example
Banking Application - we might have checking accounts, savings accounts, money
market accounts, and lines of credit.
• Some of these accounts would have similar data fields (e.g., account
number, balance).
• Some of these accounts would have the same actions (e.g., withdraw
money, get balance).
• Some of these accounts would have some data and actions specific to the
account type not shared with the other accounts.
Pre-OOP Days :
• Write a component (set of functions) for each account.
• Common data fields and actions would be duplicated.
• When maintaining/debugging, maybe confusing which data (e.g., account
number goes with which account (e.g., checking, savings, money market,
line of credit).
OOP Principles – Class & Objects
• Class – A means to construct objects from predefined
specifications (e.g, forms/templates), which may contain:
• Initialized Data
• Placeholders for Data
• Methods for Accessing and Manipulating Data
• Object – An instance of a class, i.e., built from a specification
A collection of
specifications
for building
Something.
Class A Class B Class C
Specifications on what to build and how to build it
Class A
ConstructionRequirements
Object
Class Constructor
Parameters
Class Definition
Class Instance (Object)
OOP Principles – Inheritance
• Class Inheritance – Derived (Sub) Class
• Assembly of itself (derived or sub) with one or more other
classes (base or super).
• Hierarchical Classes – One class inherits a class, which inherits
another, etc.
Class A Class B Class C
Class D
A collection of
specifications
for base (super)
classes.
A collection of
specifications
for derived (sub)
classes.
Data/Methods of D
Inherit Data/Methods
of class B and C.
Car Truck
Chassis
Wheels Motor
Legend:
Inheritance
Parameters
Base (super) classes are inherited
Upwards into derived (sub) classes.
Parameters are passed downwards
From derived (sub) to the constructors
of base (super) classes.
Derived Class
OOP Principles – Data Encapsulation
• Data Encapsulation – i.e., data hiding
• Data Accessibility
Object
A Data is hidden
Object
B
(data)
A can see B
A cannot see B’s data
B can see its data
Object
B
(public)
(protected)
(private)
Object
A
A can access B’s data
A cannot access B’s data
A cannot access B’s data
Derived Class can
access B’s data
Inheritance
OOP Principles – Polymorphism
• Method Overloading – The same method (function) can have
multiple implementations for different parameters.
• Operator Overloading – The same operator (e.g., +) can have
multiple implementations for different data types.
Method Name: A
Parameters Parameters
Implementation Implementation
One (same) name for the Method
Switch to implementation based
on parameters
Parameters specific
implementations
Operator (e.g., +)
Data Type Data Type
Implementation Implementation
Can be different number and/or
data type of parameters.
Same operator
Switch to implementation based
on data type of parameters.
Data Type specific
implementations
OOP Principles – Abstraction
• Abstract Classes – Reduce Complexity by Hiding Details
• Has Method Signatures (declarations), but not implementation.
• Abstract Methods must be implemented by derived (sub) class.
Method Name: A Method Name: B
Parameters Parameters
Abstract Class
Derived Class
Method Name: C
Parameters
Method Name: A
Parameters
Method Name: B
Parameters
Implementation Implementation Implementation
Inheritance
Derived Class specific implementations of inherited abstract methods

Object Oriented Programming Principles

  • 1.
    Object Oriented Programming Principles PortlandData Science Group Created by Andrew Ferlitsch Community Outreach Officer July, 2017
  • 2.
    Why do OOP? •Pre-OOP Days – Write Code Fast as One Can. • Code was not designed – code smells bad. • Poor reuse of code – lots of copy and paste. • Code became unreadable – spaghetti code. • Difficult to trace – hard to fix bugs. • Fix one bug - breaks something downstream. • Object Oriented Programming (Design) • Design First, then Code. • Promotes reuse of code. • Code becomes modular with clearly defined interfaces. • Easy to maintain and modify. • Add new objects (classes) with small differences to existing objects.
  • 3.
    OOP Example Banking Application- we might have checking accounts, savings accounts, money market accounts, and lines of credit. • Some of these accounts would have similar data fields (e.g., account number, balance). • Some of these accounts would have the same actions (e.g., withdraw money, get balance). • Some of these accounts would have some data and actions specific to the account type not shared with the other accounts. Pre-OOP Days : • Write a component (set of functions) for each account. • Common data fields and actions would be duplicated. • When maintaining/debugging, maybe confusing which data (e.g., account number goes with which account (e.g., checking, savings, money market, line of credit).
  • 4.
    OOP Principles –Class & Objects • Class – A means to construct objects from predefined specifications (e.g, forms/templates), which may contain: • Initialized Data • Placeholders for Data • Methods for Accessing and Manipulating Data • Object – An instance of a class, i.e., built from a specification A collection of specifications for building Something. Class A Class B Class C Specifications on what to build and how to build it Class A ConstructionRequirements Object Class Constructor Parameters Class Definition Class Instance (Object)
  • 5.
    OOP Principles –Inheritance • Class Inheritance – Derived (Sub) Class • Assembly of itself (derived or sub) with one or more other classes (base or super). • Hierarchical Classes – One class inherits a class, which inherits another, etc. Class A Class B Class C Class D A collection of specifications for base (super) classes. A collection of specifications for derived (sub) classes. Data/Methods of D Inherit Data/Methods of class B and C. Car Truck Chassis Wheels Motor Legend: Inheritance Parameters Base (super) classes are inherited Upwards into derived (sub) classes. Parameters are passed downwards From derived (sub) to the constructors of base (super) classes.
  • 6.
    Derived Class OOP Principles– Data Encapsulation • Data Encapsulation – i.e., data hiding • Data Accessibility Object A Data is hidden Object B (data) A can see B A cannot see B’s data B can see its data Object B (public) (protected) (private) Object A A can access B’s data A cannot access B’s data A cannot access B’s data Derived Class can access B’s data Inheritance
  • 7.
    OOP Principles –Polymorphism • Method Overloading – The same method (function) can have multiple implementations for different parameters. • Operator Overloading – The same operator (e.g., +) can have multiple implementations for different data types. Method Name: A Parameters Parameters Implementation Implementation One (same) name for the Method Switch to implementation based on parameters Parameters specific implementations Operator (e.g., +) Data Type Data Type Implementation Implementation Can be different number and/or data type of parameters. Same operator Switch to implementation based on data type of parameters. Data Type specific implementations
  • 8.
    OOP Principles –Abstraction • Abstract Classes – Reduce Complexity by Hiding Details • Has Method Signatures (declarations), but not implementation. • Abstract Methods must be implemented by derived (sub) class. Method Name: A Method Name: B Parameters Parameters Abstract Class Derived Class Method Name: C Parameters Method Name: A Parameters Method Name: B Parameters Implementation Implementation Implementation Inheritance Derived Class specific implementations of inherited abstract methods