Why Object Oriented Matters

The Sharp Ninja
5 min readDec 3, 2018
Go to the profile of The Sharp Ninja

Right now functional programming is all the rage. Languages like Haskell and Javascript are hip. While Javascript can be mostly object-oriented through languages like TypeScript, doing objects in Javascript is becoming less common because of the rise of functional programming.

Proponents of functional programming tout things like pure functions making testing easier and immutability reducing side-effects and more. This is all fine and well, but it ignores the biggest reason to use Object Oriented. The world is made of objects, not linear functions (well, not exactly, but a linear function that can accept all the parameters of the world would be completely unmaintainable).

Using Object Oriented Programming (OOP) is essentially creating a system that defines what is to be done (Interfaces/Abstract Classes) and how it is done (Concrete Classes). OOP breaks down an system into contracts that define interaction, and implementations that perform the actions. Objects in both OOP and the Real World interact with each other through a definable set of conditions based on Use Cases and normal behaviors, and returning exceptional behaviors as Exceptions. Pure Functions cannot express ambiguity since ambiguity is a side-effect.

For over 100 years we have had telephones. Although technology has changed dramatically, the use cases of the telephone have remained constant.

100 Years of Telephone Use Cases

Callers dial a number, the receiver answers the call, they talk, and one of the parties hangs up.

Such a fundamentally simple system!

Though the technology has drastically evolved, a modern smart phone can call a wall mounted operator assisted phone today, and vice versa.

So why does this work? Because the world is composed of objects that implement interfaces (inheritance) with a specific functionality (encapsulation). Some devices evolve with minor changes, such as a pulse dial phone evolving into a touch tone phone (polymorphism).

Telephones are just end points in this system. Interconnecting telephones are Telephone Networks that accept call requests, figuring out how to route…

--

--

The Sharp Ninja

20+ years of professional software engineering has taught me a thing or three…