In an OOP world, each object knows what information describes itself and what actions it can perform with that information. OOP allows developers to create reusable objects that interact with each other to form complex entities. That is, you can use the object created from a Class without knowing how the internal code works. All the developer needs to know is which methods to call to perform certain functions. How those functions perform their tasks is hidden.
Programmers generally create a Class for each separate entity used within their application.
Classes allow developers to write modifiable, readable, reusable code. Each object knows what data describes it and how to manipluate that data. Properties are exposed through the Public Interface of an object. Tasks are performed by various functions and procedures defined in the Class Definition. Once again only those Methods exposed by the Public Interface are available to outside users.