Object Orientation in a nutshell may be described by making reference to its key characteristics which are: Polymorphism, inheritance and encapsulation.
Most apps are made up of component parts built to interact with each other. So you can set up your app so that your classes have the following characteristics: think of an online bike shop that sell many different types of bikes. There are characteristics shared by all bikes... So in setting up the app, we want to perhaps put all functionality shared by all bikes in a base class. Speciality items with specific functionality may inherit the shared characteristics and functions from the base class (inheritance), but also include its own range of variables and functions that are not shared with the base class... there is some technicality associated with this...(Polymorphism). All of the underlying logic is hidden from the shopper, who does not have to understand how anything works, but his bike gets delivered on clicking 'buy' and checking out (Encapsulation).
OO lends itself better to certain environments. After working as a developer for a while, I have learned that preference has a lot to do with it, but also the tasks you need to complete. We don't always get to build a bike shop every day. But some people also think that working in an object oriented manner creates excessive and or unnecessary overhead. It just depends on what you are doing. Teams work better in Object Oriented environments, especially if it is a big application, because some developers can work on the classes for mountain bikes and others on the road bike section... Which is, I think, why it became so popular... Other popular patterns include MVC and functional programming. There are people who believe that OO is not a good model for web developers, but that depends on how your application has been set up :)