Heroes

 Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Public Interface



Data Publicação: 21/10/2006 1:51:27
Total de visualizações: 1883

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


 

 

Livros publicados

 

         Olá pessoal, “utilizar public interface” nos projetos hoje em dia tem sido uma boa prática de programação aos desenvolvedores fascinados em orientação a objetos. Então o meu objetivo é mostrar como utilizar “interface” dentro do C#.NET com a IDE Visual Studio.NET 2005.

A interface serve apenas para gerenciar automaticamente qual a classe e método irá ser chamado.

 

Requisitos:

- Visual Studio.NET 2005

- Framework 2.0

- Linguagem C#.NET

- Aplicação do tipo WEB (ASP.NET).

 

Vamos para prática:

 

         O primeiro passo foi criar um projeto chamado PublicInterface do tipo ASP.NET. Em seguida cliquei com o botão direito e adicionei uma nova classe chamada ClasseCode.cs. Adicionei um namespace na classe. (Referência 1.1)

 

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

using maganer.code;

 

/// <summary>

/// Summary description for ClasseCode

/// </summary>

namespace maganer.code

{

    public class ClasseCode

    {

        public ClasseCode()

        {

            //

            // TODO: Add constructor logic here

            //

        }

 

        public String getDados()

        {

            return "valor";

        }

    }

}

 

Referência: 1.1

 

         Note que o possui um método público que retorna uma String, chamado getDados(). É um método simples, apenas para demonstração. O próximo passo foi criar uma outra classe chamada IDefault.cs, ou seja, uma interface. Adicionei o mesmo namespace para a interface. (Referência 1.2)

 

 

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

/// <summary>

/// Summary description for IDefault

/// </summary>

namespace maganer.code

{

    public interface IDefault

    {

      

        /// <summary>

        /// interface

        /// </summary>

        /// <returns></returns>

        String getDados();

    }

}

 

Referência: 1.2

 

Explicação:

 

         Note que a classe foi criada como public interface IDefault, ou seja, realmente é uma classe interface. Coloquei dentro da mesma o método criado anteriormente, porém sem o “public” String getDados().

 

         Depois de criado a interface, temos que herdá-la dentro da classe “ClasseCode”. “Basta colocar na assinatura da classe os dois pontos “:” e o nome da outra classe”. (Referência 1.3)

 

 

 

    public class ClasseCode : IDefault

    {

        public ClasseCode()

        {

            //

            // TODO: Add constructor logic here

            //

        }

 

        public String getDados()

        {

            return "valor";

        }

    }

Referência: 1.3

 

 

Explicação:

 

         Note a assinatura da classe: (Referência 1.4). A ClasseCode herda da interface Idefault.

 

 

public class ClasseCode : Idefault

 

Referência: 1.4

 

 

         Ainda falta criar uma classe responsável para retornar uma classe do tipo interface. Dentro dela, terá apenas um método do tipo público e estático. Cliquei com o botão direito do mouse em cima do projeto, escolhi a opção Add New Item. Adicionei uma classe chamada InterfaceManager.cs, coloquei o mesmo namespace namespace manager.code. (Referência 1.5)

 

 

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

/// <summary>

/// Summary description for InterfaceManager

/// </summary>

namespace maganer.code

{

    public class InterfaceManager

    {

        public InterfaceManager()

        {

            //

            // TODO: Add constructor logic here

            //

        }

 

        public static IDefault getInterface()

        {

            IDefault retorno = new ClasseCode();

            return retorno;

        }

    }

}

 

Referência: 1.5

 

Explicação:

 

         Analisando a assinatura do método, como falado anteriormente é público, estático, retorna uma interface do tipo IDefault, chama getInterface() e não recebe qualquer parâmetro de entrada.

         Dentro da classe, criei uma instância da ClasseCode() criada anteriormente, em seguida retornei a mesma.

 

         Criei a página “Default.aspx” cujo terá a função de instanciar a classe de interface e chamar o método passando pela interface. (Referência 1.6)

 

 

 

 

 

Default.aspx.cs

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        maganer.code.IDefault iDefault = maganer.code.InterfaceManager.getInterface();

        Response.Write(iDefault.getDados());

    }

}

 

Referência: 1.6

 

