Complete Guide for Software Design Patterns, SOLID Principles, OOP and UML With Real Examples from Real Projects