Um componente é um tipo de contêiner. Como tal, não têm características próprias, mas contém as classes que definem suas características. Um componente encapsulado proporciona uma vista da funcionalidade definida pelas classes contidas. O propósito de tal representação é apoiar uma abordagem baseada em componentes para a construção de software.
|
Cada unidade de software deve ser capaz de funcionar isolada, ser reutilizável e substituível. |
A chave para a capacidade de substituir os componentes é seguir as regras de encapsulamento, ou seja, limitar a definição do componente para uma explicação da sua finalidade e respectiva interface. Esta técnica é comparável à encapsulação de métodos.
Um componente não necessariamente expõe todas as interfaces das classes contidas (muitas classes podem ser protegidas ou privadas). Algumas das interfaces são usadas apenas para a comunicação entre as classes contidas (interfaces protegidas). O modo pelo qual o componente expõe as interfaces pode variar. O componente pode agregar interfaces a nível de classe. Por exemplo, as classes contidas podem oferecer cinco métodos diferentes para se comprar um ingresso no cinema, mas o componente pode oferecer uma única interface chamada, por exemplo, de "ComprarIngresso".
É importante notar que o diagrama de componentes é apenas uma especificação. Não há uma instância deste diagrama. A este respeito, é muito parecido com um diagrama de classes. Para modelar as instâncias de componentes que representam a execução do aplicativo, use os diagramas de componentes e de implantação juntos.
Enquanto um método fornece os meios para receber a entrada e gerar a saída, os mecanismos que ele usa para fazer isso estão escondidos por trás da interface objeto, ou seja, a assinatura de operação. As interfaces fornecidas pelo componente expõem uma ou mais das interfaces das classes contidas. A diferença é que outros componentes não têm acesso direto às interfaces contidas; entretanto, os desenvolvedores têm a liberdade de alterar o design interno, incluindo a substituição de classes internas, sem perturbar os outros componentes que dependem do componente alterado.
X