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, 15+ years of IT experience, author of many articles on design principles and programming
Course: Design Principles within OOP
Course: Design Principles within OOP

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, 15+ 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

    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.
    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.
    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.
    The source of the indivisible Monolith
  • Dependency inversion principle (SOLID: DIP).
  • Problems with the word "new".
    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.
    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

— 15+ 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

Feedback:

The course is being repeated, we share real feedback from the last time (with the permission of the participants)

"If you are in a small company, there is no one to review and beat you up, you have been programming for a year or two or more and you see that adding a small feature to your code leads to burnout, depression and rewriting the project from scratch - then this course is definitely for you." for you. To understand the basics and realize that these are just the first steps."

"To understand how to write code optimally so that it can be easily expanded and maintained."

"Definitely not for those who haven't had the reaction 'somehow the text is written a little bit moronic' from their own or someone else's code. :) The course helped me understand why experienced programmers spend 80% of their time explaining why they did it and 20% explaining how they did it. I also now know what to do and where to go when I get a terse comment on a pull request saying 'read about SOLID'."
"I would advise everyone to find time for this course to learn/repeat the material, because even my grandfather, a team leader with 20 years of experience, started playing with my homework when I asked him something, and I started wondering what kind of course I was taking. For beginners like me, who had only seen JavaScript so far, to be honest, it was difficult (because all the examples were in PHP). BUT! I definitely found the scary theoretical books less scary and I began to understand many concepts that seemed too abstract."

"You can go through the lectures simply as a listener and not strain yourself too much, but you can also get distracted and delve deeper - especially with homework, there's something to think about."

"P.S. A big thank you to the lecturer for answering Russian-language questions in Ukrainian!"
< /div>

Ticket price

Attendee ticket

Access to the online course broadcast: 6 sessions of 2 hours each

Presentation and materials

Access to course recording (1 year)

Access to chat in TG, where the speaker will answer questions (1 month)

Certificate of the participant

*Course participants receive a 10% discount on participation in Fwdays conferences

If after the first lesson you realize that the expectations do not match, we will refund the money in full.

Available payment in installments from Monobank and purchase in installments from Privatbank
11 000 UAH ≈€275
till 1 February 11 days left
till 1 March — 13000 UAH≈€325
till 22 March — 14500 UAH≈€362
Buy ticket

Fwdays is Ukrainian company, that is why payment for services is made in the national currency of Hryvnia. You can see the approximate price in Euros at blocks with the price.

Group discounts are available  
Напишіть нам на academy@fwdays.com для прорахування вашої знижки.


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?