Test Driven Object Oriented Design - SOLID, Patterns & LLD

Test driven way of understanding Object Oriented principles, patterns and solving problems

Ratings: 4.10 / 5.00




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.