I'm researching object oriented programming and I've come across the term "four pillars of OOP" in a few places now.

I originally saw them listed as:

  • Abstraction
  • Encapsulation
  • Inheritance
  • Polymorphism

When I searched for the origin of this I found a Quora answer which says:

The four Pillars of OOP are in Grady Booch’s original book on the topic,. Object Oriented Analysis and Design. They are:

He then lists the four principles I mentioned above. Yet when I downloaded the PDF and searched for the word "four" I came across the section which seems to outline four key principles of OOP, and they are listed as:

  • Abstraction
  • Encapsulation
  • Modularity
  • Hierarchy

enter image description here

When I searched further I found others listing the four pillars as they appear in the book above. For example this diagram:

enter image description here

Can anyone explain the discrepancy on what the four pillars are? I'm interested in the historical perspective: what is the origin of the four pillars? Can anyone confirm or deny Grady Booch as the origin of this phrase?

  • 1
    $\begingroup$ "Inheritance" has gone out of fashion a bit in the last years, which explains why it's not a "pillar" anymore. $\endgroup$
    – gnasher729
    May 2 '19 at 19:16
  • 1
    $\begingroup$ Perhaps the place where you originally saw it (that you mention first in your question) had it wrong or didn't copy down from Booch accurately or had their own opinion about what the four pillars ought to be. $\endgroup$
    – D.W.
    May 2 '19 at 20:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.