Course: Design Principles within OOP

Understand how class design works and the interaction between them using examples from real projects.

Mentor: Natalia Nyshta, Senior Software Engineer, 14+ years of IT experience, author of many articles on design principles and programming
Online
Event is over
Course: Design Principles within OOP
Course: Design Principles within OOP
Event is over
Event is over
Event is over

In this course, you will look at the design of classes and the interactions between them from the perspective of engineering risks, and learn how to identify and manage them.

Mentor: Natalia Nyshta, Senior Software Engineer, 14+ years of experience in IT, author of many articles on design principles and programming

You will immerse yourself in an exciting "game" of modeling objects and the connections between them.

    During this, you will learn:
  • why exactly such rules exist in the world of OOP
  • what is their basis
  • when to use one or another design principle
  • when these principles can be ignored
  • and how it all relates to each other.

You will understand why design principles are the basis of design patterns, and why without them it is almost impossible to use and adapt patterns to your specific task.

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

This course will be ideal for those facing the following questions:

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

Format

Start: September 21, 10:00.
Six 2-hour live lectures on Saturdays:
  • Theoretical part
  • Examples from real projects: code analysis, why you can't do it this way, and how it should be done
  • Analysis of the homework from the previous lecture: how the author of the course would have completed this task.
Available materials:
  • Presentations
  • Video recordings of lectures
  • Code examples from the repository.
  • Homework on the use of design principles
  • Additional materials and links.
  • Tests to test theoretical knowledge.

Program

    21.09. Don't repeat yourself: encapsulate
  • Introduction. Briefly about OOP whales: basic principles.
  • The level of abstraction.
  • Principle of single responsibility (SOLID: SRP).
  • Ockham's Edge and KISS.
    28.09. We rely on interfaces
  • API and Client.
  • Principle of separation of interfaces (SOLID: ISP).
  • Interface vs. Abstract Class: An Epic Battle.
  • Interface as an abstraction.
  • Encapsulation of variable aspects.
  • Conway's law.
5.10. The question of control: who controls what
  • Principle of openness and closure (SOLID: OCP).
  • Law of Demeter.
  • What are the dependencies.
  • Public and published interfaces.
  • Inversion of control in the Hollywood principle.
    • 12.10. The source of the indivisible Monolith
    • Dependency inversion principle (SOLID: DIP).
    • Problems with the word "new".
      19.10. Such a very "simple" Imitation
    • Unknown imitation.
    • What is composition and delegation: The Strategy design pattern.
    • Stateful and Stateless objects.
    • Correct use of no-imitation: Immutable Object pattern.
    • Single-threading and multi-threading and what is the prohibition of imitation here.
      26.10. We mix LSP with prohibition of imitation and inversion of dependencies
    • Barbara Liskov's 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.

    Mentor: Natalya Nyshta, Senior Software Engineer

    —has a higher professional education as a software engineer

    — 14+ years of industry experience

    — articles on design principles and programming

    — in his company, he reads a course on design principles in OOP

    - Nataliya is exactly the kind of person who knows how to understand the noodle code and explain to the management why such "architecture" is not the best option.

    Linkedin



    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?