C# -  Revisão de conceitos - Interface


Uma interface funciona como um contrato entre si e qualquer classe ou estrutura que a implementa. Isso significa que uma classe que implementa uma interface é obrigada a implementar todos os seus membros.

Uma Interface tem apenas a declaração de membro ou assinatura e, implicitamente, todos os membros de uma interface são públicos e abstratos.

Por exemplo, um uso comum de interfaces é, dentro da SOA (Service Oriented Architecture). Com SOA (WCF), um serviço é exposto através de interfaces para diferentes clientes. Tipicamente, uma interface é exposta a um grupo de clientes que tem de usar funcionalidades comum.

Vamos criar duas interfaces usando a linguagem C#. Para isso usamos a palavra-reservada interface antes do nome da mesma.

Abra o Visual Studio 2012 for windows desktop e no menu FILE clique em New Project selecionando o template Console Application e o nome C_interfaces;

Abra o arquivo Program.cs  e defina o código abaixo:

interface IAcesso
{
   void Ler();
   void Escrever();
}

interface IComprimir
{
   void Comprimir();
   void Descomprimir();
}

Definimos duas interfaces : IAcesso e IComprimir

Em cada uma delas definimos a assinatura de métodos que deverão ser implementados pela classe que herdar essas interfaces.

Vamos agora criar uma classe Documento que irá herdar ambas as interfaces e implementar os métodos definidos conforme o código a seguir:

    public class Documento : IAcesso, IComprimir
    {
        #region IAcesso
        public void Ler()
        {
            Console.WriteLine("Executando o método Ler da classe Documento para IAcesso");
        }
        public void Escrever()
        {
            Console.WriteLine("Executando o método Escrever da classe Documento para IAcesso");
        }
        #endregion // IAcesso
        #region IComprimir
        public void Comprimir()
        {
            Console.WriteLine("Executando o método Comprimir da classe Documento para IComprimir");
        }
        public void Descomprimir()
        {
            Console.WriteLine("Executando o método Descomprimir da clase Documento para IComprimir");
        }
        #endregion // IComprimir
    } 

 

Note que a classe Documento esta herdando as duas interfaces. Chamamos isso a herança de interface e , como vemos, temos nesse caso a herança múltipla.

Para concluir vamos criar instâncias da classe Documento e ver o seu funcionamento.

Para isso defina o código abaixo no método Main():

  static void Main(string[] args)
  {
            IAcesso oAcesso = new Documento();
              oAcesso.Ler();
              oAcesso.Escrever();
            Console.ReadKey();
            IComprimir oComprimir = new Documento();
              oComprimir.Comprimir();
              oComprimir.Descomprimir();
            Console.ReadKey();	
 }

Vimos assim, de uma forma simples, como criar e usar interfaces na linguagem C#.

Vejamos a seguir algumas características importantes das interfaces:

1

Uma interface não fornece herança como uma classe ou classe abstrata, ela só declara membros que uma classe de implementação precisa implementar.

2

Uma interface não pode ser instanciada mas pode ser referenciada pelo objeto da classe que a implementa. Além disso, a referência da interface funciona como objeto de referência e se comporta como o objeto.

No exemplo acima vemos esse comportamento no código:

IAcesso oAcesso = new Documento();
IComprimir oComprimir = new Documento
();

3

A interface contém somente propriedades, indexadores, métodos, delegates e assinaturas de eventos

4

Uma interface não pode conter constantes, construtores, variáveis de instância, destrutores, membros estáticos ou interfaces aninhadas.

5

Os membros de uma interface não pode ter qualquer modificador de acesso mesmo público.

6

Implicitamente, cada membro de uma interface é público e abstrato. Além disso, você não tem permissão para especificar os membros de uma interface pública e abstratas ou virtuais.

7

Uma interface pode ser herdada a partir de uma ou mais interfaces.

8

Uma interface pode estender outra interface.

9

Uma classe ou estrutura pode implementar mais de uma interface.

10

Uma classe que implementa uma interface pode marcar qualquer método da interface como virtual e este método pode ser sobrescrito pelas classes derivadas.

11

Uma classe ao implementar múltiplas interfaces pode vir a ter conflitos entre as assinaturas dos membros. Uma forma de resolver isso é implementar explicitamente um membro da interface. Exemplo:

    public class Documento : IAcesso, IComprimir
    {
        #region IAcesso
        public void IAcesso.Ler()
        {
            Console.WriteLine("Executando o método Ler da classe Documento para IAcesso");
        }
        public void IAcesso.Escrever()
        {
            Console.WriteLine("Executando o método Escrever da classe Documento para IAcesso");
        }
        #endregion // IAcesso
        #region IComprimir
        public void Comprimir()
        {
            Console.WriteLine("Executando o método Comprimir da classe Documento para IComprimir");
        }
        public void Descomprimir()
        {
            Console.WriteLine("Executando o método Descomprimir da classe Documento para IComprimir");
        }
        #endregion // IComprimir
    } 

Diretrizes para criação de interfaces

1

Mantenha suas interfaces com foco sobre o problema que você está tentando resolver e mantenha as tarefas relacionadas(métodos) em uma interface. Interfaces que têm várias tarefas não relacionadas tendem a ser muito difícil de implementar em uma classe. Uma interface que contenha tarefas não relacionadas deve ser desmembrada em outra interface.

2

Certifique-se de que a sua interface não contenha muitos métodos. Definir muitos métodos torna difícil a implementação da interface.

3

Não faça as interfaces para uma funcionalidade específica. Uma interface deve definir a funcionalidade comum que pode ser implementada pelas classes de diferentes módulos ou subsistemas.

Quando usar interfaces

1

Desvantagens das Interfaces

1

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Veja os Destaques e novidades do SUPER DVD Visual Basic  (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira...

Quer aprender C# ??

Chegou o Super DVD C#  com exclusivo material de suporte e vídeo aulas com curso básico sobre C#.

Veja também os Cursos com vídeo aulas e projetos exemplos:

Referências:


José Carlos Macoratti