PROGRAMANDO EM ASP.NET

 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: 10/4/2008 10:23:09
Total de visualizações: 1900

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras



    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;
        }
    }
}



Total de visualizações: 1900
voltar   comente  subir


Comentários:

Comentado por: Felipe Girão - 17/7/2008 0:00:00
Gostei muito do site e do Artigo, mas acredito que deveria ser melhor trabalhado a usabilidade. Não vejo vantagens em desabilitar o botão direito do mouse, ou a possibilidade de se poder copiar o código, pelo contrário, só vejo desvantagens.

Até essa caixa de texto que estou utilizando para digitar meu comentário tem problemas de usabilidade, estando desabilitado alguns atalhos, como: Ctrl + A

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

Novidades na maneira de colher informações do medidor de energia da sua casa
Sistema que faz busca no google
Você tem boa postura no trabalho?
Usando themes ASP.NET 2.0 (Parte 1)
Event Log Parte II - Visual Studio.NET 2005
Visual SourceSafe 2 / 3 parte
Windows Phone 7 Series Developer Training Kit
Detectando ENTER
Dll Ajax
Criando Teclas de Atalho no Windows Form
SQL Dinâmico Compilado
Criando Alias no Pacote
ModalDialogExtender
MSDN Media Center - download de vídeos
Innovation Days
Java J2EE – Primeiro Passo
Deixe a sua webcan funcionar como instrumento de segurança
Retirar Tag HTML dos campos utilizando expressão
Usando Themes ASP.NET 2.0 (Parte 2)
Loja Apple (a2you.com.br) feita em .NET (Microsoft)
Sistema de Controle de Gasolina Mobile - iGas
Novo Hotmail no ar
Trabalhando com o componente Accordion
Como criptografar a string de conexão no Web.Config.
Trabalhando com Cookie (parte II)
Search do Windows Live em Seu Site
Gerando word com Visual Studio.NET 2005
User Control Windows executando no Internet Explorer (parte 1 de 2)
Vídeo: Aprendendo a trabalhar com o Office
Table ExoPC Slate
Teclas de atalho - Visual Studio .NET 2005
Vídeos Online Gratuitos
Microsoft Recite
WebServices - Desenvolvimento Parte 2
IsAlpha
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: 102
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