-> Software Design -> OOP -> Design Patterns
What is software design?
What is Object Oriented Programming?
(Visually)
- Everything is a class
- Everytime assigns values (attributes) to a class to create an object
- When creating / reading (heavily) / updating / deleting external sources, we will invoke the functions (behaviours) of the object
Purpose of software design
.
What do we expect from Object Oriented Programming?
-> A new requirement comes > change little / no change of system
-> The change of requirement is proportional to the amount of change of the system
-> Facitiliate to add new codes instead of modifying the existing codes as much as possible
Four Pillars of OOP
- Abstraction
- Encapsulation
- Inheritance
- Polymorphism
Five Priniciples of Good OOP (SOLID)
- Single-responsiblity Principle
- Open-closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
Design Patterns
-
Software Design
(Article) Design Stamina Hypothesis by Martin Fowler - https://martinfowler.com/bliki/DesignStaminaHypothesis.html
-
JavaScript / Typescript
(Video) JavaScript The Hard Parts: Object Oriented Programming by Will Sentance - https://www.youtube.com/watch?v=aAAS9cEuFYI
(Book) Programming Typescript - https://www.oreilly.com/library/view/programming-typescript/9781492037644
(Book) Programming with Types - https://www.manning.com/books/programming-with-types
-
Object Oriented Programming (Video) Object Oriented Programming is not what I thought - Talk by Anjana Vakil - https://www.youtube.com/watch?v=TbP2B1ijWr8
(Video) SOLID Object-Oriented Design by Sandi Metz - https://www.youtube.com/watch?v=v-2yFMzxqwU
(Video) Talk Session: Polly Want a Message by Sandi Metz - https://www.youtube.com/watch?v=YtROlyWWhV0
(Book) Clean Code - https://www.oreilly.com/library/view/clean-code-a/9780136083238
Also Clean Coder, Clean Architecture, Clean Agile, Clean Craftsmanship
(Book) 99 Bottles of OOP (JS Version), 2nd Edition - https://sandimetz.com/99bottles
(Book) Practical Object-Oriented Design, An Agile Primer Using Ruby, 2nd Edition - https://www.poodr.com
(Website) https://www.patterns.dev
-
UML & C4
(Book) Creating Software with Modern Diagrapmming Techniques - https://pragprog.com/titles/apdiag/creating-software-with-modern-diagramming-techniques
(Book) Head First Object-Oriented Analysis and Design - https://www.oreilly.com/library/view/head-first-object-oriented/0596008678
-
Design Patterns
(Book) Learning JavaScript Design Patterns, 2nd Edition - https://www.amazon.com/Learning-JavaScript-Design-Patterns-Developers/dp/1098139879
(Book) Head First Design Patterns, 2nd Edition - https://www.oreilly.com/library/view/head-first-design/9781492077992
(Book) Design Patterns: Elements of Reusable Object-Oriented Software - https://www.oreilly.com/library/view/design-patterns-elements/0201633612
(Website) Refactoring Guru (Design Patterns) - https://refactoring.guru/design-patterns