none
Polimorfismo com classe base RRS feed

  • Pergunta

  • E ai pessoal, blz?

    Tenho a seguinte dúvida:

    Possuo, por exemplo, uma classe abstrata MinhaClasseAbstrata. Ela possui 1 propriedade e 2 métodos:

    public string Nome { get; set; }
    
    public void caminhar{ }
    
    public abstract void voar();


    Herdo ela em uma classe MinhaClasseHerdada, onde mantenho os 3 membros, alterando a forma de execução do método voar para escrever qualquer coisa na tela. Também adicionei um método extra:

    public string Nome { get; set; }
    
    public void caminhar{ }
    
    public override void voar();
    
    public void correr{ }


    Dada essa situação eu posso, baseado no princípio SRP (Single Responsibility Principle ), criar o seguinte:

    MinhaClasseAbstrata objeto = new MinhaClasseHerdada { Name = "Qualquer coisa" }

    Peguei esse exemplo de um livro e adaptei aqui

    O que eu desejo saber é: qual a vantagem de utilizar esse tipo herdado como se fosse seu tipo base?

    O primeiro cenário considerei foi validar os objetos pelo tipo base somente para realizar alguma tarefa, e não utilizar e explicitamente particularidades de MinhaClasseHerdada. Existe alguma outra vantagem em que utilizar esse pattern Seja realmente benéfico?

    Desde já agradeço

    sábado, 6 de julho de 2013 22:06

Respostas

  • Olá vou tentar explicar, pense no seguinte cenario você possui sua string de conexao aqui

    ConectaBD
    {
       string conexao = ConnectionStrings;
    
    //seu metodo de conexao
    }
    
    //voce cria dez classes voce faz o seguinte
    
    Class Tabela1 : ConectaBD
    {
    
    }
    
    Class Tabela2 : ConectaBD
    {
    
    }
    //voce nao precisa de fazer todos os passos somente herda sua string isso e basico mas e um comeco

    Se for util marque...

    sábado, 6 de julho de 2013 22:55
  • Leandro blz?

    O exemplo do Daniel é um bom exemplo pra demonstrar uma possivel utilidade da utilização de herança/poliformismo.

    Voce também pode pensar, de uma forma teórica, no exemplo da representação de um carro:

    A interface dele (sua classe base) teria as funções comuns entre todos os carros. Como acelerar, freiar, passar marcha.

    Já as proprieadades como COR, numero de portas,  e direção hidraulica seria uma classe derivada (implementando a Interface CARRO), por que uns carros tem outros não. 

    Ao instanciar este objetos não tem diferença técnica utilizando a classe base ou não. A diferença que isso proporciona é a interpretação do codigo comparado com a vida real. Isso veio com o padrão de orientação a objetos, com ele podemos codificar de tal forma que fique bem parecido com os objetos fisicos que estamos tratando.

    Espero que tenha ajudado man

    ;)

    domingo, 7 de julho de 2013 00:06

Todas as Respostas

  • Olá vou tentar explicar, pense no seguinte cenario você possui sua string de conexao aqui

    ConectaBD
    {
       string conexao = ConnectionStrings;
    
    //seu metodo de conexao
    }
    
    //voce cria dez classes voce faz o seguinte
    
    Class Tabela1 : ConectaBD
    {
    
    }
    
    Class Tabela2 : ConectaBD
    {
    
    }
    //voce nao precisa de fazer todos os passos somente herda sua string isso e basico mas e um comeco

    Se for util marque...

    sábado, 6 de julho de 2013 22:55
  • Leandro blz?

    O exemplo do Daniel é um bom exemplo pra demonstrar uma possivel utilidade da utilização de herança/poliformismo.

    Voce também pode pensar, de uma forma teórica, no exemplo da representação de um carro:

    A interface dele (sua classe base) teria as funções comuns entre todos os carros. Como acelerar, freiar, passar marcha.

    Já as proprieadades como COR, numero de portas,  e direção hidraulica seria uma classe derivada (implementando a Interface CARRO), por que uns carros tem outros não. 

    Ao instanciar este objetos não tem diferença técnica utilizando a classe base ou não. A diferença que isso proporciona é a interpretação do codigo comparado com a vida real. Isso veio com o padrão de orientação a objetos, com ele podemos codificar de tal forma que fique bem parecido com os objetos fisicos que estamos tratando.

    Espero que tenha ajudado man

    ;)

    domingo, 7 de julho de 2013 00:06
  • Gostei dos exemplos. Dá pra enxergar a ideia num contexto maior.

    Agora to nas interfaces e ta me ajudando a entender melhor.

    Valeu pessoal, muito grato!

    domingo, 7 de julho de 2013 19:07
  • O conceito do polimorfismo se baseia em um relacionamento entre a super classe (classe pai) e suas sub classes (classes filhas).

    Ao chamar um método como por exemplo: falar  através do polimorfismo o método de uma das classes envolvidas será chamado, e executado.


    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    domingo, 7 de julho de 2013 22:35
  • Uma classe abstrata serve apenas para ser herdada, não gera objeto em memória, se você atribuir um objeto a uma classe abstrata um erro será gerado durante a compilação do código.

    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    sexta-feira, 9 de agosto de 2013 12:06