[eluser]esra[/eluser]
For some people, it becomes easy to understand OOP by relating the approach to something they already know. For example, there are a lot of graphic designers in the CI community who need a PHP infrastructure for designing sites. They use CI because it is well documented and it's fairly easy to overcome the learning curve, in the least case for simple sites or to use as a testbed for developing templates.
Graphic designers usually think in terms of overlapping objects. Font glyphs and graphic shapes (primitives) such as rectangles, spheres, and elipses could be thought of as objects. These objects can be reused and superimposed over other objects to create new objects. In some cases, graphic designers might create intermediate files, sometimes called clipart, which they can reuse in other graphic designs. The general idea is to reuse as much of their earlier work as possible in the creation of new designs. This fundamental approach also applies to using OOP in a programming language--you create objects which can be reused over and over again when creating new objects. In programming, we use a lot of techy terms like inheritance and polymorphism to describe the general approaches we use when applying OOP. Graphic designers tend to perform similar operations naturally in a casual way as a matter of artisan technique.
Take the case of a company logo. A graphic designer might take a copy of an existing font file and modify the design of selected glyphs in order to create a custom logo for their customer. The modified font gylphs in the new file could be said to be inheirted from a parent file and called a separate font style. Something similar might occur by taking stock clippart, breaking apart the graphic object groups and primitves, and making minor to major changes in order to create a custom graphic. It could be said that the new piece of clipart was inheirted from a parent piece of clipart.
The above is just an example. Many of us probably use object oriented approaches in other fields of endeavor without really recognizing we are. Part of learning OOP is relating what we have learned in the past to programming with objects.