Software Components are typically business objects that have
predefined and reusable behaviors. Component-Based Development
is the idea of creating software applications from components.
Implementation detail is hidden in the interfaces, which isolate
and encapsulate a set of functionality.