none
Programar para Interface. RRS feed

  • Pergunta

  • Olaa,

     

              Eu vi em alguns blogs à afirmação de que é importante programar para a Interface. Mas o que justifica tal afirmação ?

     

    Desde Já, Agradeço.

    quarta-feira, 7 de setembro de 2011 21:16

Respostas

  • iste o link que pus na minha resposta (se calhar não era muito visível): http://msdn.microsoft.com/pt-br/library/ms173156.aspx

    Uma interface funciona como um contrato. define as propriedades e operações sobre um determinado objecto.

    Muitas vezes a utilização de uma classe base oferece as mesmas funcionalidades, mas uma classe apenas pode ter uma classe base podendo, no entanto implementar mais do que uma interface.

    Quando se programa contra interfaces, fica mais fácil substituír a implementação concreta dessas interfaces. Um exemplo disto são os providers usados em ASP.NET (embora estes sejam classes base). No tua aplicação usas um MembershipProvider abstracto que cria instâncias de IPrincipal/IIdentity. Assim podes configurar o teu site para usar Windows Authentication ou base de dados de utilizadores sem teres de alterar o teu código.

    A maioria das classes da plataforma .NET implementam interfaces, como por exemplo esta:

    public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
    

    O facto de eu ter uma List<string> não quer dizer que todos os métodos em que eu a uso a veja como tal. Se eu apenas pretendo enumerar de forma não tipada os seus elementos, basta que a encare como IEnumerable. Assim o meu método servirá para qualquer colecção.

    O truque é encarar os objectos com o mínimo de funcionalidades possível para que o código seja mais portável.


    Paulo Morgado
    quarta-feira, 7 de setembro de 2011 23:38

Todas as Respostas

  • Podes dar um exemplo de onde isso é dito. Está assim um pouco sem context. Interface com o utilizador. Interface interface?
    Paulo Morgado
    quarta-feira, 7 de setembro de 2011 21:35
  • quarta-feira, 7 de setembro de 2011 23:14
  • iste o link que pus na minha resposta (se calhar não era muito visível): http://msdn.microsoft.com/pt-br/library/ms173156.aspx

    Uma interface funciona como um contrato. define as propriedades e operações sobre um determinado objecto.

    Muitas vezes a utilização de uma classe base oferece as mesmas funcionalidades, mas uma classe apenas pode ter uma classe base podendo, no entanto implementar mais do que uma interface.

    Quando se programa contra interfaces, fica mais fácil substituír a implementação concreta dessas interfaces. Um exemplo disto são os providers usados em ASP.NET (embora estes sejam classes base). No tua aplicação usas um MembershipProvider abstracto que cria instâncias de IPrincipal/IIdentity. Assim podes configurar o teu site para usar Windows Authentication ou base de dados de utilizadores sem teres de alterar o teu código.

    A maioria das classes da plataforma .NET implementam interfaces, como por exemplo esta:

    public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
    

    O facto de eu ter uma List<string> não quer dizer que todos os métodos em que eu a uso a veja como tal. Se eu apenas pretendo enumerar de forma não tipada os seus elementos, basta que a encare como IEnumerable. Assim o meu método servirá para qualquer colecção.

    O truque é encarar os objectos com o mínimo de funcionalidades possível para que o código seja mais portável.


    Paulo Morgado
    quarta-feira, 7 de setembro de 2011 23:38
  • Prezado Paulo Morgado,

     

                  Minha dúvida foi sanada, obrigado pela atenção.

     

    Desde Já, Agradeço.

    quarta-feira, 14 de setembro de 2011 17:19