
Explore the five solid principles through simple UML diagrams, non-UML notations, and pseudo code, with examples in statically typed languages like C++, C-Sharp, and Java.
Explain that a class should have one responsibility, not one method. Show why calculateBonus belongs to HR, not the employee class, highlighting one reason to change.
Move unrelated responsibilities to dedicated classes to enforce single responsibility; HRPersonnel uses Employee, while FinanceCalculations uses EmployeeBenefits to compute bonuses.
Single responsibility means a module has one and only one responsibility. Methods do one task; components handle a single concern like configuration data, guided by cohesion.
Enforce the open-closed principle to keep existing functionality intact while adding new criteria, avoiding multiple software versions, costly maintenance, and fragile, hard-to-test changes.
this lecture demonstrates separating bonus and ESOP calculations into dedicated interfaces to achieve open closed principle compliance for varying criteria.
Explore the Liskov substitution principle by relating an employee and IBenefitsCalculator hierarchy through a grade-based calculator, and examine how introducing contractors can violate LSP when overridden methods throw exceptions.
Explore how type checks to avoid method exceptions reveal fragile inheritance, violate the open-closed principle, and risk breaking client code on base class references in solid design.
Examine how derived classes violate the Liskov substitution principle by tightening or relaxing preconditions and breaking input and return value contracts under design by contract.
Refactor the employee hierarchy by moving getGrade and isServingNotice to a Regular class. Enforce base class contracts and use derived references for predictable client behavior.
Master the Liskov Substitution Principle, ensuring derived classes remain substitutable for base classes and respect design by contract. Address violations by adjusting contracts or inheritance, and uphold open-closed principle.
Understand the interface segregation principle by analyzing a fat employee interface that forces dummy implementations for unused training methods, highlighting how distinct interfaces improve design and maintainability.
Explore interface segregation by modeling an employee as an interface with name, id, and address; avoid fat interfaces that cause Liskov substitution principle violations.
Apply the interface segregation principle to expose only interfaces clients use. Avoid unnecessary dependencies and relate to the Liskov Substitution Principle and the Single Responsibility Principle.
Examine the dependency inversion principle by showing how high level modules depend on abstractions rather than details, and how salary calculator relies on interface-based tax and bonus calculators.
Revisit the solid principle definition by showing how high and low level modules depend on abstractions. Contrast interfaces with concrete implementations to highlight that abstraction should not depend on details.
Invert dependencies to maximize reuse by moving the abstraction, namely the bonus calculator interface, into the same library as the salary calculator, enabling independent implementations and stable interfaces.
- Have you found yourself losing interest mid-way on a book on software design that you once started with a lot of enthusiasm?
- Have you wished to strengthen your software design foundation but never found enough time to understand it in detail?
- Have you struggled in understanding design patterns?
- Have you gone through SOLID principles but can not still clearly distinguish among them?
This course addresses all the above issues:
It is a 1.5 hours comprehensive guide delivered with crystal clear communication.
The diagrams and the visual effects keep you focused and interested throughout the course.
It is not just the speaker but also the content that talks to you!
Here's some feedback from the course students:
- "I took this course the night before an interview and it paid off. Was able to explain SOLID principles in OOP during the interview, and it made me look very good! "
- "It's really an awesome course. Instructors approach of explaining consequences and solutions is very good and different situations has been explained."
-"This is an excellent course for SOLID principles with the real time examples. The way each and every principle explained is great"
- "I found this very useful, I tried another courses more focused on the concepts instead the examples. In this course I found both. Concepts and Examples. Very clear and well complemented with real life examples. Thanks!!"
- "The SOLID concept is very methodically exposed, with a lot of clarity, through very comprehensible and concrete examples..."
- "The simple and focused examples really help to understand the SOLID priciples and consequences of naive program development."
- "Great analysis of the principles..."
- "Crisp, clearly explains basics of SOLID."
- " Must for every developer. Very nice explanation with examples"
- "Very good and precise..."
- "Although I have had a fair idea about the Design Principles prior to this course, the simple and crisp presentation has only helped me in gaining a newer perspective"
Do not let the duration and colorful appearance of the training allow you to think that the content is not deep enough. In fact even the software architects and most experienced developers will immensely benefit as the training covers aspects of the SOLID principles that are not readily available. This also lays a strong base for you to understand design patterns as most of the design patterns are based on these principles.
Note this course needs you to have a prior experience in software development.
The training explains with a simple example and builds on it as you go deeper into it. Examples are not overly simple nor too complex - They have just the right balance to help you relate back to your project.
Join the course with a unique, never-seen-before content and delivery style!