To explain a bit better the original meaning of compoments in the software industry we also should look back to what Microsoft did with this approach:

"Component Object Model (COM) is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages. The term COM is often used in the Microsoft software development industry as an umbrella term that encompasses the OLE, OLE Automation, ActiveX, COM+ and DCOM technologies."

Just like I already wrote above, it is an external addition to your software and can be written in any language. So I could use an ActiveX in my Delphi program written in C++. I just need a little wrapper around it to define the interface.

You will find similar approaches when you look at component based programming like here:
http://en.wikipedia.org/wiki/Component-based_software_engineering
Web services and service oriented architecture (SOA) are built that way.

In game engines like Vision 3d or Unity it has a lot of advantages as well. So you can add components via their visual editors to any game object. That way you can add functionality like physics, triggers or just a blob shadow via simple drag and drop. So it is again an external addition for an object. The additional functionality is not built in these objects or classes. So these classes are smaller. Not every game object class has to come with complete physics built in.
But the syntax to adress the attached components needs a few more words as when you just adress a built in class. This is what beginners especially in this forum complain about most of the time.


Models, Textures and Games from Dexsoft