Course: Analysis and Design Principles within OOP

Speaker — Senior PHP Engineer, has experience in IT more than 12 years, has published articles about design principles and development
Course: Analysis and Design Principles within OOP
Course: Analysis and Design Principles within OOP

We are launching pre-registration for the course "Analysis and Design Principles within OOP" by Natalie Nyshta. The course will consist of practical and theoretical parts and will be held online. Sign up to be the first to buy tickets at the lowest prices 🚀

This course will be ideal for those who have the following questions:

  • Why do I study design patterns, but nothing becomes clearer?
  • Why am I asked about SOLID principles in interviews? What is so important about them?
  • SOLID+? What plus?
  • Design principles? I understand all this, but how to use it in practice?

Join the course and find out!

During the course you will be able to look at the design of classes and the interaction between them in terms of engineering risks, and learn to identify and manage them. You will dive in an exciting "game" of modeling objects and interactions between them, learn why such rules exist in the world of OOP, what is their basis, when to use a design principle, when they can be neglected and how it all comes together among ourselves. Finally, understand why design principles underlie design patterns and why without knowledge of the principles it is almost impossible to use and adapt patterns to your specific task.

The course includes examples from "live" projects, as well as a large number of interesting and exciting design tasks after each section.

Trainer Natalie Nyshta

— Senior PHP Engineer;

— has a university degree as a software engineer;

— has been employed in the commercial programming industry for 12 years;

— has published articles about design principles and development, and gives lecture courses at work about design principles within OOP;

— Natalie is that person who can deal with a spaghetti-code and explain to the managers why such an "architecture" is not the best option.

Common Information

The course includes:

  • More than 6 hours of video content.
  • Downloadable materials: presentations of course, examples of code from the repository, etc.
  • 6 sections.

Sections structure:

  • Theoretical part (video).
  • Real-life examples from real projects: code review, why you can’t do that, and how to do it right (video).
  • Design principles homework.
  • Analysis of homework from the last section: how would this task be solved by the trainer of the course (video).
  • Reference materials and links.
  • Question to check theoretical knowledge.

Language of the course:

The course will be held in Russian.


1. Do not repeat yourself: encapsulate

  • Introduction. Briefly about OOP whales: basic principles.
  • Level of abstraction.
  • The principle of sole responsibility (SOLID: SRP).
  • Occam's blade and KISS.

  • 2. Rely on interfaces

  • API & Client.
  • The principle of interface separation (SOLID: ISP).
  • Interface vs. Abstract Class: An Epic Battle.
  • Interface as an abstraction.
  • Encapsulation of variable aspects.
  • Conway's law.

  • 3. Question of control: who manages what?

  • The principle of openness and closedness (SOLID: OCP).
  • Law of Demeter.
  • What are the dependencies.
  • Public and published interfaces.
  • Inversion of control in the Hollywood principle.

  • 4. The source of the indivisible Monolith

  • The principle of inversion of dependencies (SOLID: DIP).
  • Problems with the word "new".

  • 5. Very "simple" Inheritance

  • Unknown inheritance.
  • What is composition and delegation: "Strategy" design template.
  • Stateful & Stateless objects.
  • Correct use of the inheritance ban: Immutable Object template.
  • Single-threaded and multi-threaded and why there is a ban on inheritance.

  • 6. Mix LSP with prohibition of inheritance and inversion of dependencies

  • Barbara Liskov substitution principle in theory (SOLID: LSP).
  • LSP in human language.
  • Consequences of LSP violation in detail.
  • IoC + LSP + final.
  • Prohibition of imitation in external libraries.

  • Check out Natalie's talk "Analysis and Design Principles within OOP. Inheritance forbiddance problem in a singlethreading PHP" at the PHP fwdays'21 conference

    Sign in
    Or by mail
    Sign in
    Or by mail
    Register with email
    Register with email
    Forgot password?