Interface de componentes
Um conceito fundamental de um componente é que ele possui interfaces claramente definidas. De forma a permitir que um componente seja reutilizado e interaja com outros componentes é necessário que os componentes provedores e clientes estejam de acordo a respeito de um conjunto de interfaces.
Basicamente, a habilidade para integrar e armazenar componentes e, a partir desta integração, disponibilizar estes componentes depende fundamentalmente da noção de interface do componente. A interface de um componente define os seus pontos de acesso. Um componente não está sozinho em um ambiente e o seu propósito é proporcionar algum serviço para tal ambiente. O acesso aos serviços do componente é visível e disponibilizado a usuários da aplicação (clientes, programadores), a outros componentes, às plataformas de suporte e a outros elementos de software, através destes pontos. Geralmente, um componente possui múltiplas interfaces correspondendo a diferentes pontos de acesso. Tecnicamente, uma interface é um conjunto de operações “nomeadas” que podem ser invocadas pelos clientes. A semântica das operações é especificada e esta especificação tem um papel duplo: ela se presta a servidores que implementam a interface e a clientes que usam a interface.
Heineman e Councill definem um padrão de interface como:
Um padrão de interface permite que elementos de software interajam com outros elementos de software. Padrões de interface declaram formalmente os elementos que constituem a interface (métodos, exceções, etc.).
A interface esconde a implementação do componente e, sob o ponto de vista do componente, pode consistir de dois tipos: interface proporcionada e interface requerida. Um determinado componente suporta uma interface proporcionada se este componente contém uma implementação de todas as operações definidas por esta interface. Um componente necessita uma interface requerida se este componente demanda uma interação definida nesta interface. A