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.org, Site pessoal www.mauriciojunior.org
|
|