none
Dúvida sobre recebimento de instância de classe em um elemento do tipo Interface. RRS feed

  • Pergunta

  • Olaa,

                    Estava lendo sobre Injeção de Dependência e me deparei com uma situação que me chamou atenção, segue o código abaixo para uma melhor visualização:

    - Código 01:

    public interface IGasolina
    {
        bool ObterQuantidadeGasolina();
    }
    

    - Código 02:

    public class Gasolina : IGasolina
    {
         public bool ObterQuantidadeGasolina()
         {
             // consulta se a quantidade de gasolina é suficiente para realizar o voo
             return true; 
         }
    }

    - Código 03:

    using System; namespace DevBrasil { public class Program { static void Main(string[] args) {

    // 1) DÚVIDA: // COMO PODE "iGasolina" receber o objeto do tipo Gasolina ? IGasolina iGasolina = new Gasolina();

    // Gasolina é injetada no PainelVoo via interface IPainelVoo iPainelVoo = new PainelVoo(iGasolina); // PainelVoo é injetado no Comandante via interface Comandante comandante = new Comandante(iPainelVoo); comandante.LevantarVoo(); } } }

    O Código completo se encontra no link : http://leandrorodriguess.net/post/2012/02/16/Injecao-de-Dependencia.aspx

    Conforme mostra o código acima, como "iGasolina" que é do tipo Interface  pode receber um objeto do tipo Gasolina ? Qual a justificativa técnica para a ocorrência de tal fato ?

    Desde Já, Agradeço.


    • Editado _dev sexta-feira, 20 de abril de 2012 19:27
    sexta-feira, 20 de abril de 2012 19:26

Respostas

Todas as Respostas

  • Nao se o que voce quer na tua interface tesn de criar parametro

      public interface DataAccessLayer

    {

     void CreateParameters(int paramsCount);

    }

    depois uso assim numa outra clASS:

     public void CreateParameters(int paramsCount)
            {
                idbParameters = new IDbDataParameter[paramsCount];
                idbParameters = DBManagerFactory.GetParameters(this.ProviderType, paramsCount);
            }

    este e so um exemplo.


    Se o amor fosse pecado, quem seria INOCENTE?

    sexta-feira, 20 de abril de 2012 19:46
  • public class Gasolina : IGasolina

    A classe Gasolina implementa a interface IGasolina, logo qualquer objeto da classe Gasolina pode ser acessado através da interface IGasolina...

    Recomendação de leitura:

    Head First Object-Oriented Analysis and Design
    http://www.amazon.com/Head-First-Object-Oriented-Analysis-Design/dp/0596008678/


    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    • Marcado como Resposta _dev sábado, 21 de abril de 2012 11:40
    sexta-feira, 20 de abril de 2012 21:00
    Moderador
  • Prezado Caio Proiete,

                                   Era justamente essa minha dúvida, sua resposta justamente tocou no ponto exato.Minha dúvida foi sanada.Muito obrigado pela atenção e tambêm pela leitura recomendade.

    Obrigado a todos os outros que deram atenção ao post.

    Grande abraço a todos.


    • Editado _dev sábado, 21 de abril de 2012 11:41
    sábado, 21 de abril de 2012 11:40