Pergunta

Por que usamos a interface?

É apenas para padronização?

Foi útil?

Solução

Fins de interfaces

  • Crie um software pouco acoplado
  • Apoio, suporte projeto por contrato (um implementador deve fornecer toda a interface)
  • Permita software flasgável
  • Permita que diferentes objetos interajam facilmente
  • ocultar detalhes de implementação das classes uns dos outros
  • facilitar a reutilização de software

Analogia 1: Assim como o ônibus espacial dos EUA, a espaçonave russa de soja e a China Shenzhou 5 podem atracar na estação espacial internacional, porque implementam a mesma interface de encaixe. (Este é apenas um exemplo - não sei se é verdade na vida real, mas vamos suspender nossa descrença por um exemplo)

Analogia 2: Como você pode conectar vários monitores de computador ao seu computador doméstico. Você pode conectar uma TV em tamanho de parede, um CRT antigo (do tipo grosso), uma tela plana de 20 "ou uma máquina em braille para o cegro" ver "por toque. Há compatibilidade entre esses vários/diferentes dispositivos e seu computador porque todos eles concordam com os padrões de interface.

Detalhes das interfaces C# - Com as interfaces C#/OOP, você está fazendo o mesmo tipo de coisa, mas no mundo invisível/virtual.

Você está correto sobre estandardização, mas também flexibilidade, escalabilidade, extensibilidade, manutenção, reutilização, testabilidade e potência.

(Quanto mais você usa interfaces de software, mais essas "palavras do burburinho" serão entendidas. E sempre considere interfaces no mundo real porque elas nos fizeram igualmente bem.)

Outras dicas

Uma interface é usada para descrever o que uma coisa implementada pode fazer. Portanto, você tem a possibilidade de tratar vários objetos que implementam a mesma interface que um tipo dessa interface.

Por exemplo:

public interface IMyInterface{
    public void DoFirst();
    public int DoSecond();
}


public class A : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blubb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blubb2");
     return 2;  
   }
}

public class B : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blibb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blibb2");  
     return 4;
   }
}

As classes implementam a interface de várias maneiras. Mas você pode usá -los como imyInterface. Por exemplo:

public static void DoMethodsInInterface(IMyInterface inter){
    inter.DoFirst();
    inter.DoSecond();
}


public static void main(){

   DoMethodsInInterface(new A());
   DoMethodsInInterface(new B());
   //Or use it in a List
   List<IMyInterface> interlist = new List<IMyInterface>();
   interlist.Add(new A());
   interlist.Add(new B());
   foreach(IMyInterface inter in interlist){
      inter.DoFirst();
   }

}

Espero que isso deixa um pouco claro por que as interfaces são úteis.

É para interface :), para que você possa interagir entre coisas, é útil quando você tem

  • Múltiplas implementações das mesmas coisas
  • Quando você aplica uma interface a várias classes diferentes, porque você precisa de algum tipo de convenção que essas classes sejam capazes de fazer algumas coisas ou ter alguma funcionalidade

Aqui está a visão de alto nível ...

Interfaces desempenham um grande papel no conceito de Esconder a informação.

Eles basicamente ajudam você a esconder o Detalhes da implementação da sua classe para que uma classe de chamada não dependesse dessa implementação. Portanto, usando interfaces, você pode modificar a implementação sem alterar a classe de chamada. Tudo isso por sua vez limita a complexidade do seu código e faça -o mais fácil de manter a longo prazo.

Quando comecei a entender as interfaces, eles me explicaram como um "contrato que fornece uma descrição sua classe". Não tenho certeza se isso irá ajudá -lo, mas se você pensar em uma interface para um carro, poderia dizer que unidades, rompe, e curva. Então, desde que me leve do ponto A ao ponto B, não preciso saber como essas funções são implementadas.

A principal razão pela qual as interfaces são usadas em idiomas como C#/Java é porque esses idiomas não suportam herança múltipla (classe) (ver Qual é o problema exato com a herança múltipla?).

Porém, é permitido que a implementação múltipla (interface) permita que as classes sejam usadas de maneiras diferentes.

As interfaces são um pouco estranhas. Eles apoiam o design por contrato apenas por acreditar, esse mesmo nome e interface implementada significa o mesmo comportamento. Isso funciona apenas graças à documentação da API, ela deve ser verificada humana. Isso torna as interfaces muito fracas. Uma maneira de contornar isso pode ser especificações formais. Por outro lado, as interfaces são muito fortes, muito rigorosas. Você não pode evoluir interfaces que geralmente atrapalham a reutilização. Isso é resolvido por protocolos - mecanismo em linguagens dinâmicas, que enviam mensagens (métodos de chamada) e quando essa mensagem não é suportada pelo receptor, o retorno de chamada padrão é chamado. Ter protocolos concretos com restrições seria melhor.

Acho Remotor...

Há um cliente e um servidor envolvido aqui. Digamos que eles sejam fisicamente separados pela Internet. O cliente está chamando um método cuja execução real acontece no servidor. Da perspectiva do cliente, o cliente não sabe nada sobre o objeto no servidor que executa a execução. No entanto, sabe qual método chamar. Porque durante a construção do programa do cliente, somos expostos apenas a uma interface (ou contrato). Não estamos expostos a todo o objeto que está realmente vivendo no servidor. Tente fazer alguns aplicativos de demonstração no .NET Remoting e você imaginará o resto. Feliz programação.

Por que usamos interfaces?

Algumas línguas implementam chamadas de método polimórfico usando vtables e descartam a maioria das informações do tipo que dificulta não Para definir interfaces.

Então, em algum momento, simplesmente usamos interfaces porque o design do idioma exige.

Ao começar com uma interface, você pode implementar um proxy, permitindo assim o carregamento preguiçoso ou executar algumas verificações ao chamar os métodos de uma implementação concreta.

A interface separa o tipo de dados da lógica de implementação.

A interface fornece o protótipo modal que contém apenas a declaração da funcionalidade de um comportamento específico.

e se você quiser implementar esse comportamento na classe, você deve implementar essa interface na classe, a classe tem essa funcionalidade de comportamento ou pode ter múltiplos comportamentos.

porque a classe pode implementar várias interface.

Se mais alguém é como eu e aprende pelo exemplo e fazendo, em vez de apenas explicação, aqui está algum código ....

Encontrei a implementação de uma rede neural em C#, incluindo download do projeto, que utiliza interfaces de maneira elegante e útil:

http://www.c-sharpcorner.com/uploadfile/rmcochran/ai_oop_neuralnet06192006090112am/ai_oop_neuralnet.aspx

A seguir, são os principais motivos para o uso de interfaces

  1. Extensibilidade
  2. Implementação ocultando
  3. Acessando o objeto através de interfaces
  4. Acoplamento solto.

Por favor, visite isso link para saber sobre interfaces com exemplo de código para download

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top