Interface (computação)

Ver também: interface binária de aplicação e interface de programação de aplicações

uma interface de software pode referir-se a uma vasta gama de diferentes tipos de interface em “níveis” diferentes: um sistema operacional pode interface com peças de hardware. Aplicações ou programas rodando no sistema operacional podem precisar interagir através de fluxos de dados, filtros e pipelines; e em programas orientados a objetos, objetos dentro de uma aplicação podem precisar interagir através de métodos.

na practiceEdit

um princípio fundamental do projeto é proibir o acesso a todos os recursos por padrão, permitindo o acesso apenas através de pontos de entrada bem definidos, ou seja, interfaces. Interfaces de Software fornecem acesso a recursos de computador (como memória, CPU, armazenamento, etc.) do sistema de computador subjacente; acesso direto (ou seja, não através de interfaces bem projetadas) a tais recursos por software pode ter grandes ramificações-às vezes desastrosas—para a funcionalidade e estabilidade.as Interfaces entre componentes de software podem fornecer constantes, tipos de dados, tipos de procedimentos, especificações de exceção e assinaturas de métodos. Às vezes, variáveis públicas também são definidas como parte de uma interface.

A interface de um módulo de software A é deliberadamente definida separadamente da implementação desse módulo. Este último contém o código real dos procedimentos e métodos descritos na interface, bem como outras variáveis, procedimentos “privados”, etc. Outro módulo de software B, por exemplo o cliente a, que interage com A é forçado a fazê-lo apenas através da interface publicada. Uma vantagem prática deste arranjo é que substituir a implementação de A por outra implementação da mesma interface não deve causar B falha—como a internamente satisfaz os requisitos da interface não é relevante para B, que está apenas preocupado com as especificações da interface. (Ver também o princípio de substituição de Liskov.)

em languagesEdit orientado para objectos

artigos principais: Protocolo (programação orientada a objeto) e o Conceito genérico de programação)

Em algumas linguagens orientadas a objeto, especialmente aqueles sem herança múltipla, o termo interface é usada para definir um tipo abstrato que não contém dados, mas define comportamentos como método de assinaturas. Uma classe com código e dados para todos os métodos correspondentes a essa interface e declarando assim é dito para implementar essa interface. Além disso, mesmo em línguas de herança única, pode-se implementar várias interfaces, e, portanto, pode ser de diferentes tipos ao mesmo tempo.

Uma interface é, portanto, uma definição de tipo; onde um objeto pode ser trocado (por exemplo, em uma função de chamada de método ou o tipo do objeto a ser trocado pode ser definida em termos de uma de suas interfaces implementadas ou da base de dados de classes, ao invés de especificar a classe específica. Esta abordagem significa que qualquer classe que implemente essa interface pode ser usada. Por exemplo, uma implementação simulada pode ser utilizada para permitir que o desenvolvimento progrida antes da implementação final estar disponível. Em outro caso, uma implementação falsa ou falsa pode ser substituída durante o teste. Tais implementações stub são substituídas por código real mais tarde no processo de desenvolvimento.

Usually a method defined in an interface contains no code and thus cannot itself be called; it must be implemented by non-abstract code to be run when it is invocado. Uma interface chamada “Stack” pode definir dois métodos: push() e pop(). Ele pode ser implementado de diversas maneiras, por exemplo, FastStack e GenericStack—a primeira a ser rápido, trabalhando com uma estrutura de dados de tamanho fixo, e o segundo usando uma estrutura de dados que pode ser redimensionada, mas ao custo de um pouco de velocidade mais baixos.

embora as interfaces possam conter muitos métodos, elas podem conter apenas um ou mesmo nenhum. Por exemplo, a linguagem Java define a interface Readable que tem o único read() método; várias implementações são utilizados para diferentes fins, incluindo o BufferedReaderFileReaderInputStreamReaderPipedReader e StringReader. Interfaces marcadoras como Serializable não contêm nenhum método e servem para fornecer informações em tempo de execução para o processamento Genérico usando reflexão.

Programação para o interfaceEdit

O uso de interfaces permite um estilo de programação chamado de programação para a interface. A ideia por trás desta abordagem é basear a lógica de programação nas interfaces dos objetos usados, ao invés de nos detalhes de implementação interna. A programação para a interface reduz a dependência de detalhes de implementação e torna o código mais reutilizável.

empurrando esta ideia para o extremo, a inversão do controle deixa o contexto para injetar o código com as implementações específicas da interface que será usada para realizar o trabalho.

Related Posts

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *