Uma interface, em ciência da computação, é a fronteira que define a forma de comunicação entre duas entidades. Ela pode ser entendida como uma abstração que estabelece a forma de interação da entidade com o mundo exterior, através da separação dos métodos de comunicação externa dos detalhes internos da operação, permitindo que esta entidade seja modificada sem afetar as entidades externas que interagem com ela. Uma interface também pode promover um serviço de tradução para entidades que não falam a mesma linguagem, como no caso de humanos e computadores.
O conceito de interface é utilizado em diferentes áreas da ciência da computação e é importante no estudo da interação homem-máquina, no projeto de dispositivos de hardware, na especificação de linguagens de programação e também em projetos de desenvolvimento de software. A interface existente entre um computador e um humano é conhecida como interface do usuário e as interfaces utilizadas para conectar componentes de hardware são chamadas de interfaces físicas.
Interface física
Uma interface física, ou conector, é um dispositivo que efetua a ligação entre uma porta de saída de um determinado equipamento e a porta de entrada de outro (por exemplo, entre um computador e um periférico).
Interface em programação
Em programação, a utilização de interfaces permite a composição de componentes de um software sem que a sua implementação seja conhecida. Um exemplo clássico de utilização de interfaces é o do sistema operacional que, através de uma interfaces de programação de aplicativos, permite que os programas utilizem os recursos do sistema (memória, CPU e etc) sem que os seus detalhes de implementação sejam conhecidos do programador. Este esquema isola e protege o sistema operacional de eventuais erros cometidos pela aplicação..[1]
Os componentes de software utilizam interfaces padronizadas para criar uma camada de abstração que facilite a reutilização e a manutenção do software.[2] Neste cenário, a interface de um módulo de software deve ser mantida em separado da sua implementação e qualquer outro módulo , que interaja com (cliente de ), deve ser forçado a fazê-lo apenas através da interface. Este mecanismo permite que no caso de uma alteração em , o módulo continue funcionando; desde que a utilização do módulo pelo módulo satisfaça as especificações da interface. (Ver também o princípio da substituição de Liskov).
Uma interface disponibiliza tipos variados de acesso entre componentes, como por exemplo: constantes, tipos de dado, procedimentos, especificação de exceções e assinaturas de métodos. Em alguns casos é mais apropriado definir as variáveis como parte das interfaces. As interfaces também especificam a funcionalidade disponibilizada através de comentários ou através de declarações lógicas formais (assertions).[3]
Referências
- ↑ Blaauw, Gerritt A.; Brooks, Jr., Frederick P. (1997), «Chapter 8.6, Device Interfaces», Computer Architecture-Concepts and Evolution, ISBN 0-201-10557-8, Addison-Wesley, pp. 489–493 Ver também: Patterson, David A.; Hennessey, John L. (2005), «Chapter 8.5, Interfacing I/O Devices to the Processor, Memory and Operating System», Computer Organization and Design - The Hardware/Software Interface, Third Edition, ISBN 1-55860-604-1, Morgan Kaufmann, pp. 588–596
- ↑ Mikio Aoyama — New Age of Software Development: How Component-Based Software Engineering Changes the Way of Software Development ?
- ↑ «George T. Heineman — Integrating Interface Assertion Checkers into Component Models» (PDF). Consultado em 23 de março de 2007. Arquivado do original (PDF) em 5 de setembro de 2008