Public Interface
Descrição do artigo publicado no aspneti.com, cada artigo com seu resumo
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;
}
}
}
Subscribe ecode10.com
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.
Log In