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

www.aspneti.com

www.mauriciojunior.org