|
[image source: Amazon.com]
|
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 https://www.kirkenterprises.com. 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:
https://www.amazon.com/gp/customer-reviews/R379YFQB6KNTNX/
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
Assessments