NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
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
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2025 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI