People are sometimes confused about the relationship between MVC and OOP. There are many questions and articles dedicated to this topic. In this article, we will look at the most common questions and answer them.

What is the difference between MVC and OOP?

We have written more than one article on MVC: its origins, benefits, and variations. MVC or Model-View-Controller is an architectural design pattern mostly used in developing user interfaces. With MVC, you divide program logic into three parts: Model, View, and Controller. Model manages the data. View is responsible for the representation of information. Controller accepts input and then sends commands to Model and View. MVC is like guidelines for a project.

Object-oriented programming is a programming paradigm or a way of writing code. OOP is the most standard programming paradigm. The main concepts in OOP are classes and objects. A class is like a blueprint to create more specific objects that share attributes. For example, a class could be dog, and an object from that class could be poodle.

The four pillars of OOP are encapsulation, abstraction, inheritance, and polymorphism. Encapsulation means that each object has a private state inside a class. You group related variables and functions that operate on them into objects, which allows for functions that have very few parameters. Abstraction hides some of the properties from the outside: it lets you have a simpler interface and reduces the impact of change. With inheritance, you can eliminate redundant code. Polymorphism allows refactoring of ugly switch/case statements. Altogether, the advantages of OOP include reusability, less data redundancy, easy code maintenance, good security, flexibility, and more.

You can call both MVC and OOP patterns on a high level. But they are implemented in different ways. OOP is a programming practice, which is about governing the data. On the other hand, MVC is a design principle, concerned with displaying the data to the user.

Now, let’s move on to some questions about OOP and MVC.

Is MVC object-oriented?

Many people consider MVC an object-oriented approach, even though some point out that MVC is based on the procedural decomposition of a problem. MVC is viewed as a recipe for deciding how to use objects to organize the program effectively. Because Model and View are both separate, they are more reusable and testable. And OOP is also a lot about reusability and keeping things separate.

However, some fiercely argue that MVC is not OOP at all. Programmer Yegor Bugayenko claims that while object-oriented programming is all about data hiding, MVC is about exposing the data and hiding behavior. You can read more here. All in all, there can be quite a debate about MVC and OOP.

Is OOP required for MVC?

MVC is not in conflict with OOP. But you do not have to use it necessarily only in object-oriented programming. People can use OOP but not MVC. They can also use MVC but not OOP. Or they can use both, which is probably the most common choice.

Do you need to know OOP before you master MVC?

It is not necessary but generally recommended. Basic OOP knowledge would be enough, although more definitely wouldn’t hurt.