Se trata de una pregunta obligada que debemos hacernos antes de entrar a hablar de los componentes. Los componentes podrían ser definidos como "una pieza de software que presenta una serie de características llamadas propiedades y una serie de métodos que manejan esas propiedades". En algún momento nos podría recordar el concepto de "caja negras" aunque los componentes presentan la particularidad de poderse manejar en tiempo de diseño. Este detalle, la modificabilidad en tiempo de diseño y en modo visual, es el detalle clave que nos permite identificarlo frente a las clases y frente a las llamadas "cajas negras". En realidad los componentes son una clase que presentan la particularidad de derivar directamente de la clase TComponente. Tener en cuenta la clase ancesttro de la que deriva es importante para comprender que ya tiene implementados una serie de métodos y de propiedades que son los que lo definen como un componente.
Efectivamente en las llamadas "cajas negras" nos encontrabamos con que no podíamos manejar las cajas nada más que en tiempo de ejecución al igual que las clases en las programación POO tradicional. Los componentes aprovechan las ventajas de la programación OO y aprovechan las ventajas de la programación visual o herramientas RAD. Sin embargo no todo son ventajas a la hora de utilizar un componente. Los componentes estan pensados para que sean manejados en su mayor parte por los desarrrolladores por lo que es necesario prestar una atención especial a las necesidades de estos y elaborar un interface de programación que se adapte más a sus necesidades.