Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
SOLID C++
Rating: 4.1 out of 5(340 ratings)
21,469 students

SOLID C++

Learn and practice C++ with SOLID object-oriented design principles
Created byAndrzej Sz.
Last updated 1/2021
English

What you'll learn

  • Discover how to design and write robust and maintainable object-oriented code
  • Develop an intuitive understanding of SOLID principles
  • Learn how to follow SOLID principles using appropriate abstractions and programming patterns
  • Learn how to follow SOLID principles using different C++ language features and idioms
  • Know how to structure C++ projects, test and refactor object-oriented code
  • Practice SOLID principles and C++ in assignments and final programming project (C++17)
  • Learn how to use CMake and Boost libraries in C++ projects
  • Learn how to use Google Test for unit testing
  • Get acquainted with UML (class and sequence diagrams)

Course content

9 sections83 lectures9h 17m total length
  • What is SOLID5:50

    Learn the solid five object-oriented design principles—single responsibility principle, open closed principle, Liskov substitution principle, interface segregation principle, and dependency inversion principle—to improve maintainability, flexibility, and understandability of code.

  • Why focus on C++3:02

    Explore why this course focuses on C++, a modern, powerful general-purpose language. Learn its object-oriented, generic, and functional features, dynamic and static polymorphism, and idioms that support solid principles.

  • Repository, presentations, source code, tests, CI8:34

    Explore the CP Solid repository on GitHub, discover presentations, standalone C++ examples, the server app project, unit and high-level tests, and continuous integration via GitHub Actions.

  • Project description with sequence diagram9:52
  • Project source code overview before SOLID9:59

    Examine the toy project's initial commit to understand its main.cpp structure, boost io context usage, tcp server setup, json and xml parsing, and per-connection session handling before applying SOLID principles.

  • Project source code overview after SOLID13:30

    Explore the latest solid refactor of a toy c++ project: a multi-library server built with cmake, featuring authentication, text service handling text reports, and xml/json parsers with unit tests.

  • Additional remarks about project5:55

    Explains a synchronous, blocking tcp server model that creates a thread per connection, uses blocking reads, and contrasts with asynchronous designs for scalability.

  • Test introduction

Requirements

  • Beginner or intermediate C++ (used for examples and assignments)
  • Basic understanding of OOP (class, polymorphism, inheritance, etc.)
  • Ideally, you should have already worked on a few small hobby projects or have some commercial software development experience

Description

Learning syntax of a programming language is not enough to become professional and build high quality software. One must also learn how to make good design and implement it properly so that software is robust, maintainable, flexible and testable. That’s why we need object-oriented design principles like SOLID:

  • Single responsibility

  • Open-closed

  • Liskov substitution

  • Interface segregation

  • Dependency inversion

This is probably the most complete SOLID principles course on Udemy. But it’s also special in that it focuses on C++ programming language, which we use for examples and assignments. And this course covers both theory and practice.


By the end of this course you should

  • Develop an intuitive understanding of all SOLID principles

  • Understand when SOLID principles are needed and when not

  • Learn how to follow SOLID principles in general, regardless of a programming language, using appropriate abstractions and programming patterns

  • Learn how to follow SOLID principles using different C++ language features and idioms

  • Know how to structure C++ projects, test and refactor

However, there should be no illusions about this or any other course. One cannot become a true master of object-oriented design and programming only by completing one or few courses – it takes years of practice. But this course is a good starting point and provides the needed foundations.


So what exactly is covered in the course?

  • Presentations (theory and concepts about the­ principles)

  • Visual analogies from real world (to better understand and remember the principles)

  • UML diagrams (mainly class diagrams with examples about the principles)

  • Plenty of stand-alone code examples (at least a few for each principle)

  • Almost a real-world project (server application that receives over TCP connection and processes tax reports in JSON or XML formats) with unit and high-level tests

  • Explanations how to install the project’s dependencies, compile it and run tests (uses C++17, CMake, Boost libraries (asio, program options, etc.), Google test)

  • Quizzes and final test (some have additional code examples)

  • Programming assignments (work on the project, etc.)


This course is for you if you

  • Are a beginner or intermediate C++ programmer (but not complete beginner)

  • Have a basic understanding of OOP (classes, polymorphism, inheritance, encapsulation, etc.)

  • Want to learn more and become a better software engineer

Ideally, before this course you should have already worked on a few small hobby projects or have some commercial software development experience.

You should be able to pick up the rest of the materials and technologies during the course. At the same time, some applied technologies and examples are more advanced but optional to the main subject of this course.

And even if you don’t primarily program in C++, you will still find that most of the code examples, as well as the principles, apply to many other programming languages.


What is expected from you?

Besides watching lectures and/or reading presentations, it’s expected that you

  • Compile, read and understand code examples and the project source code (ability to read and work with somebody else's code is very important and often underestimated)

  • Refactor some of the provided code examples while doing assignments

  • Work on the project source code in the final assignment, extend its functionality and add tests


The images in visual examples are from website pixabay and the audio in videos is from website bensound.

Who this course is for:

  • Beginner or intermediate C++ programmers who want to become better professionals