SOLID C
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)
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 responsibilityOpen-closedLiskov substitutionInterface segregationDependency inversionThis 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 shouldDevelop an intuitive understanding of all SOLID principlesUnderstand when SOLID principles are needed and when notLearn how to follow SOLID principles in general, regardless of a programming language, using appropriate abstractions and programming patternsLearn how to follow SOLID principles using different C++ language features and idiomsKnow how to structure C++ projects, test and refactorHowever, 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 testsExplanations 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 youAre 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 youCompile, 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 assignmentsWork on the project source code in the final assignment, extend its functionality and add testsThe images in visual examples are from website pixabay and the audio in videos is from website bensound.
Overview
Section 1: Introduction
Lecture 1 What is SOLID
Lecture 2 Why focus on C++
Lecture 3 Repository, presentations, source code, tests, CI
Lecture 4 Project description with sequence diagram
Lecture 5 Project source code overview before SOLID
Lecture 6 Project source code overview after SOLID
Lecture 7 Additional remarks about project
Section 2: Installing, building and testing
Lecture 8 Windows: download and open project
Lecture 9 Windows: install MinGW distro (gcc, g++, boost libraries, etc.)
Lecture 10 Windows: install CMake
Lecture 11 Windows: install gtest and gmock
Lecture 12 Windows: compile project and run unit tests
Lecture 13 Windows: run high-level tests (optional, using Python3)
Lecture 14 Linux: dowload and open project
Lecture 15 Linux: install dependencies
Lecture 16 Linux: compile project and run unit tests
Lecture 17 Linux: run high-level tests (optional, using Python3)
Section 3: UML basics
Lecture 18 UML introduction
Lecture 19 Class diagrams
Lecture 20 Creating class diagrams with Umbrello
Section 4: Single Responsibility Principle (SRP)
Lecture 21 Introduction
Lecture 22 How to follow
Lecture 23 Visual analogy
Lecture 24 UML class diagrams
Lecture 25 Text editor example violating SRP
Lecture 26 Plant care example violating SRP
Lecture 27 Plant care example refactored
Lecture 28 Project source code before applying SRP
Lecture 29 Project source code after applying SRP and refactoring
Section 5: Open-Closed Principle (OCP)
Lecture 30 Introduction
Lecture 31 How to follow
Lecture 32 Additional remarks
Lecture 33 Visual analogy
Lecture 34 UML class diagrams
Lecture 35 Dynamic polymorphism and inheritance
Lecture 36 Static polymorphism and templates
Lecture 37 Template specialization
Lecture 38 Constraints and concepts (C++20)
Lecture 39 Decorator pattern (dynamic)
Lecture 40 Decorator pattern (static)
Lecture 41 Template method pattern
Lecture 42 Composition over inheritance
Lecture 43 Run-time concept idiom (advanced)
Lecture 44 Project source code before applying OCP
Lecture 45 Project source code after applying OCP and refactoring
Section 6: Liskov Substitution Principle (LSP)
Lecture 46 LSP introduction
Lecture 47 LSP underlying terminology and concepts
Lecture 48 LSP implications
Lecture 49 How to follow: IS-A relashionship and behavioural subtyping
Lecture 50 How to follow: design by contract (invariants, preconditions, postconditions)
Lecture 51 How to follow: language features to state and verify contracts
Lecture 52 Visual analogy
Lecture 53 UML class diagram
Lecture 54 Classic example
Lecture 55 Animal example
Lecture 56 Covariance example
Lecture 57 Queryset example
Lecture 58 Collection example
Lecture 59 Project source code changes (OCP + LSP)
Section 7: Interface segregation principle (ISP)
Lecture 60 Introduction
Lecture 61 Implications
Lecture 62 How to follow
Lecture 63 Visual analogy
Lecture 64 UML diagrams
Lecture 65 UML diagrams continued
Lecture 66 Classic door example (violating ISP + LSP)
Lecture 67 Classic door example continued (delegation, adapter, multiple inhertance)
Lecture 68 Printer class example (multiple inheritance)
Lecture 69 Multiple inheritance caveats
Lecture 70 Plant care example (ISP + LSP)
Lecture 71 Plant care example continued (follow ISP + LSP, multiple inheritance, threads)
Lecture 72 Project source code changes (new functionality + ISP)
Section 8: Dependency Inversion Principle (DIP)
Lecture 73 Introduction
Lecture 74 Introduction continued
Lecture 75 Implications
Lecture 76 How to follow
Lecture 77 Visual analogy
Lecture 78 UML class diagrams
Lecture 79 Classic lamp example
Lecture 80 Observer pattern example
Lecture 81 Observer pattern example continued
Lecture 82 Plant care example
Lecture 83 Project source code
Section 9: Final test and assignment
Beginner or intermediate C++ programmers who want to become better professionals
Course Information:
Udemy | English | 9h 18m | 4.25 GB
Created by: Andrii Sh.
You Can See More Courses in the IT & Software >> Greetings from CourseDown.com