Busca online em todo site:
NETITC

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




Título do Artigo

Public Interface


Data Publicação: 10/4/2008 10:23:09
Total de visualizações: 1397

comente
 



    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: 1397
voltar   comente  subir

Autor:


Por: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


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 ESTAR LOGADO

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

Deixando o rodapé fixo
Web abrindo aplicações locais
Sistema ASP 3.0 utilizando 3 camadas – Parte 2
Desenvolvendo para iPhone com ASP.NET
Desenvolvimento de Aplicativos para TV Digital - Parte 4
Forum utilizando VS 2005 e Ajax
SELECT INSERT
Framework SkyMenu
Criando Splash - Com Efeito
TreeView usando Banco de Dados
UPLOAD – Enviando imagem pela Internet
101 Exemplos de Linq
II Encontro - Um Sucesso!!! (em Brasília)
Criptografando Senha
Sistema de Login em ASP – Parte VII (Utilizando três camadas)
Você tem boa postura no trabalho?
Importação e Comunicação entre Sistemas
Que ironia do destino
E-mail Carta de Amor - Vírus
URL Indexável – Reescrever URL de uma forma amigável
Sistema de Login em ASP – Parte V
Copiando Script
Nova promoção hoje e amanhã para usuários da comunidade aspneti.com
Ophone The Microsoft - Vídeo
Microsoft lança seu próprio QRCode
Vírus - Full video Pamela Anderson
Aspirador de pó inteligente
Novo Firefox 3.0 - o chamado Minefield
Table ExoPC Slate
VSTS 2008
O vírus do curriculum
Sistema de Catalogar Livros
Insistência com Vírus por E-mail
Padrão de Codificação
Internet Explorer 9

Publicidade:

[sumir] [aparecer]
LAYERDEV




Informaes Online:

Usurios Online: 792
Artigos:  663
Vdeos:  47
PodCast's:  31
Frum:  3098
Empregos:  1226
Usurios Cadastrados: 5794

Categoria de Artigos

Vdeos

Enquete - D sua opinio

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 382 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC