A Declarative Approach for Designing and Developing Adaptive Components declarative approach, Aspect-Oriented Programming An adaptive component is a component that is able to adapt its behavior to different execution contexts. Building an adaptive application is difficult because of the implied component dependencies and the lack of language support. As a result, code that implements adaptation is often tangled, which hinders maintenance and evolution. To overcome this problem, we propose a declarative approach to program adaptation. This approach makes explicit specific issues of adaptation. The programmer can focus on the basic features of the application and separately provide clear and concise adaptation information. Concretely, we define adaptation classes, that enrich Java classes with adaptive behaviors. A dedicated compiler automatically generates Java code that fully implements the adaptive features. Moreover, these declarations can be checked for consistency to provide additional safety guarantees. To present and assess our approach, we use as an example an adaptive sound encoder in an audio-conference application. We show the problems of a traditional implementation using design patterns and how these problems are elegantly solved using adaptation classes.