OOP is a design and development paradigm for software.
OOP stands for Object-Oriented Programming. The idea is that you model your application into classes (which are templates describing data and behavior) and instances which are instantiations of those classes. In general, classes relate to the noun or noun phrases within your system description, so in many systems, it is likely that one or more classes in the software relate directly to types of objects in the real world, and the instances of those classes relate directly to individual real-world objects.
There is no one OOP program - there are many programs written in whole or in part using OOP design principles.
First, the programmer has to believe that the best programming paradigm fitting the problem he/she needs to solve is OO. This involves a lot of things, including code readability, tools availability, debugging and maintenance demands, memory demands, and execution speed considerations.
Second, the programmer has to be well trained in the paradigm, which also involves the ability to communicate with users/customers using OO terminology and concepts.