In object-oriented programming, objects are modeled to real-world objects. A real-world object has actions related to it and characteristics of its own.
Take a ball, for example. A ball can be acted on—rolled, tossed, thrown, bounced, caught. But it also has its own physical characteristics—size, shape, composition, weight, color, speed, position. An accurate data model of a real ball would define not only the physical characteristics but all related actions and characteristics in one package:
In object-oriented programming, objects are the basic building blocks—the fundamental units of data.
There are many kinds of objects; for example, character strings, collections, and input and output streams. An object—such as a character string—always consists of two parts: the possible actions or operations related to it, and its characteristics or variables. A variable has a name, and an associated data value that can change over time. The variables represent the internal state of the object, and can be directly accessed only by the code that implements the object's actions.
To access an object's data, you must always specify an action. For example, suppose the object is the number 5. Its actions might include addition, subtraction, multiplication, and division. Each of these actions is an interface to the object's data. The data is said to be encapsulated because the only way to access it is through one of these surrounding actions. The encapsulated internal characteristics of an object are its variables. The variables are associated with an object and exist for the lifetime of that object: