none
Utilidade de Interfaces RRS feed

  • Pergunta

  • Boa tarde,

    Pelo que vi as interfaces são apenas para declarar os metodos, por exemplo,

    metodo1 String (paramentro 1, paramentro 2);

    metodo2 int (paramentro 1, paramentro 2);

    As classes que herdam de uma interface tem que implementar todos os metodos dela, e ela não pode ser instaciada, como uma classe statica. O que não entendi foi qual a utilidade disso. alguem pode me dar um exemplo de uso e o motivo de se ter usado a interface? 

    quarta-feira, 17 de abril de 2013 17:55

Respostas

  • Ela é útil para abstração e herança.

    Digamos que vc cria uma classe (uma dll) mas nao quer que outros usuários vejam o código ou o modifiquem (é o caso do IList, por exemplo). Você pode fornecer uma interface para que eles herdem essa classe adicionando outras propriedades e métodos mas sem alterar o funcionamento básico.

    Um dos 5 princípios de OOP - SOLID (o D de "Interface segregation principle") diz que vc sempre deve herdar a partir de uma interface (jamais de uma classe).

    Veja se vc consegue entender este exemplo:

    http://dyegocomy.com/blog/dependency-inversion-principle/

    Isso só fica claro quando vc começa entender o que realmente significa abstração, lembrando que orientação à objetos é baseada em 3 pilares: Abstração, Herança e Polimorfismo.

    Att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    quarta-feira, 17 de abril de 2013 20:57
    Moderador
  • Interface é coisa linda de Deus...

    Ela representa um contrato e todos os que a implementam são obrigados a se comportar da mesma maneira. É uma garantia que todos terão o mesmo método, independente do que ele faz em cada classe.

    Imagina um jogo de RPG... existem varios tipos de personagem, todos eles Atacam e Defendem mas os ataques e defesas nunca são iguais, cada um faz isso de uma maneira diferente.

    Você cria uma interface "IPersonagem"

    Esta interface tem a assinatura dos metodoS Atacar e Defender.

    Isso garante que todos os personagem obrigatoriamente tenha os dois metodos.

    Logo, o Cavaleiro pode atacar um personagem dando espadada, o mago pode atacar com magia...

    O importante é que os dois ataquem e os dois defendam.

    Eles seguem o contrato e por isso tem o mesmo comportamento.

    Espero ter ajudado.

    Att
    Tiago

    • Marcado como Resposta Alan F. Almeida quinta-feira, 18 de abril de 2013 19:51
    quinta-feira, 18 de abril de 2013 02:54

Todas as Respostas

  • Além de padronizar o comportamento da sua classe, é muito útil nas heranças multiplas.

    Nesse link você encontra mais informações sobre interface. 


    quarta-feira, 17 de abril de 2013 19:46
  • Veja este artigo para ver se te ajuda.

    http://www.linhadecodigo.com.br/artigo/2999/entendendo-interfaces-com-csharp.aspx

    Eu nao encontrei uma maneira mais simples que o autor do artigo pra excplicar interfaces.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    quarta-feira, 17 de abril de 2013 20:04
    Moderador
  • Quando você diz heranças múltiplas, você quer dizer que com a interface eu posso fase com que minha classe herde de uma interface e de outra classe por exemplo?
    quarta-feira, 17 de abril de 2013 20:09
  • Willian obrigado pelo link, mas eu ja tinha lido esse artigo. 

    O que é uma interface e como criar uma eu entendi o que não entendo é o que me levaria a utilizar uma, quais seriam os problemas no desenvolvimento de um software que eu poderia resolver com uma interface.

    quarta-feira, 17 de abril de 2013 20:16
  • Ela é útil para abstração e herança.

    Digamos que vc cria uma classe (uma dll) mas nao quer que outros usuários vejam o código ou o modifiquem (é o caso do IList, por exemplo). Você pode fornecer uma interface para que eles herdem essa classe adicionando outras propriedades e métodos mas sem alterar o funcionamento básico.

    Um dos 5 princípios de OOP - SOLID (o D de "Interface segregation principle") diz que vc sempre deve herdar a partir de uma interface (jamais de uma classe).

    Veja se vc consegue entender este exemplo:

    http://dyegocomy.com/blog/dependency-inversion-principle/

    Isso só fica claro quando vc começa entender o que realmente significa abstração, lembrando que orientação à objetos é baseada em 3 pilares: Abstração, Herança e Polimorfismo.

    Att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    quarta-feira, 17 de abril de 2013 20:57
    Moderador
  • Interface é coisa linda de Deus...

    Ela representa um contrato e todos os que a implementam são obrigados a se comportar da mesma maneira. É uma garantia que todos terão o mesmo método, independente do que ele faz em cada classe.

    Imagina um jogo de RPG... existem varios tipos de personagem, todos eles Atacam e Defendem mas os ataques e defesas nunca são iguais, cada um faz isso de uma maneira diferente.

    Você cria uma interface "IPersonagem"

    Esta interface tem a assinatura dos metodoS Atacar e Defender.

    Isso garante que todos os personagem obrigatoriamente tenha os dois metodos.

    Logo, o Cavaleiro pode atacar um personagem dando espadada, o mago pode atacar com magia...

    O importante é que os dois ataquem e os dois defendam.

    Eles seguem o contrato e por isso tem o mesmo comportamento.

    Espero ter ajudado.

    Att
    Tiago

    • Marcado como Resposta Alan F. Almeida quinta-feira, 18 de abril de 2013 19:51
    quinta-feira, 18 de abril de 2013 02:54
  • Willian,

    Não conhecia esse SOLID, vou pesquisar melhor sobre isso, ler seu link e melhorar meus conceitos de abstração. Obrigado.

    Tiago, 

    Eu entendi seu exemplo sim obrigado, se eu tenho um sistema onde eu tenho os objetos Cliente, funcionario, produto, eu posso criar uma interface com os métodos cadastrar(), pesquisar(), e fazer com que todos herdem dela pra que eu garanta que esse obj terão esses métodos. 

    quinta-feira, 18 de abril de 2013 11:35