OOP Lecture#03
OOP Lecture#03
Lecture 03
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 1 / 65
Agenda
1 Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 2 / 65
Introduction
Agenda
1 Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 3 / 65
Introduction
SOLID Principles
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 4 / 65
Introduction
Code Fragility
Fragility is the tendency of the software to break in many places every
time it is changed
For example, In EMS, a change in “Payment and checkouts” module
introduces the bugs in the other sub-system “Event booking”
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 5 / 65
Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 5 / 65
Introduction
Code Rigidity
Rigidity is the tendency for software to be difficult to change, even in
simple ways. Every change causes a cascade of subsequent changes in
dependent modules.
For example, In EMS, a change in “Event booking” module also
initiates a modification in the other sub-system “Event Monitoring”
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 6 / 65
Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 6 / 65
Introduction
Technical debt
The cost of prioritizing fast delivery over code quality for long periods
of time
Fragility and Rigidity are indicators for high technical debt
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 7 / 65
Introduction
Technical debt
No matter how good the team is, technical debt will accumulate over
time
Left uncontrolled, it will kill your project
The key is to keep it under control (using PDD - Pain Driven
Development)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 8 / 65
Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 9 / 65
Introduction
What is SOLID?
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 10 / 65
Single Responsibility Principle (SRP)
Agenda
1 Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 11 / 65
Single Responsibility Principle (SRP)
Each software module should have one and only one reason to change
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 12 / 65
Single Responsibility Principle (SRP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 13 / 65
Single Responsibility Principle (SRP)
Example of Responsibilities
Business logic
User Interface
Logging
Persistence
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 14 / 65
Single Responsibility Principle (SRP)
Why SRP?
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 15 / 65
Single Responsibility Principle (SRP)
Why SRP?
Separation of Concerns
Programs should be separated into distinct sections, each addressing
a separate concern, or set of information that affects the program
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 16 / 65
Single Responsibility Principle (SRP)
If statements
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 17 / 65
Single Responsibility Principle (SRP)
Switch statement
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 18 / 65
Single Responsibility Principle (SRP)
Monster Method
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 19 / 65
Single Responsibility Principle (SRP)
God Class
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 20 / 65
Single Responsibility Principle (SRP)
Example of SRP
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 21 / 65
Single Responsibility Principle (SRP)
Example of SRP
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 22 / 65
Single Responsibility Principle (SRP)
Example of SRP
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 22 / 65
Single Responsibility Principle (SRP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 23 / 65
Single Responsibility Principle (SRP)
Summing up!
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 24 / 65
Open Closed Principle (OCP)
Agenda
1 Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 25 / 65
Open Closed Principle (OCP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 26 / 65
Open Closed Principle (OCP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 27 / 65
Open Closed Principle (OCP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 27 / 65
Open Closed Principle (OCP)
Why OCP?
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 28 / 65
Open Closed Principle (OCP)
Why OCP?
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 28 / 65
Open Closed Principle (OCP)
OCP Example
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 29 / 65
Open Closed Principle (OCP)
OCP Example
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 29 / 65
Open Closed Principle (OCP)
OCP Example
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 29 / 65
Open Closed Principle (OCP)
OCP Example
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 29 / 65
Open Closed Principle (OCP)
OCP Example
Second approach – Use Strategy Pattern
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 29 / 65
Open Closed Principle (OCP)
OCP Example
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 29 / 65
Open Closed Principle (OCP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 30 / 65
Open Closed Principle (OCP)
Summing up!
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 31 / 65
Liskov Substitution Principle (LSP)
Agenda
1 Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 32 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 33 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 33 / 65
Liskov Substitution Principle (LSP)
Relationships
“Is a”
Square is a kind of rectangle
An ostrich is a bird
“Is substitutable by?”
Is the class rectangle fully substitutable by the class square?
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 34 / 65
Liskov Substitution Principle (LSP)
Relationships
“Is a”
Square is a kind of rectangle
An ostrich is a bird
“Is substitutable by?”
Is the class rectangle fully substitutable by the class square?
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 34 / 65
Liskov Substitution Principle (LSP)
Relationships
“Is a”
Square is a kind of rectangle
An ostrich is a bird
“Is substitutable by?”
Is the class rectangle fully substitutable by the class square?
Incorrect relationships between types cause unexpected bugs or side
effects.
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 34 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
Empty Methods
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
Harden Preconditions
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
Harden Preconditions
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
Type Checking
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 35 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 36 / 65
Liskov Substitution Principle (LSP)
Empty Methods
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 37 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 37 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 38 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 38 / 65
Liskov Substitution Principle (LSP)
Type checking
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 39 / 65
Liskov Substitution Principle (LSP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 39 / 65
Liskov Substitution Principle (LSP)
Applying LSP
Make sure that a derived type can substitute its base type completely
Keep base classes small and focused
Keep interfaces lean
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 40 / 65
Liskov Substitution Principle (LSP)
Summing up!
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 41 / 65
Liskov Substitution Principle (LSP)
Summing up!
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 41 / 65
Interface Segregation Principle (ISP)
Agenda
1 Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 42 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 43 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 43 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 44 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 44 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 45 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 45 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 46 / 65
Interface Segregation Principle (ISP)
Throwing exceptions
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 46 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 46 / 65
Interface Segregation Principle (ISP)
Increased coupling
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 46 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 46 / 65
Interface Segregation Principle (ISP)
Empty methods
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 46 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 47 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 48 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 49 / 65
Interface Segregation Principle (ISP)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 49 / 65
Interface Segregation Principle (ISP)
Ensuring Cohesion
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 49 / 65
Interface Segregation Principle (ISP)
Increased reuse
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 49 / 65
Interface Segregation Principle (ISP)
Summing up!
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 50 / 65
Dependency Inversion Principle (DIP)
Agenda
1 Introduction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 51 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
High level modules should not depend on low level modules; both
should depend on abstractions
Abstractions should not depend on details. Details should depend
upon abstraction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 52 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
High level modules should not depend on low level modules; both
should depend on abstractions
Abstractions should not depend on details. Details should depend
upon abstraction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 52 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
High-Level Modules
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 53 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Low-Level Modules
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 54 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Logging
Data-access
Network communication
IO
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 55 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 56 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Abstractions
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 57 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Putting it together
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 58 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Low-Level Class
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
High-Level Class
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Abstraction
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Creating a Factory
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Creating a Factory
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 59 / 65
Dependency Inversion Principle (DIP) Dependency Inversion
Dependency Injection
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 60 / 65
Dependency Inversion Principle (DIP) Dependency Injection (DI)
Dependency Injection
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 61 / 65
Dependency Inversion Principle (DIP) Dependency Injection (DI)
Dependency Injection
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 62 / 65
Dependency Inversion Principle (DIP) Dependency Injection (DI)
Dependency Injection
Passing dependencies
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 62 / 65
Dependency Inversion Principle (DIP) Inversion of Control (IoC)
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 63 / 65
Dependency Inversion Principle (DIP) Inversion of Control (IoC)
Complex dependencies
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 64 / 65
Dependency Inversion Principle (DIP) Inversion of Control (IoC)
Summing up!
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 65 / 65
Dependency Inversion Principle (DIP) Inversion of Control (IoC)
Summing up!
SOLID Design Principles Object Oriented Analysis and Design September 22, 2021 65 / 65