Back To Schedule

Object Oriented Programming in Contemporary C++

09:00 - 10:30 Friday 8th May 2026 MT Booz Allen Seminar Room
Beginner
Value Semantics

Abstract: Today, it is yet again fashionable to criticize Object-Oriented Programming. However, many of the criticisms are aimed at features and practices that are not particularly OO, or are due to impedence mismatches with value-oriented, functional styles.

Takeaway: How and why to apply Object Oriented techniques in C++ today in contemporary styles.

Object Orientation dominated software development from the 1980s to the early 2000s because it was demonstrably more successful in practice than other existing paradigms. There was intense bottom-up pressure to adopt OO practices.

C++ grew up in this environment. Always a multi-paradigm language, it nonetheless incorporates many features in the core of the language to support OO styles, which was an important part of its success.

> "I made up the term 'object-oriented', and I can tell you I did not have C++ in mind." – Alan Kay, OPSLA 1997 Keynote

The core tenets of OO are often said to be Encapsulation, Abstraction, Inheritance, and Polymorphism. However, only Inheritance is particular to OO. The others are much more about the painfully low-level tools and programming languages available, where they are very much table stakes.

The core of an Object and OO are the ideas of Identity, Behavior, and State. Identity and state, in particular, cause impedance mismatches with other paradigms, especially value-oriented ones. This is similar to problems with working with a system designed around the Relational Database model in another paradigm.

Using tools effectively requires one to understand what the tool is, what its intended use is, and how it works (or does not work) with other tools. In this talk, we will explore what the core of the Object Oriented model is, what parts are "just" good engineering practices, and how to use OO in C++ with less pain and more success.

Steve Downey

Senior Software EngineerBloomberg

Steve Downey has been a programmer for more than 30 years. Steve graduated from SUNY Purchase with a BS in Mathematics. A Computer Science degree would have involved two classes before 11:00 am, so was impossible.
He has worked at Bloomberg since 2003, and is currently working as an Engineer on the C++ Infrastructure team.