Blog referente a aula do dia 26/05/2008
Padrão GRASP Polimorfismo
Ao falarmos de padrão Polimorfismo , ele já nos aparece como uma solução para um determinado problema.
Como tratar alternativas baseadas no tipo ? como criar plugins ??
Solução: Quando alternativas ou comportamentos relacionados variam com o tipo, é só atribuir responsabilidades aos tipos usando operações polimórficas.
Um bom exemplo:
Ao meu ver , na programação orientada a objetos , o polimorfismo permite que classes mais abstratas representem o mesmo comportamento de classes concretas que referenciam , sendo assim um método pode apresentar várias formas.
O polimorfismo de torna muito importante pois permite que a semântica de uma interface seja efetivamente separada da implementação que a representa.
Os benefícios do polimorfismo , são muitos , mas o principal é a sua clareza e facilidade de manutenção do código.
Exemplo:
public void mostrarCalculo (int operacao, double x, double y)
{ System.out.print("O resultado é: "); switch (operacao) { case SOMA: System.out.print(""+(x+y)); break; case SUBTRACAO: System.out.print(""+(x-y)); break; //... outras operacoes default: throw new UnsupportedOperationException() }}
Além do código ser maior e mais difícil de ler, essa implementação tem outros problemas. Provavelmente esse não será o único método a utilizar operações matemáticas e, portanto, pode-se esperar não um, mas vários switchs como esse pelo código. O que acontece, então, se uma nova operação for adicionada ao sistema? Será necessário que todos os switchs sejam encontrados e substituídos. Com o polimorfismo, a modificação restringiria-se apenas a criação de uma nova classe.
Bom fds a todos !!!
Até o próximo blog.
Padrão GRASP Polimorfismo
Ao falarmos de padrão Polimorfismo , ele já nos aparece como uma solução para um determinado problema.
Como tratar alternativas baseadas no tipo ? como criar plugins ??
Solução: Quando alternativas ou comportamentos relacionados variam com o tipo, é só atribuir responsabilidades aos tipos usando operações polimórficas.
Um bom exemplo:
Ao meu ver , na programação orientada a objetos , o polimorfismo permite que classes mais abstratas representem o mesmo comportamento de classes concretas que referenciam , sendo assim um método pode apresentar várias formas.
O polimorfismo de torna muito importante pois permite que a semântica de uma interface seja efetivamente separada da implementação que a representa.
Os benefícios do polimorfismo , são muitos , mas o principal é a sua clareza e facilidade de manutenção do código.
Exemplo:
public void mostrarCalculo (int operacao, double x, double y)
{ System.out.print("O resultado é: "); switch (operacao) { case SOMA: System.out.print(""+(x+y)); break; case SUBTRACAO: System.out.print(""+(x-y)); break; //... outras operacoes default: throw new UnsupportedOperationException() }}
Além do código ser maior e mais difícil de ler, essa implementação tem outros problemas. Provavelmente esse não será o único método a utilizar operações matemáticas e, portanto, pode-se esperar não um, mas vários switchs como esse pelo código. O que acontece, então, se uma nova operação for adicionada ao sistema? Será necessário que todos os switchs sejam encontrados e substituídos. Com o polimorfismo, a modificação restringiria-se apenas a criação de uma nova classe.
Bom fds a todos !!!
Até o próximo blog.
BIBLIOGRAFIA:
UTILIZANDO UML E PADRÕES - Craig Larman