Test Driven Object Oriented Design - SOLID, Patterns & LLD
Test driven way of understanding Object Oriented principles, patterns and solving problems
Description
This course teaches Test Driven Object Oriented Design (TDD) using the SOLID principles, design patterns, and low-level design (LLD) techniques. Participants will learn how to write clean, maintainable, and scalable code through hands-on exercises and real-world examples. The SOLID principles provide a foundation for good object-oriented design, while design patterns provide common solutions to recurring design problems. LLD covers the technical details of software design, including memory management, performance optimization, and the trade-offs between different design choices. The course combines the latest best practices in software design with a focus on writing testable, high-quality code, to help participants develop robust, scalable software systems.
Course Structure
Section 1: SOLID Principles
Define: Will define one by one each solid principle.
Test: Implement banking app via TDD (Test Driven Development). Will start by writing the requirement in the form test and then will fix/implement it.
Implementation: Implement solution & improve design using SOLID principle and test should remain fixed after it or can implement new requirement using the principle.
Section 2: Design Patterns
Define: Explain the design pattern with a real-world example
Test: Lay down business requirements via writing test
Implementation: Fix the test / implement requirement by applying that design pattern
Section 3: Shopping Cart
Define: Explain the problem
Think: Think solution & write down a rough structure of it. Suggest possible actors & their behaviors
Test: Start coding. Write down one by one requirement as a test.
Fix: Fix the test incrementally & code the whole solution via it. Use principles & best practices.
Section 4: Parking Lot
Define: Explain the problem
Think: Think solution & write down a rough structure of it. Suggest possible actors & their behaviors
Test: Start coding. Write down one by one requirement as a test.
Fix: Fix the test incrementally & code the whole solution via it. Use principles & best practices.
What You Will Learn!
- The SOLID principles of object-oriented design: Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion.
- Design patterns: Participants will learn about common design patterns such as Command, Singleton, Observer, and Decorator.
- Low-Level Design (LLD): Understanding of the technical aspects of software design, including memory management, performance optimisation, and trade-offs between
- Build a mental model of test first ways of solving Object Oriented (OOPS) and Low Level Design Problems (LLD)
- Understand & implement Test Driven Development (TDD)
- Test Driven Development (TDD): Participants will learn how to write tests for their code, use TDD to drive their design, and implement code that is easy to test
- Aid in cracking top tech interviews of companies such Amazon, GoJek, Thoughtworks , Microsoft & MAANG league ones
- Writing maintainable code: Participants will learn how to write code that is easy to understand, maintain, and extend over time.
- Real-world examples: The course will include real-world examples and hands-on exercises to help students apply the concepts they have learned.
- Overall, the course will equip students with the skills and knowledge they need to write clean, maintainable, and scalable code using the latest best practices
Who Should Attend!
- Software developers: This course is intended for software developers who are looking to improve their skills in developing high-quality, well-designed and maintainable software applications.
- Software architects: Architects and technical leaders who want to stay up-to-date with the latest best practices in software design and development will benefit from taking this course.
- Object-oriented developers: Developers who have a basic understanding of object-oriented programming (OOP) concepts and want to learn how to apply these concepts in a practical, test-driven development context.
- Agile development practitioners: The course is designed for software development teams who are following an Agile development methodology and want to ensure that their code is maintainable, scalable, and testable.
- Aspiring software professionals: Individuals who are interested in pursuing a career in software development and want to get a solid foundation in best practices, design patterns, and SOLID principles.