Object-oriented programming is a programming paradigm using "objects": data structures consisting of data fields and methods together with their interactions.

- Stackoverflow.com Wiki
14 articles, 6 books. Go to books ↓

The goal behind ISP is that no client consuming an interface should be forced to depend on methods it does not use.

In this article we'll look at how the Single Responsibility Principle is subjective, but also how the principle is still helpful in the code.

Subtypes and supertypes are a common part of modern programming. Covariance and contravariance tell us where subtypes are accepted and where supertypes are accepted in place of the original type.

The most important concept in software engineering is the concept of an interface. This article is not about interfaces in Java, it is about interfaces in software design, and to a lesser extent, interfaces anywhere in the universe. There are many other important concepts used in software development, but I would argue that many of them actually end up relating back to why interfaces are so important.

The idea of sharing code this way dates back to 1967, specifically to the SIMULA language which is credited to have been responsible for the birth of object oriented programming.

Are you familiar with the term "spaghetti code"? This is a metaphor you might hear from non-JavaScript developers in criticism of the language. It is code with no structure. It will consist of line after line of statements. Some may be wrapped in functions, some not at all. And if you are lucky, all 9,000 lines of code will be in one file.

While OO and FP are orthogonal, they are not mutually exclusive. That a good functional program can (and should) be object oriented. And that a good object oriented program can (and should) be functional.

SOLID is an acronym for 5 important design principles when doing OOP (Object Oriented Programming). The intention of these principles is to make software designs more understandable, easier to maintain and easier to extend. As a software engineer, these 5 principles are essential to know!