No, I think your components should be as generic and reusable as possible. And the examples you gave certainly don't need specific components. Here's an example of the type of components you could be thinking about:
- TransformComponent - Has as
Position in the world.
- SpriteComponent - Has a
Sprite and renders it at TransformComponent.Position
- MovableComponent - Has a
Velocity and updates TransformComponent.Position
- BoxComponent - Has a
Rectangle and detects collisions with other BoxComponents
Then, all of these have parameters that will vary from entity to entity.
For example, and still thinking about the ball:
TransformComponent could store the ball's initial position
SpriteComponent could keep a reference to the ball sprite
MovableComponent could store the ball's initial velocity.
BoxComponent could store the ball size and have a special handler for its collision event
Then your paddles might also have some of these components, but they will probably have different initial parameters for each of them, and this is what will make them unique and different from the ball entity. A good component for them might be an
InputComponent that handles user input and updates the
TransformComponent when the player presses the up or down keys.
PS: If you have never tried Unity3D, I think it's a good place to start wrapping your head around these concepts!