Public Interface
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
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.