Friday, September 30, 2022

2022-09-30 Friday: Book Review: Deciphering Object-Oriented Programming with C++


[image source:]

Deciphering Object-Oriented Programming with C++: A practical, in-depth guide to implementing object-oriented design principles to create robust code

Author: Dorothy R. Kirk

Dorothy R. Kirk has been working with OO technologies since nearly their inception. She began by working in R&D for General Electric in 1989. After contributing to multiple C++ projects, she became a charter member of GE’s Advanced Concepts Center to utilize OO technologies in their commercial training and consulting endeavor. She later started her own OO Training and Consulting business, which today is primarily focused on OOP in C++ and Java. She additionally programs in Python.

Ms. Kirk provides training and consulting in OO technologies to clients spanning industries such as finance, transportation, software, embedded systems, manufacturing, and medical imaging. Her courses can be seen at Ms. Kirk’s interests include OOP, distributed and multi-threaded programming, and programming language internals.

She has a B.S. in Computer and Information Sciences from the University of Delaware and a M.S. in Computer Science from Temple University.

Pages: 594

Publication Date: September 23, 2022

Disclosure: Dorothy is a friend that I have known for 28 years. We first met - very briefly - on a shuttle bus from an airport - to our respective client offices on Wall Street, back in 1994. She was on her way to lead a C++ programming training session - and we exchanged business cards. In 1995, I reached out to her and engaged her to help train/coach/mentor several engineering teams on learning C++ programming for a $100M+ project. She is a highly regarded world-class expert in her field of C++ programming - and I am fortunate to have personally & professionally benefited from her valuable training.

My review posted to Amazon:

Review Summary

An excellent addition to the C++ programming space - written by a master teacher - with a keen eye to communicating and elevating the reader's technical skill. This book is no mere superficial pass over the topic of C++ programming - but is an in-depth approach that will provide you with the necessary foundations to master C++ - and to stand-out among your peers.

This book should be on your shelf - next to Bjarne Stroustrup's books on C++. 

There are 21 Code in Action companion videos – as well as a robust collection of code samples for the various chapters in a companion github repository.

The writing is clear, concise, and crisp (my highest praise for any writing).

One of the greatest benefits of reading this book – is that you will learn how to write C++  code that is correct, performant, and reliable.

*Just* a few examples of what I think will be particularly useful for new C++ programmers:

Chapters 3 and 4 (“Indirect Referencing – Pointers”, “Indirect Referencing – References”) are two excellent examples of the clear explanations that will help many programmers improve their understanding of C++.

Chapter 6 (“Implementing Hierarchies with Single Inheritance”) is a good example of the depth of understanding that you will gain from reading this book – that is seldom covered by other authors.

Chapter 7 (“Utilizing Dynamic Binding through Polymorphism”) is one of those plateaus in understanding that differentiates programmers that hack C code in C++ files vs. true masters of C++’s powerful capabilities.

Chapter 9 (“Exploring Multiple Inheritance”) will teach you not only the WHAT and HOW – but the WHY.

Chapter 10 (“Implementing Association, Aggregation, Composition”) clearly explains these important concepts.

Chapter 15 (“Understanding STL Basics”) may well be worth the price of the book.

Chapter 19 (“Using the Singleton Pattern”) explores some keen insights into how to implement the Singleton Pattern – so that your solution is more robust – and not an anti-pattern.

Companion materials:

Book Structure

Part 1: C++ Building Block Essentials

  • Chapter 1: Understanding Basic C++ Assumptions
  • Chapter 2: Adding Language Necessities
  • Chapter 3: Indirect Addressing – Pointers
  • Chapter 4: Indirect Addressing – References

 Part 2: Implementing Object-Oriented Concepts in C++

  • Chapter 5: Exploring Classes in Detail
  • Chapter 6: Implementing Hierarchies with Single Inheritance
  • Chapter 7: Utilizing Dynamic Binding through Polymorphism
  • Chapter 8: Mastering Abstract Classes
  • Chapter 9: Exploring Multiple Inheritance
  • Chapter 10: Implementing Association, Aggregation, and Composition

Part 3: Expanding Your C++ Programming Repertoire

  • Chapter 11: Handling Exceptions
  • Chapter 12: Friends and Operator Overloading
  • Chapter 13: Working with Templates
  • Chapter 14: Understanding STL Basics
  • Chapter 15: Testing Classes and Components
Part 4: Design Patterns and Idioms in C++
  • Chapter 16: Using the Observer Pattern
  • Chapter 17: Applying the Factory Pattern
  • Chapter 18: Applying the Adapter Pattern
  • Chapter 19: Using the Singleton Pattern
  • Chapter 20: Removing Implementation Details Using the pImpl Pattern

Part 5: Considerations for Safer Programming in C++

  • Chapter 21: Making C++ Safer



© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.