Explicação:

        

         Note que no método Page_Load coloquei o namespace da interface, chamando outro método getInterface(). Após referenciar chamei apenas o método encontrado na interface criado anteriormente. (Referência 1.7)

 

 

maganer.code.IDefault iDefault =

                maganer.code.InterfaceManager.getInterface();

Response.Write(iDefault.getDados());

 

Referência: 1.7

 

         Já que o método retorna um tipo String, coloquei para escrever na tela o resultado retornado. Executei o sistema e o resultado foi o esperado conforme programação desenvolvida. (Referência 1.8).

 

Referência: 1.8

 

         Segue todo código fonte abaixo das classes programadas:

 

Default.aspx.cs

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        maganer.code.IDefault iDefault = maganer.code.InterfaceManager.getInterface();

        Response.Write(iDefault.getDados());

    }

}

 

 

 

 

ClasseCode.cs

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

using maganer.code;

 

/// <summary>

/// Summary description for ClasseCode

/// </summary>

namespace maganer.code

{

    public class ClasseCode : IDefault

    {

        public ClasseCode()

        {

            //

            // TODO: Add constructor logic here

            //

        }

 

        public String getDados()

        {

            return "valor";

        }

    }

}

 

 

IDefault.cs

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

/// <summary>

/// Summary description for IDefault

/// </summary>

namespace maganer.code

{

    public interface IDefault

    {

      

        /// <summary>

        /// interface

        /// </summary>

        /// <returns></returns>

        String getDados();

    }

}

 

 

InterfaceManager.cs

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

/// <summary>

/// Summary description for InterfaceManager

/// </summary>

namespace maganer.code

{

    public class InterfaceManager

    {

        public InterfaceManager()

        {

            //

            // TODO: Add constructor logic here

            //

        }

 

        public static IDefault getInterface()

        {

            IDefault retorno = new ClasseCode();

            return retorno;

        }

    }

}

 

 

         Bom, fico por aqui e espero ter ajudado. Qualquer dúvida, favor entrar em contato pelo e-mail mauricio@aspneti.com.

 

Mauricio Junior

www.aspneti.com

www.mauriciojunior.org

 



Total de visualizações: 1883
voltar   comente  subir


Comentários:

Comentado por: Daniel Gianni - 24/10/2006 10:39:43
Qual a vantagem prática? posso colocar atributos à interface e assim fazê-la como um verdadeiro "template" para outras classes?
Comentado por: Mauricio Junior - 24/10/2006 20:09:43
A vantagem na prática é sempre deixar uma interface gerenciar a chamada para qualquer classe. Respondendo a sua pergunta, pode sim fazê-lo como um verdadeiro template, é uma ótima idéia. Espero ter ajudado.

Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Vídeo mostrando como validar vários formulários
Mudar de MasterPage em Tempo de Execução
Coalescing Operador C# ?? null
Vídeo - Criando um WebBrowser
TV no Celular com Windows Mobile
Escrever log de erro e warning
Criando TreeView com Visual Studio.NET 2005 (passo 1)
Desenvolvimento de Aplicativos para TV Digital
Vídeo: Windows Phone com Windows Mobile 7
Desenvolvimento de Aplicativos para TV Digital - Parte 4
Evento Java versus DotNet
Copa Microsoft de Talentos em Brasília
Limpando Cache do Brownser
Finanças para os filhos
Comando para compilação .NET
Padrões de nomenclaturas
Vídeo - iGas - Sistema de Gasolina Mobile
Integração é necessário
Armazenando Dados no ViewState Parte II
Microsoft Research Laptop Multi-Touch
Forum utilizando VS 2005 e Ajax
CRIANDO MENU DINÂMICO COM C#.NET Passo 1
Vídeos Mobile no Site da Microsoft
Validator no VS 2005
Site fora do ar - Pedido de desculpas
Innovation Days
Conecte - netBOOKS
Vídeo: Framework de dados - parte 1
Criando uma aplicação de uma maneira nova para melhor publicação
Lançamento do e-Book Dicas DotNet
Lendo Arquivo txt usando Visual Studio.NET 2005
Linha do GridView (colorindo ao passar o mouse)
Vídeo: Série Atlas.NET - Parte II
Public Interface
Vídeo - Microsoft Surface: The Power
Sobre o Autor
  [sumir] [aparecer]
 
Mauricio Junior Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org

Informaes Online
Usurios Online: 101
Artigos:  749
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC