Since the 1980's a popular approach to programming has emerged known as Object Oriented Programming. This is a very powerful, yet simple, idea. In traditional approaches to programming there was a clear distinction made between data (that to be operated on) and program (the process that would operate on the data). The Object Oriented approach dispenses with this division.
An object is composed of both the data that describes it and the code that will operate upon it. As such, every object has within it everything it needs to go about its business. If an object is to be drawn it will draw itself. It will contain its own code for how to do that; it will not need to refer to or be acted upon by an external program.
That is the basic concept underlying Object Oriented thinking. However, there are a number of other very important concepts that accompany this approach.
Encapsulation allows each object to keep its internal state private. For example, you might have two objects birthed from the same parent. To begin with they are almost identical...however, each object might have the ability to "learn" from the world around it; that is, to recognise and collect information it comes into contact with. So, although the two objects are very similar to begin with they quickly "evolve" away from their initial state. Because their internal structure is encapsulated (rendered private) any changes to it, even though birthed from the same parent as another object, and as such sharing the same code, will not effect any other objects. The notion of individuality is introduced.