Usuário com melhor resposta
Polimorfismo com classe base

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
- Editado Leandro Tavares sábado, 6 de julho de 2013 22:08
- Movido William John Adam Trindade domingo, 7 de julho de 2013 18:12 Forum Apropriado
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...
- Marcado como Resposta Leandro Tavares domingo, 7 de julho de 2013 19:05
-
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
;)
- Sugerido como Resposta Kelvin Rodrigues Ferreira domingo, 7 de julho de 2013 00:08
- Marcado como Resposta Leandro Tavares domingo, 7 de julho de 2013 19:05
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...
- Marcado como Resposta Leandro Tavares domingo, 7 de julho de 2013 19:05
-
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
;)
- Sugerido como Resposta Kelvin Rodrigues Ferreira domingo, 7 de julho de 2013 00:08
- Marcado como Resposta Leandro Tavares domingo, 7 de julho de 2013 19:05
-
-
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.
-