Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Software Development Tools No-Code Development
Business
Entrepreneurship Communication Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certifications Network & Security Hardware Operating Systems & Servers Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Paid Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement & Gardening Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition & Diet Yoga Mental Health Martial Arts & Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Learning Teacher Training Test Prep Other Teaching & Academics
Web Development JavaScript React Angular CSS Node.Js Typescript HTML5 PHP
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Amazon AWS Cisco CCNA Microsoft AZ-900 CompTIA Security+
Microsoft Power BI SQL Tableau Data Modeling Business Analysis Business Intelligence MySQL Data Analysis Data Warehouse
Unity Unreal Engine Game Development Fundamentals C# 3D Game Development C++ Unreal Engine Blueprints 2D Game Development Mobile Game Development
Google Flutter iOS Development Android Development Swift React Native Dart (programming language) Kotlin Mobile App Development SwiftUI
Graphic Design Photoshop Adobe Illustrator Drawing Canva Digital Painting InDesign Design Theory Procreate Digital Illustration App
Life Coach Training Neuro-Linguistic Programming Personal Development Personal Transformation Life Purpose Mindfulness Sound Therapy Emotional Intelligence Coaching
Business Fundamentals Entrepreneurship Fundamentals Freelancing Business Strategy Online Business Startup Business Plan Blogging Amazon Kindle Direct Publishing (KDP)
Digital Marketing Social Media Marketing Marketing Strategy Internet Marketing Copywriting Google Analytics Email Marketing Startup Advertising Strategy

IT & SoftwareOther IT & SoftwareObject Oriented Design

SOLID C++

Learn and practice C++ with SOLID object-oriented design principles
Rating: 4.4 out of 54.4 (113 ratings)
19,610 students
Created by Andrii Sh.
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)

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

Instructor

Andrii Sh.
Software Development Engineer
Andrii Sh.
  • 4.3 Instructor Rating
  • 181 Reviews
  • 25,711 Students
  • 3 Courses

I am a software development engineer.

I am currently working on a cloud project in Amazon using Java, TypeScript and AWS.

Before that I have worked on a 5G mobile technology project in Nokia programming in C++, TTCN3 and Python.

Also I worked on web projects using Python, Django, JavaScript, Vue.js, PostgreSQL, Elasticsearch, etc.

Top companies choose Udemy Business to build in-demand career skills.
NasdaqVolkswagenBoxNetAppEventbrite
  • Udemy Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Investors
  • Terms
  • Privacy policy
  • Sitemap
  • Accessibility statement
Udemy
© 2022 Udemy, Inc.