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 |
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();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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#