NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosNet : Usando_public_interface_001
Quer receber novidades e e-books gratuitos?

Usando public interface

 

Visual Studio .NET 2008

Olá pessoal, quero mostrar algumas coisas importantes no meio da programação. Hoje ficou muito comum falar de “interface” pra cá, “interface” pra lá. Mas pra que serve essa coisa de “interface” na programação?


            Bom, nesse artigo vou explicar algumas coisas e mostrar alguns códigos de interface usando o framework da Microsoft.

Referência:

Ferramenta Visual Studio.NET

Linguagem C#.NET

Framework 3.5 / 2.0 / 1.x

A interface é geralmente tratada como uma camada de abstração, ou seja, uma cama acima que sabe identificar qual a melhor forma de acessar a fonte de dados, método ou função. Um exemplo básico disso é: imagina criar uma interface que sabe qual banco de dados acessar; oracle, sql server, mysql, access ou outros.

 

Você só manda o comando e a interface detecta qual banco de dados está na sua aplicação. O comando “select * from tabela” na interface; pega o dado para a camada de dados correta. Criei primeiro uma classe helper com o método principal. (Referência 1.1)

public DataSet ExecutaDataSetParameter(IDbCommand sqlCommand)
                        {
                                    try
                                    {
                                               base.OpenConnection();
                                               sqlCommand.Connection = sqlConnection;

                                               System.Data.IDbDataAdapter dataAdapter = new System.Data.SqlClient.SqlDataAdapter();
                                               dataAdapter.SelectCommand = sqlCommand;
                                               DataSet dtSet = new DataSet();
                                               dataAdapter.Fill(dtSet);
                                               return dtSet;
                                    }
                                    catch(SqlException e)
                                    {
                                               throw new NotImplementedException(e.Message);

                                    }
                                    finally
                                    {
                                               base.CloseConnection();
                                    }
                        }

Referência 1.1

O método executa um dado e retorna um objeto do tipo dataset. Recebe como parâmetro de entrada chamado IDbCommand, uma interface da classe Command. No decorrer do método utilizo sempre a interface de métodos, o DataAdapter por exemplo possui uma interface chamada IDbDataAdapter que recebe um objeto do tipo SqlDataAdapter().

Essa helper é apenas para o banco de dados SQL Server. (Referência 1.2)

Referência 1.2

Note na imagem que tenho uma HelperSQL.cs, tem todos os métodos específicos para o banco de dados SQL Server. O próximo passo é gerar um helper para o Oracle. (Referência 1.3)

namespace Bancoob.Data
{
    public class HelperOracle : IDTec
    {
        public DataSet ExecutaDataSetParameter(IDbCommand sqlCommand)
        {
            try
            {
                System.Data.IDbDataAdapter dataAdapter = new System.Data.Odbc.OdbcDataAdapter();
                dataAdapter.SelectCommand = sqlCommand;
                DataSet dtSet = new DataSet();
                dataAdapter.Fill(dtSet);
                return dtSet;
            }
            catch (OdbcException e)
            {
                throw new NotImplementedException(e.Message);

            }
        }
    }
}

Referência 1.3

Nesta classe HelperOracle.cs possui um mesmo método para um outro banco de dados, Oracle por exemplo. Para acessar o banco, o comando ODBC é importante, em vez de fazer outro método na helper SQL, coloco na helper Oracle. Veja a mudança no System.Data.OdbcDataAdapter() , a Exception também é do tipo Odbc. (Referência 1.4)

Referência 1.4

O próximo passo é gerar uma interface que saiba qual classe Helper acessar em determinados momentos. Uma hora na HelperSQL e outra hora no HelperOracle. Geralmente a interface possui apenas o cabeçalho do método, por exemplo: note que na referência 1.3 e 1.1 possui todo o método que recebe um comando e retorno o objeto do tipo DataSet; dessa forma, na interface fica apenas o cabeçalho que por sinal um é igual ao outro. (Referência 1.4)

public DataSet ExecutaDataSetParameter(IDbCommand sqlCommand)

Referência 1.4

No caso de ter outra helper para acesso a outro banco como o access, terá a mesma assinatura e no seu interior irá tratar direto com o banco e interfaces do access. O passo seguinte é mostrar a interface.


            Na classe da interface não terá public class e sim public interface. (Referência 1.5)

public interface IDTec

Referência 1.5

Terá apenas um public interface e o nome que achar melhor. Veja mais abaixo a chamada do método criado nas referências acima. (Referência 1.6)

public interface IDTec {
                        DataSet ExecutaDataSetParameter(IDbCommand sqlCommand);
                   }

Referência 1.6

A interface possui apenas a chamada com o retorno do tipo do método, é o mesmo tipo. Com isso a interface escolhe qual herper utilizar. Você pode colocar um tipo na sua classe que chama para definir o helper de forma mais dinâmica; pode ser de acordo com o arquivo de configuração ou como uma propriedade com get e set.


            No sistema, basta chamar a interface, ou seja, public interface IDTec que o resto é definido dinamicamente.

Bom eu fico por aqui, qualquer dúvida pode entrar em contato. Espero ter ajudado.

Mauricio Junior

www.mauriciojunior.org

blog.mauriciojunior.org

www.aspneti.com

1 Visão geral do .NET Framework e do CLR
1 Comunicação .NET e VB 6.0 (com Visual Studio.NET 2005) - Parte I
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 1
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 2
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 3
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 4
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 5
1 VB: Menu Principal, Menu PopUp e Arquivos Texto
Visual Studio
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control
1 Visual Web Developer - 2005 - Beta 2 - Introdução
1 ASP.NET 2.0 - Conhecendo o GridView
1 ASP.NET 2.0 - Utilizando o GridView e DetailsView
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control - Parte 2
1 ASP.NET 2.0 - Utilizando o XmlDataSource
1 Envio de e-mail através de formulário web
1 ADO.NET 2.0 - Conhecendo as novidades parte 1
1 Série Visual Source Safe - Parte 1
1 Série Visual Source Safe - Parte 3
1 URL Indexável – Reescrever URL de uma forma amigável
1 Permissão de Página Utilizando Web.Config
1 Usando public interface
1 Trabalhando com o componente TabContainer
1 Adicionando Menu no DataGridView
ASP.NET
1 Conhecendo o ambiente integrado do WebMatrix
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte I
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte II
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte III
1 Acessando um banco de dados facilmente com ADO.Net e Datagrid
1 Desvendando os segredos do Dataset- Parte I
1 Construindo um Sistema de Publicação de Notícias – Parte 1
1 Construindo um Sistema de Publicação de Notícias – Parte 2
1 Construindo um Sistema de Publicação de Notícias – Parte 3
1 Construindo um Sistema de Publicação de Notícias – Parte 4
1 Construindo um Sistema de Publicação de Notícias – Parte 5
1 Login com Perfil de Acesso
1 Guest Book com XML - Parte 1
1 Guest Book com XML - Parte 2
1 Agendando Datas no Calendário com XML
1 Filtrando e Organizando Dados com o Controle DataView
1 Lista de Dados com Subitens – Parte 1
1 Lista de Dados com Subitens – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 1
1 Trabalhando com Arquivos e Diretórios – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 3
1 Sistema de Enquetes baseado em WebServices – Parte 1
1 Sistema de Enquetes baseado em WebServices – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 3
1 Upload de Arquivos
1 Crie seu próprio código de verificação
1 Login e Senha com FormsAuthentication – Parte 1
1 Login e Senha com FormsAuthentication – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 4
1 Sistema de Enquetes baseado em WebServices – Parte 5
1 Sistema de Enquetes baseado em WebServices – Parte 6